2016-04-26 74 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)

大,但真的沒有什麼你的代碼錯誤。這只是你的直覺是錯誤的。估計你想要的東西的替代方法是引導或使用貝葉斯迴歸並查看變換的後驗分佈。