प्रभाव पैकेज के माध्यम से लैमर ऑब्जेक्ट्स के लिए विश्वास अंतराल कितने विश्वसनीय हैं?


36

Effectsपैकेज के लिए एक बहुत तेज और सुविधाजनक तरीका प्रदान मिश्रित प्रभाव मॉडल परिणाम रैखिक साजिश रचने के माध्यम से प्राप्त lme4पैकेजeffectसमारोह गणना विश्वास के अंतराल (सीआईएस) बहुत जल्दी है, लेकिन कैसे भरोसेमंद इन विश्वास के अंतराल कर रहे हैं?

उदाहरण के लिए:

library(lme4)
library(effects)
library(ggplot)

data(Pastes)

fm1  <- lmer(strength ~ batch + (1 | cask), Pastes)
effs <- as.data.frame(effect(c("batch"), fm1))
ggplot(effs, aes(x = batch, y = fit, ymin = lower, ymax = upper)) + 
  geom_rect(xmax = Inf, xmin = -Inf, ymin = effs[effs$batch == "A", "lower"],
        ymax = effs[effs$batch == "A", "upper"], alpha = 0.5, fill = "grey") +
  geom_errorbar(width = 0.2) + geom_point() + theme_bw()

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

effectsपैकेज का उपयोग करके गणना की गई CI के अनुसार , बैच "E" बैच "A" के साथ ओवरलैप नहीं होता है।

यदि मैं confint.merModफ़ंक्शन और डिफ़ॉल्ट विधि का उपयोग करके समान कोशिश करता हूं :

a <- fixef(fm1)
b <- confint(fm1)
# Computing profile confidence intervals ...
# There were 26 warnings (use warnings() to see them)

b <- data.frame(b)
b <- b[-1:-2,]

b1 <- b[[1]]
b2 <- b[[2]]

dt <- data.frame(fit   = c(a[1],  a[1] + a[2:length(a)]), 
                 lower = c(b1[1],  b1[1] + b1[2:length(b1)]), 
                 upper = c(b2[1],  b2[1] + b2[2:length(b2)]) )
dt$batch <- LETTERS[1:nrow(dt)]

ggplot(dt, aes(x = batch, y = fit, ymin = lower, ymax = upper)) +
  geom_rect(xmax = Inf, xmin = -Inf, ymin = dt[dt$batch == "A", "lower"], 
        ymax = dt[dt$batch == "A", "upper"], alpha = 0.5, fill = "grey") + 
  geom_errorbar(width = 0.2) + geom_point() + theme_bw()

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

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

मैंने क्या प्रयास किया है: स्रोत कोड को देखते हुए, मैंने देखा कि effectफ़ंक्शन फ़ंक्शन पर निर्भर करता Effect.merModहै, जो बदले में Effect.merफ़ंक्शन को निर्देशित करता है, जो इस प्रकार है:

effects:::Effect.mer
function (focal.predictors, mod, ...) 
{
    result <- Effect(focal.predictors, mer.to.glm(mod), ...)
    result$formula <- as.formula(formula(mod))
    result
}
<environment: namespace:effects>

mer.to.glmसमारोह से वियरेन्स-कोवरिएट मैट्रिक्स की गणना करने के लिए लगता है lmer:

effects:::mer.to.glm

function (mod) 
{
...
mod2$vcov <- as.matrix(vcov(mod))
...
mod2
}

यह, बदले में, संभवतः Effect.defaultCI की गणना करने के लिए फ़ंक्शन में उपयोग किया जाता है (मुझे इस भाग को गलत समझा जा सकता है):

effects:::Effect.default
...
     z <- qnorm(1 - (1 - confidence.level)/2)
        V <- vcov.(mod)
        eff.vcov <- mod.matrix %*% V %*% t(mod.matrix)
        rownames(eff.vcov) <- colnames(eff.vcov) <- NULL
        var <- diag(eff.vcov)
        result$vcov <- eff.vcov
        result$se <- sqrt(var)
        result$lower <- effect - z * result$se
        result$upper <- effect + z * result$se
...

मैं LMMs के बारे में न्याय करने के लिए पर्याप्त नहीं जानता कि क्या यह एक सही दृष्टिकोण है, लेकिन LMMs के लिए विश्वास अंतराल गणना के आसपास की चर्चा को देखते हुए, यह दृष्टिकोण संदिग्ध रूप से सरल प्रतीत होता है।


1
जब आपके पास कोड की लंबी लाइनें होती हैं, तो अगर आप उन्हें कई लाइनों में तोड़ते हैं, तो मैं इसकी बहुत सराहना करूंगा ताकि हमें यह सब देखने के लिए स्क्रॉल न करना पड़े।
rvl

1
@rvl कोड अब अधिक पठनीय होना चाहिए।
मिको

जवाबों:


52

