Bu, l'de lme4 ile karışık etki modellerini analiz etmek için kabul edilebilir bir yol mu?


14

Analiz etmek için ayarlanmış bir dengesiz tekrarlanan ölçüm verilerim var ve çoğu istatistiksel paketin ANOVA (yani tip III karelerin toplamı) ile bu şekilde işlemesinin yanlış olduğunu okudum. Bu nedenle, bu verileri analiz etmek için karışık efektler modeli kullanmak istiyorum. Karışık modeller hakkında çok şey okudum R, ancak hala çok yeni Rve karışık efekt modelleri için çok yeni ve doğru şeyler yaptığımdan emin değilim. Kendimi henüz "geleneksel" yöntemlerden tamamen boşanamayacağımı ve yine de -değerlerine ve post hoc testlerine ihtiyacım olmadığını unutmayın.p

Aşağıdaki yaklaşımın anlamlı olup olmadığını veya korkunç bir şekilde yanlış bir şey yapıp yapmadığımı bilmek istiyorum. İşte benim kod:

# load packages
library(lme4)
library(languageR)
library(LMERConvenienceFunctions)
library(coda)
library(pbkrtest)

# import data
my.data <- read.csv("data.csv")

# create separate data frames for each DV & remove NAs
region.data <- na.omit(data.frame(time=my.data$time, subject=my.data$subject, dv=my.data$dv1))

# output summary of data
data.summary <- summary(region.data)

# fit model
# "time" is a factor with three levels ("t1", "t2", "t3")
region.lmer <- lmer(dv ~ time + (1|subject), data=region.data)

# check model assumptions
mcp.fnc(region.lmer)

# remove outliers (over 2.5 standard deviations)
rm.outliers <- romr.fnc(region.lmer, region.data, trim=2.5)
region.data <- rm.outliers$data
region.lmer <- update(region.lmer)

# re-check model assumptions
mcp.fnc(region.lmer)

# compare model to null model
region.lmer.null <- lmer(dv ~ 1 + (1|subject), data=region.data)
region.krtest <- KRmodcomp(region.lmer, region.lmer.null)

# output lmer summary
region.lmer.summary <- summary(region.lmer)

# run post hoc tests
t1.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

region.lmer <- lmer(dv ~ relevel(time,ref="t2") + (1|subject), data=region.data)
t2.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

region.lmer <- lmer(dv ~ relevel(time,ref="t3") + (1|subject), data=region.data)
t3.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)

# Get mcmc mean and 50/95% HPD confidence intervals for graphs
# repeated three times and stored in a matrix (not shown here for brevity)
as.numeric(t1.pvals$fixed$MCMCmean)
as.numeric(t1.pvals$fixed$HPD95lower)
as.numeric(t1.pvals$fixed$HPD95upper)
HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)
    HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)

Bazı özel sorularım var:

  1. Bu, karma efekt modellerini analiz etmek için geçerli bir yol mu? Değilse, bunun yerine ne yapmalıyım.
  2. Mcp.fnc tarafından yapılan eleştiri grafikleri, model varsayımlarını doğrulamak için yeterince iyi mi yoksa ek adımlar atmalı mıyım?
  3. Karışık modellerin geçerli olması için, verilerin normallik ve homoscedastisite varsayımlarına saygı duyması gerektiğini düşünüyorum. Nasıl "yaklaşık normal" nedir ve mcp.fnc tarafından oluşturulan eleştiri çizimleri bakarak değil nasıl yargılamak için? Sadece bunun için bir his almam gerekiyor mu, yoksa bir şeyler yapmanın reçeteli bir yolu mu? Bu varsayımlara göre karma modeller ne kadar sağlamdır?
  4. Örneğimdeki deneklerin ~ 20 özellikleri (biyobelirteçler) için üç zaman noktası arasındaki farkları değerlendirmem gerekiyor. Yapılan tüm testleri rapor ettiğim (önemli olsun ya da olmasın) ya da çoklu karşılaştırmalar için herhangi bir düzeltme şekline ihtiyacım var mı?

