0

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

我使用包中的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 左右。

知道为什么/这里出了什么问题吗?也欢迎其他计算它的建议。

4

1 回答 1

1

结果没有错。在您的示例中,您的数据以 0 为中心,因此当除以数据时,您最终会得到较大的方差/标准误差,这不足为奇。

请注意,您对 x3 的估计系数为 -0.017408626,因此在标准误差约为 0.03 的情况下,该系数的 CI 与 0 交叉。这就是我们要除以的东西。希望这能让您对标准错误似乎爆炸的原因有一些直觉。对于一些证明这确实是问题的一部分的证据,请考虑 x1/x2。

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

由于分母的估计系数在这种情况下更大(0.09),因此要小得多

但实际上您的代码没有任何问题。只是你的直觉错了。估计您想要的替代方法是引导或使用贝叶斯回归并查看变换的后验分布。

于 2016-04-26T19:41:53.263 回答