如何使用要预测的因素和聚类标准误差来估计 R 中的 SUR 模型?
How to estimate an SUR model in R with factors to be projected out and clustered standard errors?
我想估计一个 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.40, 0.15, 0.35, 0.50, 0.55, 0.10, 0.15, 0.30, 0.10)
Y_var2 <- c(0.40, 0.25, 0.45, 0.30, 0.35, 0.25, 0.15, 0.25, 0.35, 0.30, 0.20, 0.15)
X_var1 <- c(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
X_var2 <- c(0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0)
X_var3 <- c(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1)
X_var4 <- c(0.18, 0.18, 0.18, 0.20, 0.20, 0.20, 0.22, 0.22, 0.22, 0.24, 0.24, 0.24)
X_var5 <- c(0.08, 0.08, 0.08, 0.06, 0.06, 0.06, 0.04, 0.04, 0.04, 0.02, 0.02, 0.02)
X_var6 <- c(-0.25, -0.25, -0.25, 1.30, 1.30, 1.30, 1.80, 1.80, 1.80, 2.25, 2.25, 2.25)
X_var7 <- c(1000, 1000, 1000, 1500, 1500, 1500, 2000, 2000, 2000, 2500, 2500, 2500)
X_var8 <- c('ABC', 'ABC', 'ABC', 'MNO', 'MNO', 'MNO', 'DEF', 'DEF', 'DEF', 'XYZ', 'XYZ', 'XYZ')
X_var9 <- c(2000, 2010, 2020, 2000, 2010, 2020, 2000, 2010, 2020, 2000, 2010, 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, data=sample_data, 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[ 的值=21=]
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)
我想估计一个 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.40, 0.15, 0.35, 0.50, 0.55, 0.10, 0.15, 0.30, 0.10)
Y_var2 <- c(0.40, 0.25, 0.45, 0.30, 0.35, 0.25, 0.15, 0.25, 0.35, 0.30, 0.20, 0.15)
X_var1 <- c(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
X_var2 <- c(0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0)
X_var3 <- c(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1)
X_var4 <- c(0.18, 0.18, 0.18, 0.20, 0.20, 0.20, 0.22, 0.22, 0.22, 0.24, 0.24, 0.24)
X_var5 <- c(0.08, 0.08, 0.08, 0.06, 0.06, 0.06, 0.04, 0.04, 0.04, 0.02, 0.02, 0.02)
X_var6 <- c(-0.25, -0.25, -0.25, 1.30, 1.30, 1.30, 1.80, 1.80, 1.80, 2.25, 2.25, 2.25)
X_var7 <- c(1000, 1000, 1000, 1500, 1500, 1500, 2000, 2000, 2000, 2500, 2500, 2500)
X_var8 <- c('ABC', 'ABC', 'ABC', 'MNO', 'MNO', 'MNO', 'DEF', 'DEF', 'DEF', 'XYZ', 'XYZ', 'XYZ')
X_var9 <- c(2000, 2010, 2020, 2000, 2010, 2020, 2000, 2010, 2020, 2000, 2010, 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, data=sample_data, 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[ 的值=21=]
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)