关于r:线性回归中的转换变量的标准误差

Derive standard error of a transformed variable in linear regression

我想根据线性回归计算转换后的变量的标准误差,即除以两个变量并从该变量中获取标准误差。

我使用了msm包中的deltamethod函数,但是无法获得准确的标准错误。

例如:

数据模拟:

1
2
3
4
5
6
7
8
set.seed(123)
nobs = 1000
data <- data.table(
  x1 = rnorm(nobs),
  x2 = rnorm(nobs),
  x3 = rnorm(nobs),
  x4 = rnorm(nobs),
  y = rnorm(nobs))

线性回归:

1
reg2 <- lm(y~x1+x2+x3+x4, data=data)

获取系数和vcov(这里我需要消除缺失,因为我的真实数据中的一些系数是NA,并且我在循环中计算出很多回归)

1
2
3
4
5
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):

1
deltamethod(~ x2/x4, coef_reg, vcov_reg)

这给了我转换后的变量(x1 / x3)的标准误为3.21,而来自此回归的所有标准误都在0.03左右。

有什么主意为什么/这里出了什么问题?
也欢迎提供其他计算建议。


结果没有问题。在您的示例中,您的数据以0为中心,因此用数据除以最终会产生大方差/标准误差也就不足为奇了。

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

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

由于在这种情况下分母的估计系数较大(0.09),因此

小得多

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