Deney konusunda biraz daha kesin olmak gerekirse, işte bazı ayrıntılar. Bazı katılımcıları tedavi gördükçe boylamasına takip ettik. Tedaviye başlamadan önce ve sonraki iki zaman noktasında bir dizi biyobelirteç ölçtük. Görmek istediğim, bu biyobelirteçlerde üç zaman noktası arasında fark olup olmadığıdır.

Burada yaptığım şeylerin çoğunu bu eğitimde dayandırıyorum , ancak ihtiyaçlarıma ve okuduğum şeylere göre bazı değişiklikler yaptım. Yaptığım değişiklikler:

  1. pvals.fnc (languageR paketinden) ile t1-t2, t2-t3 ve t1-t3 karşılaştırmaları elde etmek için "zaman" faktörünü yeniden değerlendirin
  2. olasılık modelini test etmek yerine Kenward-Roger'ın yaklaşımına (pbkrtest paketini kullanarak) dayalı yaklaşık bir F testi kullanarak karışık modelimi null modelle karşılaştırın (çünkü okuduğumdan, Kenward-Roger'ın şu anda daha iyi kabul edildiğini okudum)
  3. Varsayımları kontrol etmek ve aykırı değerleri kaldırmak için LMERConvenienceFunctions paketini kullanın (çünkü karışık modellerin aykırı değerlere çok duyarlı olduğunu okudum)

1
(+1) Güzel formüle edilmiş (çoklu) sorular.
chl

Yanıtlar:


22

Sorularınız biraz "büyük", bu yüzden bazı genel yorumlar ve ipuçları ile başlayacağım.

Bazı arka plan okuma ve faydalı paketler

Muhtemelen karışık modelleri kullanmaya yönelik bazı öğretici tanıtımlara bir göz atmalısınız, Baayen ve arkadaşları (2008) ile başlamayı tavsiye ederim - Baayen yazarıdır languageR. Barr ve arkadaşları (2013) rastgele etkiler yapısı ile ilgili bazı konuları tartışmaktadır ve Ben Bolker, şu anki geliştiricilerinden biridir lme4. Baayen ve arkadaşları sorularınız için özellikle iyidir, çünkü önyükleme / permütasyon testlerinin (arkadaki şeyler mcp.fnc) kullanımını tartışmak için çok zaman harcarlar .

Edebiyat

Florian Jaeger ayrıca laboratuvarının blogunda karışık modellerin pratik tarafında bir sürü şey var .

Görselleştirmek ve bu gibi, karışık modeller test etmek için yararlı bir R, bir dizi paket vardır lmerTestve effects. effectsPaket size lineer regresyon ve güven aralıkları perde arkasında neler çizmek sağlar çünkü özellikle güzel.

Uyum iyiliği ve modelleri karşılaştırmak

p -değerleri, karışık modelleri karşılaştırmak için gerçekten berbat bir yoldur (ve genellikle hiçbir şey için harika bir yöntem değildir). Doug Bates'ün (lme4'ün orijinal yazarı) onları dahil etmenin gerekli olduğunu hissetmemesinin bir nedeni vardır . Eğer gerçekten bu şekilde gitmek istiyorsanız (ve ben size yalvarmamam gerekiyorsa), yukarıda belirtilenler lmerTesthesaplama ve bunlarla başa çıkmak için bazı ek olanaklar sağlar.

Modelleri karşılaştırmanın daha iyi yolları log olabilirliği veya AIC ve BIC gibi çeşitli bilgi teorik kriterleridir. AIC ve BIC için genel kural "daha küçük daha iyidir", ancak dikkatli olmanız gerekir, çünkü ikisi de daha fazla model serbestlik derecesi için ceza verir ve "mutlak" iyi veya kötü değer yoktur. AIC ve günlük olabilirlik modellerinin güzel bir özetini almak için anova(), mernesneleri kabul etmek için aşırı yüklenmiş işlevi kullanabilirsiniz . Belirtilen değerlerinin yalnızca iç içe modeller arasındaki karşılaştırmalar için geçerli olduğunu lütfen unutmayın . Bununla birlikte, çıktı, diğer karşılaştırmalar için bile çok tablolu olduğu için oldukça güzel. Yuvalanmış modeller için güzel bir testiniz var ve ihtiyacınız yokχ 2 pχ2χ2p- iki modeli doğrudan karşılaştırmak için değerler. Bunun dezavantajı, uyumunuzun ne kadar iyi olduğu hemen net değildir.

