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 R
ve 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.
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:
- Bu, karma efekt modellerini analiz etmek için geçerli bir yol mu? Değilse, bunun yerine ne yapmalıyım.
- 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?
- 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?
- Ö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:
- 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
- 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)
- 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)