कैसे lme4 (> 1.0) के साथ लगे एक द्विपद GLMM के फिट का आकलन करें?


19

मेरे पास एक द्विपद वितरण और एक लॉगिट लिंक फ़ंक्शन के साथ GLMM है और मुझे लगता है कि मॉडल में डेटा का एक महत्वपूर्ण पहलू अच्छी तरह से प्रतिनिधित्व नहीं करता है।

इसका परीक्षण करने के लिए, मैं यह जानना चाहूंगा कि लॉगिट स्केल पर एक रैखिक फ़ंक्शन द्वारा डेटा का अच्छी तरह से वर्णन किया गया है या नहीं। इसलिए, मैं जानना चाहूंगा कि क्या अवशेषों का व्यवहार अच्छा है। हालांकि, मुझे यह पता नहीं चल सका है कि किस अवशेष पर साजिश रची जाए और किस तरह से साजिश की व्याख्या की जाए।

ध्यान दें कि मैं lme4 के नए संस्करण ( GitHub से विकास संस्करण ) का उपयोग कर रहा हूं :

packageVersion("lme4")
## [1] ‘1.1.0’

मेरा सवाल यह है: मैं एक लॉगइन लिंक फ़ंक्शन के साथ एक द्विपद सामान्यीकृत रैखिक मिश्रित मॉडल के अवशेषों का निरीक्षण और व्याख्या कैसे करूं?

निम्न डेटा मेरे वास्तविक डेटा का केवल 17% दर्शाता है, लेकिन फिटिंग में पहले से ही मेरी मशीन पर लगभग 30 सेकंड लगते हैं, इसलिए मैं इसे इस तरह से छोड़ता हूं:

require(lme4)
options(contrasts=c('contr.sum', 'contr.poly'))

dat <- read.table("http://pastebin.com/raw.php?i=vRy66Bif")
dat$V1 <- factor(dat$V1)

m1 <- glmer(true ~ distance*(consequent+direction+dist)^2 + (direction+dist|V1), dat, family = binomial)

सबसे सरल कथानक ( ?plot.merMod) निम्नलिखित उत्पन्न करता है:

plot(m1)

यहाँ छवि विवरण दर्ज करें

क्या यह मुझे पहले से ही कुछ बताता है?


1
मुझे वापस आने और इस पर एक दरार लेने का समय मिल सकता है , लेकिन मुझे लगता है कि सामान्य उत्तर यह है कि द्विआधारी मॉडल से अवशेषों के साथ एक बड़ा सौदा करना मुश्किल है। मेरा मुख्य खोज अब तक भूखंड आप ऊपर है पर थोड़ा पर उसे ज़ूम, और एक सरल रेखा जोड़ने से (का उपयोग कर type=c("p","smooth")में plot.merMod, या में जाने ggplotयदि आप विश्वास के अंतराल चाहते हैं) कि ऐसा लगता है एक छोटी लेकिन महत्वपूर्ण पैटर्न वहाँ की तरह यह है कि आप जो एक अलग लिंक फ़ंक्शन को अपनाने से ठीक करने में सक्षम हो सकता है। यह अब तक है ...
बेन बोल्कर

@BenBolker धन्यवाद। और क्या आप इस और लिंक को फ्रीकॉनॉमिक्स की कड़ी के रूप में सवाल के जवाब के रूप में पोस्ट नहीं कर सकते? तब कम से कम आपको 150 अंक मिलते।
हेनरिक

3
मुझे यह CV धागा, बहुत उपयोगी होने के लिए , आँकड़े.स्टैकएक्सचेंज.com / questions / 63566 /… मिला । पोस्ट में बताया गया है कि कैसे आर
नोवा

@ हेनरिक क्या आप मुझे बताएंगे कि मॉडल कैसे काम करता है true ~ distance*(consequent+direction+dist)^2 + (direction+dist|V1)? विल के बीच बातचीत का मॉडल दे अनुमान distance*consequent, distance*direction, distance*distऔर की ढलान directionऔर dist साथ कि भिन्न V1? क्या वर्ग (consequent+direction+dist)^2निरूपित करता है?
ABC

@ हेनरिक मैंने आपका कोड चलाया और यह दिखाता है Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.123941 (tol = 0.001, component 1)। क्यों ?
ABC

जवाबों:


18

