यह R में lme4 के साथ मिश्रित प्रभाव मॉडल का विश्लेषण करने का एक स्वीकार्य तरीका है?


14

मेरे पास विश्लेषण करने के लिए असंतुलित दोहराए गए डेटा सेट हैं, और मैंने पढ़ा है कि जिस तरह से अधिकांश सांख्यिकीय पैकेज एनोवा (यानी III प्रकार के वर्ग) के साथ इसे संभालते हैं, वह गलत है। इसलिए, मैं इन आंकड़ों का विश्लेषण करने के लिए एक मिश्रित प्रभाव मॉडल का उपयोग करना चाहूंगा। मैंने मिश्रित मॉडलों के बारे में बहुत कुछ पढ़ा है R, लेकिन मैं अभी भी बहुत नए Rऔर मिश्रित प्रभाव वाले मॉडल हूं और बहुत आश्वस्त नहीं हूं कि मैं चीजों को सही कर रहा हूं। ध्यान दें कि मैं अभी तक पूरी तरह से "पारंपरिक" तरीकों से खुद को तलाक नहीं दे सकता हूं, और अभी भी टेस्ट और पोस्ट टेस्ट की आवश्यकता है।पी

मैं जानना चाहूंगा कि क्या निम्नलिखित दृष्टिकोण समझ में आता है, या यदि मैं कुछ गलत कर रहा हूं। यहाँ मेरा कोड है:

# 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)

कुछ विशिष्ट प्रश्न मेरे पास हैं:

  1. क्या यह मिश्रित प्रभाव मॉडल के विश्लेषण का एक वैध तरीका है? यदि नहीं, तो इसके बजाय मुझे क्या करना चाहिए।
  2. मॉडल मान्यताओं की पुष्टि करने के लिए mcp.fnc द्वारा आलोचना प्लॉट आउटपुट काफी अच्छे हैं, या मुझे अतिरिक्त कदम उठाने चाहिए।
  3. मुझे लगता है कि मिश्रित मॉडल वैध होने के लिए, डेटा को सामान्यता और समरूपता की सम्मान मान्यताओं की आवश्यकता है। मैं कैसे आंक सकता हूं कि "लगभग सामान्य" क्या है और mcp.fnc द्वारा उत्पन्न आलोचना के भूखंडों को देखकर क्या नहीं है? क्या मुझे बस इसके लिए एक अनुभव प्राप्त करने की आवश्यकता है, या क्या उनका काम करने का एक निर्धारित तरीका है? इन मान्यताओं के संबंध में मिश्रित मॉडल कितने मजबूत हैं?
  4. मुझे अपने नमूने में विषयों की ~ 20 विशेषताओं (बायोमार्कर) के लिए तीन समय बिंदुओं के बीच अंतर का आकलन करने की आवश्यकता है। क्या प्रत्येक स्वीकार्य के लिए फिटिंग और अलग-अलग मॉडल का परीक्षण करना, जब तक कि मैं सभी किए गए परीक्षणों (महत्वपूर्ण या नहीं) की रिपोर्ट करता हूं, या क्या मुझे कई तुलनाओं के लिए किसी भी प्रकार के सुधार की आवश्यकता है।

प्रयोग के संबंध में थोड़ा और सटीक होने के लिए, यहां कुछ और विवरण दिए गए हैं। जब तक वे किसी उपचार से गुजरते हैं, हमने अनुदैर्ध्य रूप से कई प्रतिभागियों का अनुसरण किया। हमने उपचार शुरू होने से पहले और बाद में दो समय बिंदुओं पर कई बायोमार्कर को मापा। मैं देखना चाहूंगा कि क्या तीन समय बिंदुओं के बीच इन बायोमार्करों में अंतर है।

मैं इस ट्यूटोरियल में यहां जो कुछ भी कर रहा हूं, उसमें से अधिकांश को आधार बना रहा हूं , लेकिन मैंने अपनी जरूरतों और मेरे द्वारा पढ़ी गई चीजों के आधार पर कुछ बदलाव किए हैं। मेरे द्वारा किए गए परिवर्तन हैं:

  1. t1-t2, t2-t3, और t1-t3 तुलना को pvals.fnc (languageR पैकेज से) से प्राप्त करने के लिए "समय" कारक को फिर से देखें।
  2. मेरे मिक्स्ड मॉडल की तुलना केनवर्ड-रोजर के दृष्टिकोण (pbkrtest पैकेज का उपयोग करते हुए) के बजाय अनुमानित अनुपात परीक्षण के आधार पर अनुमानित एफ-टेस्ट का उपयोग करके अशक्त मॉडल से करें (क्योंकि मैं पढ़ता हूं, कि केनवर्ड-रोजर को अभी बेहतर माना जाता है)
  3. मान्यताओं की जांच करने और आउटलेर्स को हटाने के लिए LMERConvenienceFunctions पैकेज का उपयोग करें (क्योंकि मैंने पढ़ा कि मिश्रित मॉडल आउटकम के लिए बहुत संवेदनशील हैं)

