2016-04-26 75 views
0

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

我使用msm包中的deltamethod函数,但未能获得准确的标准错误。

例如:

数据的模拟:

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(这里摆脱missings的,因为一些我真实数据中的系数是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) 

这使我变换变量的标准误差(X1/X3)为3.21,而这个回归的所有标准误差都在0.03左右。

任何想法是为什么/这里有什么问题? 其他建议来计算它也是受欢迎的。

+1

你认为答案应该是什么? – MrFlick

回答

1

结果没有问题。在你的例子中,你的数据是以0为中心的,所以当用数据除以最终的方差/标准误差时,应该不会太奇怪。

请注意,您估计的x3系数为-0.017408626,因此标准误差约为0.03,此系数的CI跨越0。这就是我们除以的事情。希望这给你一些直觉,说明为什么标准错误似乎会爆炸。对于一些证据来说,这确实是问题的一部分,请考虑使用x1/x2。

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

这是因为分母的估计系数要小得多在这种情况下(0.09)

大,但真的没有什么你的代码错误。这只是你的直觉是错误的。估计你想要的东西的替代方法是引导或使用贝叶斯回归并查看变换的后验分布。