सभी परिणाम अनिवार्य रूप से समान हैं ( इस विशेष उदाहरण के लिए )। कुछ सैद्धांतिक अंतर हैं:

  • जैसा कि @rvl बताते हैं, मापदंडों के बीच सहसंयोजक का ध्यान रखे बिना CI का आपका पुनर्निर्माण सिर्फ गलत है (क्षमा करें)
  • मापदंडों के लिए विश्वास के अंतराल वाल्ड विश्वास के अंतराल के आधार पर किया जा सकता है (एक द्विघात लॉग-संभावना सतह कल्पना करते हुए): lsmeans, effects, confint(.,method="Wald"), lsmeansइन तरीकों को छोड़कर , परिमित आकार के प्रभावों ("स्वतंत्रता की डिग्री") को अनदेखा करते हैं, लेकिन इस मामले में यह मुश्किल से कोई फर्क नहीं पड़ता है ( df=40व्यावहारिक रूप से अनंत से अप्रभेद्य है df)
  • ... या प्रोफ़ाइल आत्मविश्वास अंतराल पर (डिफ़ॉल्ट विधि, परिमित आकार के प्रभावों की उपेक्षा करता है लेकिन गैर-द्विघात सतहों के लिए अनुमति देता है)
  • ... या पैरामीट्रिक बूटस्ट्रैपिंग पर (सोने का मानक - मान लेता है कि मॉडल सही है [प्रतिक्रियाएं सामान्य हैं, यादृच्छिक प्रभाव सामान्य रूप से वितरित किए जाते हैं, डेटा सशर्त रूप से स्वतंत्र हैं, आदि], लेकिन अन्यथा कुछ धारणाएं बनाते हैं)

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

(पुनश्च: मैं इस तथ्य पर बहुत अधिक भार नहीं डालूंगा कि आत्मविश्वास अंतराल Aऔर Eओवरलैप नहीं है। आपको अनुमानों की इस विशेष जोड़ी के बीच अंतर के बारे में विश्वसनीय अनुमान लगाने के लिए एक उचित जोड़ीदार तुलना प्रक्रिया करनी होगी । ..)

95% सीआई:

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

तुलना कोड:

library(lme4)
fm2 <- lmer(strength ~ batch - 1 + (1 | cask), Pastes)
c0 <- confint(fm2,method="Wald")
c1 <- confint(fm2)
c2 <- confint(fm2,method="boot")
library(effects)
library(lsmeans)
c3 <- with(effect("batch",fm2),cbind(lower,upper))
c4 <- with(summary(lsmeans(fm2,spec="batch")),cbind(lower.CL,upper.CL))
tmpf <- function(method,val) {
    data.frame(method=method,
               v=LETTERS[1:10],
               setNames(as.data.frame(tail(val,10)),
                        c("lwr","upr")))
}
library(ggplot2); theme_set(theme_bw())
allCI <- rbind(tmpf("lme4_wald",c0),
      tmpf("lme4_prof",c1),
      tmpf("lme4_boot",c2),
      tmpf("effects",c3),
               tmpf("lsmeans",c4))
ggplot(allCI,aes(v,ymin=lwr,ymax=upr,colour=method))+
    geom_linerange(position=position_dodge(width=0.8))

ggsave("pastes_confint.png",width=10)

2
मैं इस उत्तर को स्वीकार करता हूं क्योंकि यह बिंदु के लिए सही है और विभिन्न तरीकों के बीच एक अच्छी तुलना देता है। हालाँकि, अधिक जानकारी के लिए rlv का उत्कृष्ट उत्तर देखें।
मिकको

उत्कृष्ट और बहुत उपयोगी उत्तर के लिए धन्यवाद। क्या मैं सही ढंग से समझता हूं कि कोई समूह / बैचों की तुलना करने के लिए CI का उपयोग नहीं कर सकता है, लेकिन प्रभावों की तुलना करना संभव है। कहो कि मेरे पास दो उपचार, कई व्यक्ति और व्यक्तियों के भीतर कई माप थे। मैं व्यक्तियों को यादृच्छिक प्रभाव के रूप में उपयोग करूँगा क्योंकि उनमें से प्रत्येक में x माप शामिल होंगे। तब मैंने जानना चाहा कि क्या इन दोनों उपचारों के परिणामस्वरूप अलग प्रतिक्रिया हुई है। क्या मैं effectsइस मामले में पैकेज और CI ओवरलैप का उपयोग कर सकता हूं ?
मिको

5
यह एक अधिक सामान्य प्रश्न है जो किसी भी मानक मॉडल-आधारित दृष्टिकोण के लिए प्रासंगिक है। एक अलग प्रश्न के लायक हो सकता है। (1) सामान्य तौर पर जिस तरह से उपचारों के बीच अंतर के बारे में एक सवाल का जवाब होता है वह है मॉडल को स्थापित करना ताकि फोकल उपचारों के बीच का अंतर मॉडल में एक विपरीत (यानी, एक अनुमानित पैरामीटर) हो और फिर एक पी-मान की गणना की जा सके। या जांचें कि क्या किसी विशेष अल्फा-स्तर पर विश्वास अंतराल शून्य को शामिल करता है। (जारी)
बेन बोल्कर