Bireysel etkilere bakmak için (yani geleneksel bir ANOVA'da göreceğiniz şeyler), modellerde sabit etkiler için -değerlerine bakmalısınız (ki bu yanılmıyorsamın bir parçasıdır ). Genellikle, her şey iyi kabul edilir (daha fazla ayrıntı Baayen vd.). Sabit efektlere doğrudan yardımcı işlevle de erişebilirsiniz .| t | > 2tsummary()|t|>2fixef()

Ayrıca, sabit etkilerinizin hiçbirinin çok güçlü bir şekilde ilişkili olmadığından emin olmalısınız - çoklu doğrusallık model varsayımlarını ihlal eder. Florian Jaeger bunun üzerine biraz yazdığı gibi birkaç olası çözüm de yazdı .

Çoklu karşılaştırmalar

4. soruya biraz daha doğrudan değineceğim. Cevap temel olarak geleneksel ANOVA ile iyi uygulama ile aynıdır, maalesef bu çoğu araştırmacı için büyük belirsizliğin olduğu bir yer gibi görünüyor. (Geleneksel ANOVA ile aynıdır, çünkü hem doğrusal karma efekt modelleri hem de ANOVA genel doğrusal modele dayanır, sadece karışık modellerin rastgele efektler için ekstra bir terime sahip olması gerekir.) Zaman pencerelerinin bir fark ve zamanın etkilerini karşılaştırmak istiyorsanız, modeli modelinize dahil etmelisiniz. Bu arada, zamanın bir fark yaratıp yaratmadığına karar vermeniz için de uygun bir yol sağlayacaktır: zaman için ana (sabit) bir etki var mı? Bu rotaya gitmenin dezavantajı, modelinizin çok daha karmaşık ve tek "süper" elde etmesi Paramater olarak zamana sahip modelin hesaplanması muhtemelen bir parametre olarak zaman olmadan üç küçük modele göre daha uzun sürecektir. Gerçekten de, karışık modeller için klasik öğretici örneksleepstudy zaman paramater olarak kullanır.

Farklı özelliklerin yordayıcı mı yoksa bağımlı değişken mi olduğunu anlatamadım. Eğer öngörücü olmaları gerekiyorsa, hepsini tek bir modele atabilir ve hangisinin en büyük değerine sahip olduğunu görebilirsiniz , ancak etkileşimlere izin vermeseniz ve uzun zaman alsanız bile bu model inanılmaz derecede karmaşık olacaktır. hesaplamak. Daha hızlı ve potansiyel olarak daha kolay bir yol, her bir öngörücü için farklı modelleri hesaplamak olacaktır. Olabildiğiniz kadar çok çekirdek arasında paralelleştirmek için bir döngü kullanmanızı tavsiye ederim - matris işlemlerini paralel olarak yapmaz, böylece her çekirdek üzerinde paralel olarak farklı bir model hesaplayabilirsiniz. ( Buradaki kısa tanıtıma bakınχ 2tforeachlme4) Ardından, hangi öngörücünün en iyi olduğunu bulmak için her modelin AIC ve BIC değerlerini karşılaştırabilirsiniz. (Onlar sizin bu yüzden', bu durumda iç içe değiliz istatistik.)χ2

Özellikleriniz bağımlı değişkense, yine de farklı modelleri hesaplamanız gerekir ve ardından sonuçları karşılaştırmak için AIC ve BIC'yi kullanabilirsiniz.


Detaylı cevap için teşekkürler! Verilen referanslardan bazılarını okudum, ama kesinlikle diğerlerine bir göz atacağım. P-değerlerinin kötülüğünü anladığım kadarıyla, yorumcular maalesef genellikle başka türlü düşünüyorlar (en azından şimdilik). Bates tarafından önerildiği gibi, mcmc örnekleme kullanıyorum, ki bu benim anlayışımdan sorunun bir kısmını kaldırıyor (yani bir lmer modeli için serbestlik derecelerini doğru olarak tahmin etmek mümkün değil). Özellikleri bir DV, açıklığa kavuşturmak için biraz daha bilgi ekleyeceğim.
ー ン ボ ー
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.