Кажущаяся несвязанной ошибка регрессии при использовании Systemfit в R
Я хотел бы использовать, по-видимому, несвязанные регрессии для неоднократной оценки одного уравнения по сечениям, но всегда получаю ошибку "Ошибка в LU.dgC(a): сбой cs_lu(A): почти единичный A (или нехватка памяти)" ".
Причина в моих данных / настройках, где каждое уравнение оценивает разницу между двумя поперечными сечениями (см. Пример ниже).
Воспроизводимый пример, чтобы прояснить это: стандарт SUR работает (1), затем я моделирую свою настройку, которая сводится к подходу diff-in-diff (2), на котором оценка уравнений работает отдельно (3), но совместно используя SUR (4) дает мне ошибку.
Есть идеи, как это решить? Или о других простых в реализации способах оценить это одновременно?
1. SUR - Стандартная настройка ==> Нет ошибок
library ("systemfit")
library( "plm" )
library("broom")
library("data.table")
data( "GrunfeldGreene" )
GGPanel <- pdata.frame( GrunfeldGreene, c( "firm", "year" ) )
formulaGrunfeld <- invest ~ value + capital
greeneSur <- systemfit( formulaGrunfeld, "SUR",data = GGPanel,methodResidCov = "noDfCor" )
summary(greeneSur)
2. Адаптация набора данных к моим настройкам
data( "GrunfeldGreene" )
setDT(GrunfeldGreene)
GrunfeldGreene[, dummy_time := ifelse(year>1945, 1, 0),]
GrunfeldGreene[, dummy_group := ifelse(firm=="General Motors"|firm=="Chrysler", 1, 0),]
GrunfeldGreene <- subset(GrunfeldGreene, firm!="US Steel")
GrunfeldGreene[, id := ifelse(firm=="General Motors" | firm=="General Electric", 1, 0),]
GrunfeldGreene[, id := ifelse(firm=="Chrysler" | firm=="Westinghouse", 2, id),]
GGPanel <- pdata.frame( GrunfeldGreene, c( "id", "year" ) )
3. Отдельные уравнения на моей настройке ==> Нет ошибок
GGPanel_id1 <- subset(GGPanel, id==1)
reg <- lm(invest ~ value + capital + dummy_time + dummy_group + dummy_time*dummy_group, data=GGPanel_id1)
summary(reg)
GGPanel_id2 <- subset(GGPanel, id==2)
reg <- lm(invest ~ value + capital + dummy_time + dummy_group + dummy_time*dummy_group, data=GGPanel_id2)
summary(reg)
4. SUR на моей настройке ==> Ошибка
GGPanel <- pdata.frame( GrunfeldGreene, c( "id", "year" ) )
formulaGrunfeld <- invest ~ value + capital + dummy_time + dummy_group + dummy_time*dummy_group
greeneSur2 <- systemfit( formulaGrunfeld, "SUR",data = GGPanel, methodResidCov = "noDfCor" )
summary( greeneSur2 )