4
(2) सीआई को ओवरलैप करना सबसे अच्छा एक रूढ़िवादी है, और अनुमानित, मापदंडों के बीच अंतर के लिए मानदंड (इस विषय पर कई प्रकाशित पत्र हैं)। (३) युग्मक तुलनाओं के साथ एक अलग / ऑर्थोगोनल मुद्दा है, जो यह है कि किसी को तुलनाओं की बहुलता और गैर-स्वतंत्रता के लिए उचित रूप से नियंत्रित करना है (यह किया जा सकता है, उदाहरण के लिए multcompपैकेज में तरीकों से , लेकिन इसके लिए कम से कम आवश्यकता होती है) थोड़ी देखभाल)
बेन बोल्कर

1
किस लिए? आप एक नया प्रश्न पूछना चाहते हैं।
बेन बोल्कर

20

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

एक अवरोधन के बिना मॉडल को फिट करने का प्रयास करें, ताकि batchप्रभाव वास्तव में भविष्यवाणियां हों, और confintआपको आवश्यक अंतराल वापस मिल जाएगी।

परिशिष्ट 1

मैंने ठीक वही किया जो मैंने ऊपर सुझाया था:

> fm2 <- lmer(strength ~ batch - 1 + (1 | cask), Pastes)
> confint(fm2)
Computing profile confidence intervals ...
           2.5 %    97.5 %
.sig01  0.000000  1.637468
.sigma  2.086385  3.007380
batchA 60.234772 64.298581
batchB 57.268105 61.331915
batchC 60.018105 64.081915
batchD 57.668105 61.731915
batchE 53.868105 57.931915
batchF 59.001439 63.065248
batchG 57.868105 61.931915
batchH 61.084772 65.148581
batchI 56.651439 60.715248
batchJ 56.551439 60.615248

इन अंतरालों से परिणामों के साथ झटके लगते हैं effects

परिशिष्ट २

एक अन्य विकल्प है lsmeans पैकेज। यह स्वतंत्रता की डिग्री और pbkrtest पैकेज से एक समायोजित सहसंयोजक मैट्रिक्स प्राप्त करता है।

> library("lsmeans")
> lsmeans(fm1, "batch")
Loading required namespace: pbkrtest
 batch   lsmean       SE    df lower.CL upper.CL
 A     62.26667 1.125709 40.45 59.99232 64.54101
 B     59.30000 1.125709 40.45 57.02565 61.57435
 C     62.05000 1.125709 40.45 59.77565 64.32435
 D     59.70000 1.125709 40.45 57.42565 61.97435
 E     55.90000 1.125709 40.45 53.62565 58.17435
 F     61.03333 1.125709 40.45 58.75899 63.30768
 G     59.90000 1.125709 40.45 57.62565 62.17435
 H     63.11667 1.125709 40.45 60.84232 65.39101
 I     58.68333 1.125709 40.45 56.40899 60.95768
 J     58.58333 1.125709 40.45 56.30899 60.85768

Confidence level used: 0.95 

effecteffectconfint±1.96×se

परिणाम समान हैं effectऔर lsmeansसमान हैं, लेकिन एक असंतुलित बहु-कारक स्थिति के lsmeansसाथ, समान वजन के साथ अप्रयुक्त कारकों पर डिफ़ॉल्ट औसत से, जबकि effectमनाया आवृत्तियों द्वारा भार (एक विकल्प के रूप में उपलब्ध है lsmeans)।


इस समाधान के लिए धन्यवाद। अंतराल अब अधिक समान हैं, हालांकि बिल्कुल समान नहीं हैं। आपका जवाब अभी भी इस सवाल का जवाब नहीं देता है कि क्या effectsपैकेज से सीआई को lmerवस्तुओं के लिए भरोसा किया जा सकता है । मैं एक प्रकाशन में परिणामों का उपयोग करने पर विचार कर रहा हूं और यह सुनिश्चित करना चाहता हूं कि LMMs के लिए अनुमोदित पद्धति का उपयोग करके CI की गणना की जाए।
मिको

क्या आप कृपया बताएंगे: आपके परिशिष्ट 1 में पहले दो पैरामीटर हैं .sig01और इसके .sigmaद्वारा उत्पादन किया जाता है confint, क्या वे विचरण के लिए विश्वास अंतराल हैं ? या मानक विचलन का विश्वास अंतराल ?
ABC

वे उस तरह के लिए सीआई हैं, जो मॉडल में उस तरह से लेबल किए गए हैं। आपको lmerएक निश्चित उत्तर के लिए दस्तावेज को देखना चाहिए । हालांकि, आमतौर पर लोग sigmaमानक विचलन को संदर्भित करने के लिए sigma.squareया वैरिएशन को संदर्भित करने के लिए नोटेशन का उपयोग करते हैं sigma^2
rvl

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