लघु उत्तर के बाद से मेरे पास बेहतर के लिए समय नहीं है: यह एक चुनौतीपूर्ण समस्या है; बाइनरी डेटा को फिट की अच्छाई का आकलन करने के लिए लगभग हमेशा किसी न किसी तरह के बाइनिंग या स्मूथिंग की आवश्यकता होती है। आप के साथ संयोजन के रूप में और विशेष रूप से अनिवार्य रूप से उसी अवशिष्ट-बनाम-फिट साजिश को खींचने के लिए fortify.lmerMod(से lme4, प्रयोगात्मक) का उपयोग करना कुछ हद तक मददगार था , लेकिन आत्मविश्वास अंतराल के साथ (मैंने भी ज़ूम इन करने के लिए थोड़ी सी सीमा को सीमित कर दिया) -5,5) क्षेत्र)। यह सुझाव दिया गया कि कुछ व्यवस्थित भिन्नता है जिसे लिंक फ़ंक्शन को ट्विक करके बेहतर बनाया जा सकता है। (मैंने अन्य भविष्यवक्ताओं के खिलाफ अवशिष्ट की साजिश रचने की भी कोशिश की, लेकिन यह बहुत उपयोगी नहीं था।)ggplot2geom_smooth()

मैंने सभी 3-वे इंटरैक्शन के साथ मॉडल को फिट करने की कोशिश की, लेकिन यह या तो विचलन में या चिकने अवशिष्ट वक्र के आकार में सुधार नहीं था।

तब मैं फार्म के उलटा-लिंक कार्यों की कोशिश करने जानवर बल के इस बिट के लिए इस्तेमाल किया , के लिए 0.5 से 2.0 से लेकर:(तार्किक(एक्स))λλ

## uses (fragile) internal C calls for speed; could use plogis(),
##  qlogis() for readability and stability instead
logitpower <- function(lambda) {
    L <- list(linkfun=function(mu)
              .Call(stats:::C_logit_link,mu^(1/lambda),PACKAGE="stats"),
              linkinv=function(eta)
              .Call(stats:::C_logit_linkinv,eta,PACKAGE="stats")^lambda,
              mu.eta=function(eta) {
                  mu <-  .Call(stats:::C_logit_linkinv,eta,PACKAGE="stats")
                  mu.eta <-  .Call(stats:::C_logit_mu_eta,eta,PACKAGE="stats")
                  lambda*mu^(lambda-1)*mu.eta
              },
              valideta = function(eta) TRUE ,
              name=paste0("logit-power(",lambda,")"))
    class(L) <- "link-glm"
    L
}

मैंने पाया कि मूल मॉडल की तुलना में 0.75 का थोड़ा बेहतर था , हालांकि महत्वपूर्ण रूप से ऐसा नहीं है - मैं डेटा की अधिकता कर रहा हूं।λ

इसे भी देखें: http://freakonometrics.hypotheses.org/8210


3

यह बायोस्टैटिस्टिक्स / महामारी विज्ञान पाठ्यक्रमों पर बहुत ही सामान्य विषय है, और इसके लिए बहुत अच्छे समाधान नहीं हैं, मूल रूप से मॉडल की प्रकृति के कारण। अक्सर समाधान अवशेषों का उपयोग करते हुए विस्तृत निदान से बचने के लिए किया गया है।

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


-1

आप मॉडल के फिट की जाँच करने के लिए अवशिष्ट भूखंडों के बजाय एआईसी का उपयोग कर सकते हैं। R: AIC (model1) में कमांड यह आपको एक नंबर देगा ... तो फिर आपको इसकी तुलना दूसरे मॉडल (उदाहरण के लिए और अधिक भविष्यवाणियों के साथ) करने की आवश्यकता है - AIC (model2), जो एक और नंबर प्राप्त करेगा। दो आउटपुट की तुलना करें, और आप निम्न एआईसी मान के साथ मॉडल चाहते हैं।

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


3
यह अधिक उपयोगी होगा यदि ओपी प्रतिस्पर्धी मॉडलों की तुलना करने की कोशिश कर रहा था, लेकिन ऐसा नहीं लगता है कि वे ऐसा करने की कोशिश कर रहे हैं, और एआईसी का उपयोग पूर्ण मॉडल फिट का मूल्यांकन करने के लिए नहीं किया जा सकता है।
पैट्रिक कूलोम्बे

-3

फिटेड बनाम रेजीड्यूल्स प्लॉट को कोई (स्पष्ट) पैटर्न नहीं दिखाना चाहिए। साजिश से पता चलता है कि मॉडल डेटा के साथ अच्छी तरह से काम नहीं करता है। देखें http://www.r-bloggers.com/model-validation-interpreting-residual-plots/


1
मुझे लगता है कि आप गलत हैं, एक निश्चित पैटर्न लिंक फ़ंक्शन द्वारा भविष्यवाणी की गई है: आंकड़े.stackexchange.com/q/25068/442
हेनरिक

1
संभवत: उपयोगी: freakonometrics.hypotheses.org/8210
बेन बोल्कर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.