Bir lme4 karma modelinde etkinin p-değeri (önemini kontrol et) nasıl elde edilir?


56

Karışık modele uyması için lme4 in R kullanıyorum

lmer(value~status+(1|experiment)))

değerin sürekli olduğu yerde, durum ve deney faktördür ve ben anlıyorum

Linear mixed model fit by REML 
Formula: value ~ status + (1 | experiment) 
  AIC   BIC logLik deviance REMLdev
 29.1 46.98 -9.548    5.911    19.1
Random effects:
 Groups     Name        Variance Std.Dev.
 experiment (Intercept) 0.065526 0.25598 
 Residual               0.053029 0.23028 
Number of obs: 264, groups: experiment, 10

Fixed effects:
            Estimate Std. Error t value
(Intercept)  2.78004    0.08448   32.91
statusD      0.20493    0.03389    6.05
statusR      0.88690    0.03583   24.76

Correlation of Fixed Effects:
        (Intr) statsD
statusD -0.204       
statusR -0.193  0.476

Durumun etkisinin önemli olduğunu nasıl bilebilirim? R sadece -değerlerini bildirir, - değerlerini bildirmez .tp


1
Bu soruya verilen cevaplardan yola çıkarak, OP'nin burada neyle ilgilendiğini merak ediyor: katsayıları boşa karşı test etmek (vanilla testi bir karşı düzenli doğrusal regresyonda yapar ) veya varyansın en aza indirgenmesi için test ( birçok ANOVA türünden elde ettiğimiz testi). Bu ikisi farklı şeyleri hedef alıyor. Karmaşık modeller hakkında olmasa da aydınlatıcı bir cevap burada bulunur . tH0:β=βnullF
Firebug

Yanıtlar:


61

GLMM SSS’sinde bu konuda birçok bilgi var . Ancak, kendi durumunuzda kullanmanızı öneririm

library(nlme)
m1 <- lme(value~status,random=~1|experiment,data=mydata)
anova(m1)

çünkü size lmersundukları hiçbir şeye ihtiyacınız yok (daha yüksek hız, çapraz rastgele efektlerin kullanılması, GLMM'ler ...). lmeSize tam olarak aynı katsayı ve varyans tahminleri vermelidir ama aynı zamanda (sizin için df ve p-değerleri hesaplamak olacak yapmak sen var görünüyor gibi bir "klasik" tasarım mantıklı). Ayrıca rasgele terimi de düşünebilirsiniz ~status|experiment(durum efektlerinin bloklar arasında değişmesine veya eşdeğerde bir deneme-deneme etkileşimi dahil). Yukarıdaki posterler de tistatistikleriniz o kadar büyük ki, p-değeriniz kesinlikle <0.05 olacak, ancak “gerçek” p-değerleri istediğinizi düşünebilirim.


3
Bu cevabı bilmiyorum. lmeraynı p-değerlerini kolaylıkla rapor edebilir, ancak geçerli nedenlerle yapamaz. Sanırım burada beni rahatsız eden herhangi bir "gerçek" p-değeri olduğu yorumudur. Olası bir kesim bulabileceğinizi ve herhangi bir makul kesim yapıldığını iddia edebilirsiniz. Ama gerçek bir p değeri olduğunu iddia edemezsin.
John

11
Klasik bir tasarım için (dengeli, iç içe geçmiş, vb.) Ben gerçekten gerçek bir değerin olduğunu, yani boş hipotez (beta = 0) ise, gözlemlenen büyüklükte veya daha büyük bir beta tahminini alma ihtimalinin olduğunu iddia edebilirim. yanıltıcıydı ... lme4 bu paydayı sağlamaz df, inanıyorum, çünkü belirtilen model, klasik bir paydayı hesaplamak için bazı buluşsal yöntemlerin çalışacağı bir model olduğunda, bir lme4 model yapısından tespit etmek daha zor ...
Ben Bolker

summary(m1)bunun yerine deneyin (bunu nlme paketiyle kullanıyorum)
jena

36

LmerTest paketini kullanabilirsiniz . Siz sadece yükleyin / yükleyin ve mercek modelleri uzuyor. Yani

library(lmerTest)
lmm <- lmer(value~status+(1|experiment)))
summary(lmm)
anova(lmm)

