2012-06-17 35 views
22

lmglm模型,我使用的功能coefconfint要實現的目標:如何獲得混合效應模型中的係數及其置信區間?

m = lm(resp ~ 0 + var1 + var1:var2) # var1 categorical, var2 continuous 
coef(m) 
confint(m) 

現在我添加到模型中隨機效應 - 利用lme4包lmer功能使用混合效應模型。但是,功能coefconfint不再適用於我!

> mix1 = lmer(resp ~ 0 + var1 + var1:var2 + (1|var3)) 
             # var1, var3 categorical, var2 continuous 
> coef(mix1) 
Error in coef(mix1) : unable to align random and fixed effects 
> confint(mix1) 
Error: $ operator not defined for this S4 class 

我試圖谷歌和使用文檔,但沒有結果。請指向正確的方向。

編輯:我也在考慮這個問題是否適合https://stats.stackexchange.com/更多,但我認爲它比統計技術更具技術性,所以我認爲它最適合這裏(SO)......你怎麼看?

+0

爲了讓您一開始,直到有人喜歡@BenBolker顯示出來(專家):'lmer'列表方法'fixef'和'ranef'除了'coef'。由於你的錯誤表明它在結合這兩者時遇到了困難,所以問題很可能是你的模型規範在某種程度上「不尋常」。 – joran

+0

謝謝@joran。我的模型規格在忽略攔截方面可能是不尋常的 - 我想這樣做,否則係數是無稽之談。 'var1'是分類的,我想爲它的每個類別「分組截取」。如果我允許攔截(從公式中刪除'0 +'),'coef'運行,但不會給我所期望的。 'fixef'很棒,謝謝!但是'confint'根本不起作用。 – TMS

+0

我將提取您直接從S4對象所需要的數據 - 看到這個帖子的答案:http://stackoverflow.com/questions/8526681/extract-random-effect-variances-from-lme4-mer-model-object –

回答

8

我建議你使用良好的老lme(在包nlme中)。它具有保密性,如果您需要對比,我們會提供一系列選擇(可以在gmodels中進行估計,在contrast中進行對比,在multcomp中進行調整)。

爲什麼p值和confint在lmer中不存在:請參閱http://finzi.psych.upenn.edu/R/Rhelp02a/archive/76742.html

+0

感謝Dieter,我會嘗試較舊的軟件包。 P值的缺失 - 以及可能立即說出重要意義 - 也讓我感到震驚!對我來說沒有任何意義,如果我能夠獲得置信區間,那麼我會簡單地看它是否包含零 - 無論如何都有意義!問候, – TMS

+0

我忘了提及confint(glmt ...從multcomp包給出了lmer。Douglas Bates注意事項的漸近置信區間仍然適用,但他大膽的離開lmer/gaussian的p值肯定會激起湯。 –

+0

迪特,你是什麼意思與「confint(glht」?有沒有在multcomp包中沒有confint功能... – TMS

6

假設爲固定效應(其也confint會做)正常近似,我們可以通過

估計+ 1.96 *標準誤差獲得95%置信區間。

以下不適用於方差分量/隨機效應。

library("lme4") 
mylm <- lmer(Reaction ~ Days + (Days|Subject), data =sleepstudy) 

# standard error of coefficient 

days_se <- sqrt(diag(vcov(mylm)))[2] 

# estimated coefficient 

days_coef <- fixef(mylm)[2] 

upperCI <- days_coef + 1.96*days_se 
lowerCI <- days_coef - 1.96*days_se 
+1

嗨朱莉,好主意,但[真實的置信區間(通過confint計算)和這些...](http://stats.stackexchange.com/q/29981/5509)之間存在差異。也許t分佈會給出與confint相同的結果(雖然不確定),但在這種情況下,我不知道應該使用的df。 – TMS

+0

換句話說,這就是爲什麼我更喜歡使用'confint'等函數爲我做這一切的原因......(特別是如果我不確定係數的正態分佈)。 – TMS

+0

t分佈是漸近正態的,許多多層次設計中誤差項的自由度非常高,以致誤差分佈在該點是正常的。因此,如果你有一個自由度很大的設計,這是一個完全合理的置信區間估計。 – John

10

有兩個新的軟件包,lmerTestlsmeans,可以計算95%置信區間爲lmerglmer輸出。也許你可以看看那些?我認爲也可以這樣做(儘管Ben在下面用一種不太複雜的方式指出了Wald統計的標準誤差,而不是在lmerTestlsmeans中使用的Kenward-Roger和/或Satterthwaite df近似值)...只是遺憾的是,lsmeans包中仍然沒有內置的繪圖工具(因爲包effects(),這也反過來返回95%置信限lmerglmer對象,但通過重新設計模型沒有任何隨機因素,這顯然是不正確的)。

+0

+1哇感謝,但請修復鏈接.. – TMS

+1

'coefplot2'確實很天真,通過計算1.96倍沃爾德標準錯誤 - 它沒有解決有限尺寸修正的非常顯著問題獨聯體 –

+1

還要檢查這個帖子http://stats.stackexchange.com/questions/117641/how-trustworthy-are-the-confidence-intervals-for-lmer-objects-through-effects-pa進行更詳細的解答 –

2

不知道它何時被添加,但現在confint()在lme4中實現。 例如,下面的示例:

library(lme4) 
m = lmer(Reaction ~ Days + (Days | Subject), sleepstudy) 
confint(m) 
1

要找到係數,你可以簡單地使用lme4

m = lm(resp ~ 0 + var1 + var1:var2) # var1 categorical, var2 continuous 
m_summary <- summary(m) 

的彙總函數將所有係數:

m_summary$coefficient 

如果您想要置信區間,將標準誤差乘以1。96:

CI <- m_summary$coefficient[,"Std. Error"]*1.96 
print(CI) 
+0

中有很好的描述,這裏的1.96因子是95%置信區間 – denis

相關問題