我想从线性回归计算变换变量的标准误差,即除以两个变量并从该变量中得到标准误差。
我使用deltamethod
包中的msm
函数,但无法获得准确的标准错误。
例如:
set.seed(123)
nobs = 1000
data <- data.table(
x1 = rnorm(nobs),
x2 = rnorm(nobs),
x3 = rnorm(nobs),
x4 = rnorm(nobs),
y = rnorm(nobs))
reg2 <- lm(y~x1+x2+x3+x4, data=data)
vcov_reg <- vcov(reg2)
coef_reg <- coef(reg2)
coef_reg <- na.omit(coef_reg)
coef_reg <- as.numeric(coef_reg)
deltamethod(~ x2/x4, coef_reg, vcov_reg)
这给我一个3.21的变换变量(x1 / x3)的标准误差,而这个回归的所有标准误差都在0.03左右。
任何想法,为什么/这里有什么问题? 其他建议也值得欢迎。
答案 0 :(得分:1)
结果没有错。在您的示例中,您的数据以0为中心,因此当您将数据除以较大的差异/标准误差时,不应该太令人惊讶。
请注意,x3的估计系数为-0.017408626,因此标准误差约为0.03,此系数的CI超过0.这就是我们要除以的东西。希望这能让你对标准错误似乎爆炸的原因有所了解。有些证据表明这确实是问题的一部分,请考虑使用x1 / x2。
> deltamethod(~ x2/x3, coef_reg, vcov_reg)
[1] 0.3752063
由于分母的估计系数在这种情况下更大(0.09)
,因此小得多但是你的代码确实没有问题。只是你的直觉是错的。估计你想要的东西的另一种方法是引导或使用贝叶斯回归并观察转换的后验分布。