size p-değerleri ile sonuç verirdi. Eğer p-değerleri doğru ise işaret biraz tartışmalıdır, ancak bunları almak istiyorsanız, bu onları almanın yoludur.


28

P-değerlerini bırakmayı kaldırabilirseniz ( ve yapmalısınız ), durumun etkisi için kanıt ağırlığını temsil edecek bir olasılık oranı hesaplayabilirsiniz:

#compute a model where the effect of status is estimated
unrestricted_fit = lmer(
    formula = value ~ (1|experiment) + status
    , REML = F #because we want to compare models on likelihood
)
#next, compute a model where the effect of status is not estimated
restricted_fit = lmer(
    formula = value ~ (1|experiment)
    , REML = F #because we want to compare models on likelihood
)
#compute the AIC-corrected log-base-2 likelihood ratio (a.k.a. "bits" of evidence)
(AIC(restricted_fit)-AIC(unrestricted_fit))*log2(exp(1))

16
Olabilirlik oranlarının asimptotik olduğunu, yani artık varyansın tahminindeki belirsizliği hesaba
katmadığınızı unutmayın

5
Son sıranla ilgileniyorum. Sonucun yorumlanması nedir? Şuna bakabileceğim kaynaklar var mı?
mguzmann

13

Mesele şu ki, bu modeller için p-değerlerinin hesaplanması önemsiz değildir, buradaki tartışmaya bakınız, böylece lme4paketin yazarları çıktıya p-değerleri içermemeyi tercih ettiler. Bunları hesaplamanın bir yöntemini bulabilirsiniz, ancak bunların doğru olması gerekmez.


9

Ne sorduğunu düşün. Durumun etkisinin toplam p değerinin 0.05 gibi bir çeşit keyfi kesme değerinden geçtiğini bilmek istiyorsanız, o zaman bu kolaydır. İlk olarak, genel etkiyi bulmak istersiniz. Bunu alabilirsin anova.

m <- lmer(...) #just run your lmer command but save the model
anova(m)

Şimdi bir F değerine sahipsiniz . Bunu alabilir ve bazı F tablolarına bakabilirsiniz . Sadece mümkün olan en düşük olanı seçin. özgürlük derecesi. Kesinti 20 civarında olacak. Sizin F'niz bundan daha büyük olabilir ama yanılıyor olabilirim. Olmasa bile, burada yaptığınız deney sayısını kullanarak konvansiyonel bir ANOVA hesabından serbestlik derecelerine bakın. Bu değeri bir kesme için yaklaşık 5'e düşürürsünüz. Şimdi çalışmana kolayca geçiyorsun. Modeliniz için 'true' df bundan daha yüksek bir şey olacaktır, çünkü her veri noktasını bir ANOVA'nın modelleyeceği toplam değerlerin aksine modelleniyorsunuz.

Eğer gerçekten tam bir p değeri istiyorsanız, bunun hakkında teorik bir açıklama yapmaya istekli olmadığınız sürece böyle bir şey yoktur. Pinheiro & Bates (2001 ve belki de konuyla ilgili bazı kitaplar) okursanız ... bu cevaplardaki diğer bağlantılara bakın) ve belirli bir df için bir argümanla ortaya çıkarsanız, o zaman bunu kullanabilirsiniz. Ama zaten zaten kesin bir p değeri aramıyorsunuz. Bundan bahsediyorum çünkü bu nedenle kesin bir p-değeri bildirmemeniz gerekir, yalnızca sizin onayınız geçilir.

