मल्टीकम्प में पोस्ट-हॉक परीक्षण :: बातचीत के साथ मिश्रित-प्रभाव मॉडल (lme4) के लिए glht


10

मैं R( lme4पैकेज) में रैखिक मिश्रित प्रभाव वाले मॉडल पर पोस्ट-हॉक परीक्षण कर रहा हूं । मैं पोस्ट-हॉक टेस्ट करने के लिए multcompपैकेज ( glht()फ़ंक्शन) का उपयोग कर रहा हूं ।

एक यादृच्छिक ब्लॉक प्रभाव के साथ मेरे प्रयोगात्मक डिजाइन को दोहराया जाता है। मॉडल इस प्रकार हैं:

mymod <- lmer(variable ~ treatment * time + (1|block), data = mydata, REML = TRUE)

अपने डेटा को यहां संलग्न करने के बजाय, मैं पैकेज के warpbreaksभीतर बुलाए गए डेटा से काम कर रहा हूं multcomp

data <- warpbreaks
warpbreaks$rand <- NA

मैंने अपने "ब्लॉक" प्रभाव की नकल करने के लिए एक अतिरिक्त यादृच्छिक चर जोड़ा है:

warpbreaks$rand <- rep(c("foo", "bar", "bee"), nrow(warpbreaks)/3)

यह मेरे मॉडल की नकल करता है:

mod <- lmer(breaks ~ tension * wool + (1|rand), data = warpbreaks) 

मैं " अतिरिक्त मल्टीप्लेक्स उदाहरण- 2 वे एनोवा " में उदाहरण से अवगत हूं। यह उदाहरण आपको स्तरों के भीतर तनाव के स्तर की तुलना करने की ओर ले जाता है wool

क्या होगा अगर मैं इसके विपरीत करना चाहता हूं - के स्तरों के woolभीतर की तुलना करें tension? (मेरे मामले में, यह समय के स्तरों के भीतर उपचार के स्तरों (दो - 0, 1) की तुलना करेगा (तीन - जून, जुलाई, अगस्त)।

मैं ऐसा करने के लिए निम्न कोड के साथ आया हूं, लेकिन यह काम नहीं करता है (नीचे त्रुटि संदेश देखें)।

सबसे पहले, उदाहरण से ( स्थानों की अदला wool- tensionबदली):

tmp <- expand.grid(wool = unique(warpbreaks$wool), tension = unique(warpbreaks$tension))
X <- model.matrix(~ tension * wool, data = tmp)
glht(mod, linfct = X)

Tukey <- contrMat(table(warpbreaks$wool), "Tukey")

K1 <- cbind(Tukey, matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)))
rownames(K1) <- paste(levels(warpbreaks$tension)[1], rownames(K1), sep = ":")

K2 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey)
rownames(K2) <- paste(levels(warpbreaks$tension)[2], rownames(K2), sep = ":")

यहाँ से नीचे तक, मेरा अपना कोड:

K3 <- cbind(matrix(0, nrow = nrow(Tukey), ncol = ncol(Tukey)), Tukey)
rownames(K2) <- paste(levels(warpbreaks$tension)[3], rownames(K3), sep = ":")

K <- rbind(K1, K2, K3)
colnames(K) <- c(colnames(Tukey), colnames(Tukey))

> summary(glht(mod, linfct = K %*% X))
Error in summary(glht(mod, linfct = K %*% X)) : 
  error in evaluating the argument 'object' in selecting a method for function 'summary': Error in K %*% X : non-conformable arguments

जवाबों:


6

यह lsmeans पैकेज का उपयोग करना बहुत आसान है

library(lsmeans)
lsmeans(mod, pairwise ~ tension | wool)
lsmeans(mod, pairwise ~ wool | tension)

महान, यह काम करता है! धन्यवाद। नोट: इस कोड ने केवल मेरे रिपीट वेरिएबल को संख्यात्मक मानों (3 & 6) से वर्णमाला मानों (A & B) में बदलने के बाद मेरे डेटा के लिए काम किया।

खैर, यह बहुत मायने रखता है! क्योंकि यह एक है अलग मॉडल के साथ timeएक अंकीय कारक के रूप में। मुझे संदेह है कि आप इसे एक कारक के रूप में चाहते थे।
०१ पर रोस लेन्थ जूल

मैं अधिक भविष्यवाणियों को कैसे सामान्य कर सकता हूं? अगर उदाहरण के लिए मेरे पास 3 भविष्यवक्ता हैं तो यह कैसे काम करता है?
को आनंद लें

1
@havefun कृपया देखें help("lsmeans", package = "lsmeans")और vignette("using-lsmeans")। बहुत सारे प्रलेखन और कई उदाहरण हैं।
रोस लेन्थ

1
प्रत्येक विधि के साथ आपके द्वारा प्राप्त तुलनाओं की संख्या की गणना करें, वे समान नहीं हैं। कई-परीक्षण समायोजन पर भी पढ़ें। जब आपके पास परीक्षणों का एक बड़ा परिवार होता है, तो समायोजित P मान एक छोटे परिवार के लिए अलग होते हैं। जब आप एक वैरिएबल का उपयोग करते हैं, तो समायोजन को प्रत्येक सेट पर अलग से लागू किया जाता है।
रस्स लेन्थ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.