问题描述
我想估计一个 SUR(看似无关的回归)模型。
我尝试使用 systemfit
及其包装器 Zelig
。但我无法理解如何指定要投影的因子(即添加固定效应)并将标准误差聚类,就像我们在 felm()
中所做的那样。
此外,如果我只是将固定效应变量添加到回归方程中,则会出现以下错误:
Error in LU.dgC(a) : cs_lu(A) Failed: near-singular A (or out of memory)
非常感谢您的帮助!
Y_var1 <- c(0.45,0.40,0.30,0.15,0.35,0.50,0.55,0.10,0.10)
Y_var2 <- c(0.40,0.25,0.45,0.20,0.15)
X_var1 <- c(0,1,0)
X_var2 <- c(0,0)
X_var3 <- c(0,1)
X_var4 <- c(0.18,0.18,0.22,0.24,0.24)
X_var5 <- c(0.08,0.08,0.06,0.04,0.02,0.02)
X_var6 <- c(-0.25,-0.25,1.30,1.80,2.25,2.25)
X_var7 <- c(1000,1000,1500,2000,2500,2500)
X_var8 <- c('ABC','ABC','MNO','DEF','XYZ','XYZ')
X_var9 <- c(2000,2010,2020,2020)
sample_data <- data.frame(Y_var1,Y_var2,X_var1,X_var2,X_var3,X_var4,X_var5,X_var6,X_var7,X_var8,X_var9)
library(systemfit)
formula <- list(mu1 = Y_var1 ~ X_var1*X_var3 + X_var2*X_var3 + X_var4 + X_var5 + X_var6 + log(X_var7),mu2 = Y_var2 ~ X_var1*X_var3 + X_var2*X_var3 + X_var4 + X_var5 + X_var6 + log(X_var7))
fitsur <- systemfit(formula = formula,data=sample_data,method = "SUR")
fitols <- systemfit(formula = formula,method = "OLS")
(由于这是一个示例数据集,因此,上述两个回归会产生我上面提到的错误,但在我的实际数据上运行良好。)
但是,我感兴趣的是使用 SUR 估计上述公式,其中 X_var8
和 X_var9
固定效应和标准误差聚集在 X_var8
级别。
如果我们使用felm()
,则规范是
felm(mu1 = Y_var1 ~ X_var1*X_var3 + X_var2*X_var3 + X_var4 + X_var5 + X_var6 + log(X_var7) | X_var8 + X_var9 | 0 | X_var8)
但是,由于我的标准误差在方程之间相互关联,因此我需要使用 SUR。
任何帮助将不胜感激。谢谢!
解决方法
我想现在我明白了如何正确地将固定效应实现到 SUR 模型,
-
我们需要先使用一个热编码将X_var8转换为数字,并且我还根据您上面的交互公式创建了新变量
library(mltools)
sample_data2 <- as.data.frame(one_hot(as.data.table(sample_data)))
sample_data2$X_var13 <- sample_data2$X_var1 * sample_data2$X_var3
sample_data2$X_var23 <- sample_data2$X_var2 * sample_data2$X_var3
-
仔细检查sample_data2$X_var13和sample_data2$X_var23
的值sample_data2$X_var13
[1] 0 0 0 0 0 0 0 0 0 0 0 0
sample_data2$X_var23
[1] 0 0 0 0 0 1 0 0 0 0 0 0
因为对于所需的样本数据,所有 sample_data2$X_var13
都是 0,它也会影响 Error in LU.dgC(a) : cs_lu(A) failed: near-singular A (or out of memory)
的错误,因为它没有任何有意义的值,我们可以丢弃它,但可以随意使用到真实数据
-
使用添加的固定效果制作公式:
formula <- list(mu1 = Y_var1 ~ X_var23 + X_var4 + X_var5 + X_var6 + log(X_var7) + X_var8_ABC + X_var8_DEF + X_var8_MNO + X_var8_XYZ + X_var9,mu2 = Y_var2 ~ X_var23 + X_var4 + X_var5 + X_var6 + log(X_var7) + X_var8_ABC + X_var8_DEF + X_var8_MNO + X_var8_XYZ + X_var9)
-
拟合 SUR 模型并进行总结:
fitsur <- systemfit(formula = formula,data=sample_data2,method = "SUR")
summary(fitsur)