簡體   English   中英

Lsmeans包裝在R - 自由度與lme模型

[英]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結果

以下是一些具有相同數據和模型的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM