5

我想使用看似不相关的回归在横截面上重复估计单个方程,但总是收到错误“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 )
4

0 回答 0