1
(+1) अच्छी तरह से तैयार (एकाधिक) प्रश्न।
CHL

जवाबों:


22

आपका प्रश्न थोड़ा सा "बड़ा" है, इसलिए मैं कुछ सामान्य टिप्पणियों और सुझावों के साथ शुरुआत करूंगा।

कुछ पृष्ठभूमि पढ़ने और उपयोगी पैकेज

आपको संभवतः मिश्रित मॉडल का उपयोग करने के लिए कुछ ट्यूटोरियल परिचय पर एक नज़र डालनी चाहिए, मैं Baayen et al (2008) से शुरू करने की सलाह दूंगा - Baayen के लेखक हैं languageR। बर्र एट अल (2013) यादृच्छिक प्रभाव संरचना के साथ कुछ मुद्दों पर चर्चा करते हैं, और बेन बोल्कर वर्तमान डेवलपर्स में से एक है lme4। Baayen et al आपके प्रश्नों के लिए विशेष रूप से अच्छा है क्योंकि वे बूटस्ट्रैपिंग / क्रमपरिवर्तन परीक्षणों (पीछे के सामान mcp.fnc) के उपयोग पर चर्चा करने में बहुत समय व्यतीत करते हैं ।

साहित्य

फ्लोरियन जेगर के पास अपनी प्रयोगशाला में मिश्रित मॉडल के व्यावहारिक पक्ष पर सामान का एक गुच्छा भी है ब्लॉग

मिश्रित मॉडल की तरह कल्पना और परीक्षण के लिए कई उपयोगी आर पैकेज भी हैं, जैसे lmerTestऔरeffectseffectsपैकेज विशेष रूप से अच्छा है क्योंकि यह आप साजिश रेखीय प्रतीपगमन और विश्वास के अंतराल पर्दे के पीछे चल रहा करने देता है।

फिट और तुलना मॉडल की अच्छाई

पीमिश्रित मॉडल की तुलना करने के लिए -एवल्यूस एक बहुत ही घटिया तरीका है (और आमतौर पर किसी भी चीज के लिए एक बढ़िया तरीका नहीं है)। नहीं है एक कारण क्यों डौग बेट्स (lme4 के मूल लेखक) यह उन्हें शामिल करने के लिए आवश्यक है महसूस नहीं करता है। यदि आप वास्तव में इस तरह से जाना चाहते हैं (और मैं आपसे विनती करता हूं), तो उपर्युक्त lmerTestगणना और उनके साथ काम करने के लिए कुछ अतिरिक्त सुविधाएं प्रदान करता है।

तुलना मॉडल के बेहतर तरीके लॉग-लाइक या एआईसी और बीआईसी जैसे विभिन्न सूचना-सिद्धांत संबंधी मानदंड हैं। एआईसी और बीआईसी के लिए, सामान्य नियम "छोटा बेहतर है", लेकिन आपको वहां सावधान रहना होगा क्योंकि वे दोनों स्वतंत्रता के अधिक मॉडल डिग्री के लिए दंड देते हैं और कोई "पूर्ण" अच्छा या बुरा मूल्य नहीं है। एआईसी और लॉग-लाइबिलिटी मॉडल का अच्छा सारांश प्राप्त करने के लिए, आप anova()फ़ंक्शन का उपयोग कर सकते हैं , जिसे merऑब्जेक्ट स्वीकार करने के लिए अतिभारित किया गया है । कृपया ध्यान दें किχ2उनके दिए गए मूल्य केवल नेस्टेड मॉडल के बीच तुलना के लिए मान्य हैं । फिर भी, उत्पादन इतना सारणीबद्ध होने के लिए काफी अच्छा है, यहां तक ​​कि अन्य तुलनाओं के लिए भी। नेस्टेड मॉडल के लिए, आपके पास एक अच्छा हैχ2 परीक्षण और जरूरत नहीं है पीसीधे दो मॉडलों की तुलना करने के लिए -values। इसका नकारात्मक पक्ष यह है कि यह तुरंत स्पष्ट नहीं है कि आपका फिट कितना अच्छा है।

अलग-अलग प्रभावों को देखने के लिए (यानी वह सामान जो आप पारंपरिक एनोवा में देखेंगे), आपको देखना चाहिए टी-मॉडल्स में निश्चित प्रभावों के लिए अंतराल (जो कि summary()अगर मैं गलत नहीं हूं तो इसका एक हिस्सा है )। आम तौर पर, कुछ भी|टी|>2अच्छा माना जाता है (Baayen et al में अधिक विवरण)। आप सहायक फ़ंक्शन के साथ सीधे तय किए गए प्रभावों तक भी पहुंच सकते हैं fixef()

