在线性回归中导出变换变量的标准误差

时间:2016-04-26 19:23:23

标签: r linear-regression standard-error

我想从线性回归计算变换变量的标准误差,即除以两个变量并从该变量中得到标准误差。

我使用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)

获取coef和vcov(这里我需要摆脱缺失,因为我的实际数据中的一些系数是NA,我在循环中计算了很多回归)

vcov_reg <- vcov(reg2)

coef_reg <- coef(reg2)
coef_reg <- na.omit(coef_reg) 
coef_reg <- as.numeric(coef_reg)

Deltamethod,对于变量x1除以x3(意味着我应该根据msm包使用x2和x4):

deltamethod(~ x2/x4, coef_reg, vcov_reg)

这给我一个3.21的变换变量(x1 / x3)的标准误差,而这个回归的所有标准误差都在0.03左右。

任何想法,为什么/这里有什么问题? 其他建议也值得欢迎。

1 个答案:

答案 0 :(得分:1)

结果没有错。在您的示例中,您的数据以0为中心,因此当您将数据除以较大的差异/标准误差时,不应该太令人惊讶。

请注意,x3的估计系数为-0.017408626,因此标准误差约为0.03,此系数的CI超过0.这就是我们要除以的东西。希望这能让你对标准错误似乎爆炸的原因有所了解。有些证据表明这确实是问题的一部分,请考虑使用x1 / x2。

> deltamethod(~ x2/x3, coef_reg, vcov_reg)
[1] 0.3752063

由于分母的估计系数在这种情况下更大(0.09)

,因此小得多

但是你的代码确实没有问题。只是你的直觉是错的。估计你想要的东西的另一种方法是引导或使用贝叶斯回归并观察转换的后验分布。