Mike Lawrence'ın cevabını gerçekten göz önünde bulundurmalısınız çünkü p-değerleri için sadece bir geçiş noktası ile yapıştırma fikri, verilerinizden çıkarmanın en son ve en önemli bilgileri olarak genellikle yanlış yönlendirilmiştir (ancak sizin durumunuzda olmayabilir. Gerçekten bilmek için yeterli bilgiye sahip değilsiniz). Mike, ilginç bir LR hesaplaması sürümü kullanıyor, ancak üzerinde çok fazla dokümantasyon bulmak zor olabilir. AIC kullanarak model seçimine ve yorumlamaya bakarsanız, beğenebilirsiniz.


9

Düzenleme: Bu yöntem artık lme4'ün daha yeni sürümlerinde desteklenmemektedir. LmerTest paketini bu cevapta pbx101 tarafından önerildiği şekilde kullanın .

R listesinde lme4'ün yazarı tarafından p değerlerinin neden gösterilmediğine dair bir yazı var. Bunun yerine MCMC örneklerini kullanmanızı önerir, bunun yerine pvals.fnc'yi languageR paketinden kullanırsınız:

library("lme4")
library("languageR")
model=lmer(...)
pvals.fnc(model)

Bkz http://www2.hawaii.edu/~kdrager/MixedEffectsModels.pdf bir örnek ve detaylar için.


3
lme4 artık bunu desteklemiyor. Bu yayın, tıpkı benim yaptığım gibi, bunu bulmak zorunda kalanları yedekleyecek şekilde güncellenebilir.
timothy.s.lau 11:15

5

Kombine etkisinin üzerinde statusönemli bir etkisinin olup olmadığını bilmek ister misiniz value? Eğer öyleyse, paketin içindeki Anovaişlevi kullanabilirsiniz car( anovatabandaki işlevle karıştırılmamalıdır R).

dat <- data.frame(
  experiment = sample(c("A","B","C","D"), 264, replace=TRUE), 
  status = sample(c("D","R","A"), 264, replace=TRUE), 
  value = runif(264)   
)
require(lme4)
(fm <- lmer(value~status+(1|experiment), data=dat))

require(car)
Anova(fm)

Paketi ?Anovayükledikten sonra bir göz atın car.


car::Anova()Michelle'in bağladığı p-değerlerinin hesaplanmasını çevreleyen yapışkan sorunları nasıl önler?
Mike Lawrence

Bilmiyorum, ama tahminimce yapışkan sorunları görmezden gelmekten kaçınıyor! Orijinal yazıyı yeniden okuduktan sonra, sorunu yanlış anladığımı hissediyorum. OP, sabit efekt parametreleri için kesin p değerleri istiyorsa, başı dertte demektir. Fakat eğer OP sadece anlamlı olup olmadıklarını bilmek isterse, t-değerlerinin kesin p değerinin nasıl hesaplanacağındaki belirsizlikten daha büyük olduğunu düşünüyorum. (Başka bir deyişle, bunlar önemlidir.)
smillig

1
İstatistiklerin genel etkisini bulmak için bir ANOVA hesaplamasına yönlendirmenin kesinlikle iyi bir fikir olduğunu düşünüyorum, ancak p-değerlerinin inceliğinin iyi olduğundan emin değilim. Düzenli anovakomut size F'ler verecek.
John

Bence bu görünüşte biraz daha katı. ANOVA'ların çalıştırılması, varyansı en aza indirmek istediğinizde geçerlidir, ancak ifadeden soruya göre OP değişkenlerin marjinal etkisini belirlemek istiyor, yani boş değerlere karşı test katsayıları.
Firebug

0

İşlev pvals.fncartık lme4 tarafından desteklenmiyor. LmerTest paketini kullanarak, Kenward-Roger'ın yaklaşımları gibi p-değerini hesaplamak için başka bir yöntem kullanmak mümkündür.

model=lmer(value~status+1|experiment)
anova(model, ddf="Kenward-Roger")

0

Yalnızca afex paketini yüklemek, lmer işlevinin çıktısındaki p-değerlerini lme4 paketinden basar (afex kullanmanız gerekmez; sadece yükleyin):

library(lme4)  #for mixed model
library(afex)  #for p-values

Bu, sabit etkiler için lmer çıkışına otomatik olarak bir p değeri sütunu ekleyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.