आपको यह भी सुनिश्चित करना चाहिए कि आपका कोई भी निश्चित प्रभाव बहुत दृढ़ता से सहसंबद्ध नहीं है - बहुस्तरीयता मॉडल मान्यताओं का उल्लंघन करती है। फ्लोरियन जेगर ने थोड़ा लिखा है इस पर , साथ ही कुछ संभावित समाधान भी।

एकाधिक तुलना

मैं आपके प्रश्न # 4 को थोड़ा और सीधे संबोधित करूँगा। इसका उत्तर मूल रूप से पारंपरिक एनोवा के साथ अच्छा अभ्यास है, दुर्भाग्य से यह एक ऐसा स्थान है जहां ज्यादातर शोधकर्ताओं के लिए अनिश्चितता का एक बड़ा सौदा है। (यह पारंपरिक एनोवा के समान है क्योंकि दोनों रैखिक मिश्रित-प्रभाव मॉडल और एनोवा दोनों सामान्य रैखिक मॉडल पर आधारित हैं, यह सिर्फ इतना है कि मिश्रित मॉडल में यादृच्छिक प्रभावों के लिए एक अतिरिक्त शब्द है।) यदि आप मान रहे हैं कि समय खिड़कियां एक बनाते हैं। अंतर और समय के प्रभावों की तुलना करना चाहते हैं, आपको अपने मॉडल में समय शामिल करना चाहिए। यह, संयोग से, आपके लिए यह निर्धारित करने का एक सुविधाजनक तरीका भी प्रदान करेगा कि क्या समय ने अंतर किया: क्या समय के लिए एक मुख्य (निश्चित) प्रभाव है? इस मार्ग पर जाने के लिए नकारात्मक पक्ष यह है कि आपके मॉडल को बहुत अधिक जटिल और एकल "सुपर" मिलेगा एक पैरामाटर के रूप में समय के साथ मॉडल शायद पैरामाटर के रूप में समय के बिना तीन छोटे मॉडल की तुलना में अधिक समय लगेगा। दरअसल, मिश्रित मॉडल के लिए क्लासिक ट्यूटोरियल उदाहरण हैsleepstudy जो समय को परमार्थ के रूप में उपयोग करता है।

मैं यह नहीं बता सकता कि अलग-अलग विशेषताएँ भविष्यवाणियाँ या आश्रित चर हैं। यदि वे भविष्यवक्ता होने के लिए हैं, तो आप उन सभी को एक मॉडल में फेंक सकते हैं और देख सकते हैं कि कौन सा सबसे बड़ा हैटी-वास्तव, लेकिन यह मॉडल अविश्वसनीय रूप से जटिल होगा, भले ही आप बातचीत की अनुमति न दें, और गणना करने में लंबा समय लें। तेज, और संभावित आसान तरीका, प्रत्येक भविष्यवक्ता के लिए विभिन्न मॉडलों की गणना करना होगा। मैं एक foreachलूप का उपयोग करने की सलाह दूंगा कि आप इसे जितनी भी कोर के पार कर सकते हैं - lme4समानांतर में इसके मैट्रिक्स ऑपरेशन नहीं करते हैं, इसलिए आप समानांतर में प्रत्येक कोर पर एक अलग मॉडल की गणना कर सकते हैं। ( यहां संक्षिप्त परिचय देखें ) फिर, आप प्रत्येक मॉडल के एआईसी और बीआईसी की तुलना कर सकते हैं कि कौन सा भविष्यवक्ता सबसे अच्छा है। (वे इस मामले में नेस्टेड नहीं हैं, इसलिए आप 'χ2 आंकड़ा।)

यदि आपकी विशेषताएं निर्भर चर हैं, तो आपको वैसे भी विभिन्न मॉडलों की गणना करनी होगी, और फिर आप परिणामों की तुलना करने के लिए एआईसी और बीआईसी का उपयोग कर सकते हैं।


विस्तृत प्रतिक्रिया के लिए धन्यवाद! मैंने दिए गए कुछ संदर्भों को पढ़ा है, लेकिन दूसरों पर एक नज़र जरूर डालूंगा। जितना मैं पी-वैल्यू की बुराई को समझता हूं, समीक्षक दुर्भाग्य से अक्सर सोचते हैं (कम से कम अब के लिए)। जैसा कि बेट्स द्वारा सिफारिश की गई है, मैं mcmc नमूने का उपयोग कर रहा हूं, जो कि मेरी समझ से समस्या का हिस्सा है (यानी कि एक lmer मॉडल के लिए स्वतंत्रता की डिग्री का सही अनुमान लगाना संभव नहीं है)। विशेषताएँ एक हैं DV, मैं स्पष्ट करने के लिए कुछ और जानकारी जोड़ूंगा।
ダ ボ ー
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.