[英]Lsmeans package in R - degrees of freedom with lme models
在使用nlme軟件包構建線性混合模型的情況下,我對lsmeans軟件包使用的自由度有疑問。
這是一個基於Oats數據集來說明我的問題的例子。 我不是要討論這個模型是否與數據集相關,我只是想重現我與另一個數據集的問題;-)。
Oats.lme <- lme(yield ~ Variety, random = ~1 | Block, data = Oats)
anova(Oats.lme)
有了anova,我獲得了預期的64度自由度。
numDF denDF F-value p-value
(Intercept) 1 64 245.1409 <.0001
Variety 2 64 1.6654 0.1972
然后我使用lsmeans函數:
lsmeans(Oats.lme, list(poly ~ Variety))
我得到了
$`lsmeans of Variety`
Variety lsmean SE df lower.CL upper.CL
Golden Rain 104.5000 7.680866 5 84.75571 124.2443
Marvellous 109.7917 7.680866 5 90.04737 129.5360
Victory 97.6250 7.680866 5 77.88071 117.3693
Confidence level used: 0.95
$`polynomial contrasts of contrast`
contrast estimate SE df t.ratio p.value
linear -6.87500 6.68529 64 -1.028 0.3076
quadratic -17.45833 11.57926 64 -1.508 0.1365
對於對比,我獲得相同的64 df,但對於lsmeans本身,我只有5 df。 我也使用SAS,對於相同類型的模型,我對於lsmeans和對比具有相同數量的df(對於當前示例,這將是64)。
我已經看到在使用lme4包時可能會改變自由度,但我的代碼嵌入在一個基於nlme的內部開發工具中,所以我基本上堅持使用nlme。
現在有人會為什么會這樣,如果有可能改變它? 或者我錯過了什么?
我最初注意到在一個特定情況下這些lsmeans的自由度降低,我的隨機運行效果只有2個級別,當我對Dunnett的調整感興趣時。 因為我對lsmeans比較感興趣,現在我知道它來自哪里,我仍然可以使用它,但我把它放在那里以防萬一有同樣的錯誤並想知道原因。
我用Oats數據示例在下面復制了它。 我獲得的錯誤發生在lsmeans :::。qdunnx函數中,並且是由於lsmeans為1的df。
Oats.lme <- lme(yield ~ Variety, random = ~1 | Block, data = subset(Oats,Block %in% c("I","II")))
lsm <- lsmeans(Oats.lme, trt.vs.ctrl ~ Variety)
summary(lsm,adjust = "dunnettx", infer = c(T, T), level = 0.95)
這是結果
$lsmeans
Variety lsmean SE df lower.CL upper.CL
Golden Rain 123.250 15.88642 1 -78.60608 325.1061
Marvellous 125.500 15.88642 1 -76.35608 327.3561
Victory 115.125 15.88642 1 -86.73108 316.9811
Confidence level used: 0.95
$contrasts
contrast estimate SE df t.ratio p.value
Marvellous - Golden Rain 2.250 12.8697 20 0.175 0.9695
Victory - Golden Rain -8.125 12.8697 20 -0.631 0.7482
P value adjustment: dunnettx method for 2 tests
Error in if (abs(diff(r[1:2])) < 5e-04) return(r[1]) :
missing value where TRUE/FALSE needed
In addition: Warning message:
In qtukey(p, (1 + sqrt(1 + 8 * k))/2, df) : production de NaN
該模型表示響應變量受兩個隨機變化的影響:由於塊而導致的變化以及由變量引起的變化。 每種品種的手段包括這些變異來源; 但是這些方法的比較排除了塊的變化,因為品種在同一塊上進行了比較。
您只有六個區塊,因此有5個自由度來估計區塊的變化,這解釋了多樣性方法的自由度。 比較有更多的自由度,因為您不必考慮塊變化。
這里要考慮的另一個問題是對nlme包的支持使用包含方法來獲得自由度。 這主要涉及查看每種效果的自由度的最壞情況。 如果您改為使用lme4包和lmer
函數來擬合模型, lsmeans
將使用Satterthwaite或Kendall-Roger方法來獲得自由度,並且這些結果可能會稍大一些。 但是,手段的自由度仍然遠低於比較的自由度。
以下是一些具有相同數據和模型的SAS代碼:
proc mixed data = Oats;
class Variety Block;
model yield = Variety / ddfm = satterth;
random Block;
lsmeans Variety / tdiff;
...和lsmeans結果:
Least Squares Means
Standard
Effect Variety Estimate Error DF t Value Pr > |t|
Variety Golden_R 104.50 7.6809 8.87 13.61 <.0001
Variety Marvello 109.79 7.6809 8.87 14.29 <.0001
Variety Victory 97.6250 7.6809 8.87 12.71 <.0001
Differences of Least Squares Means
Standard
Effect Variety _Variety Estimate Error DF t Value Pr > |t|
Variety Golden_R Marvello -5.2917 6.6853 64 -0.79 0.4316
Variety Golden_R Victory 6.8750 6.6853 64 1.03 0.3076
Variety Marvello Victory 12.1667 6.6853 64 1.82 0.0734
請注意,當Satterthwaite方法用於自由度時,SAS顯示64 df用於比較,但僅顯示8.87 df用於平均值本身。
如果省略了model
語句中的ddfm
選項,則默認為df的包含方法,並在兩個表中列出64 df。 但是,我認為SAS在實施遏制方面是不正確的; 在CrossValidated中查看我之前關於此主題的帖子: https ://stats.stackexchange.com/questions/140156/degrees-of-freedom-using-containment-method
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.