मैं मॉडल फिट की तुलना करने के लिए आर में संभावना अनुपात परीक्षण करने के तरीकों की तलाश कर रहा था। मैंने पहले इसे स्वयं कोडित किया, फिर डिफ़ॉल्ट anova()
फ़ंक्शन और पैकेज lrtest()
में भी पाया lmtest
। जब मैंने जाँच की, हालांकि, anova()
हमेशा अन्य दो से थोड़ा अलग पी-मूल्य पैदा करता है , भले ही 'परीक्षण' पैरामीटर "एलआरटी" पर सेट हो। क्या anova()
वास्तव में कुछ अलग तरह का टेस्ट हो रहा है, या मैं कुछ समझ नहीं रहा हूं?
प्लेटफ़ॉर्म: R 3.2.0 लिनक्स मिंट 17, lmtest
संस्करण 0.9-33 पर चल रहा है
नमूना कोड:
set.seed(1) # Reproducibility
n=1000
y = runif(n, min=-1, max=1)
a = factor(sample(1:5, size=n, replace=T))
b = runif(n)
# Make y dependent on the other two variables
y = y + b * 0.1 + ifelse(a==1, 0.25, 0)
mydata = data.frame(y,a,b)
# Models
base = lm(y ~ a, data=mydata)
full = lm(y ~ a + b, data=mydata)
# Anova
anova(base, full, test="LRT")
# lrtest
library(lmtest)
lrtest(base, full)
# Homebrew log-likelihood test
like.diff = logLik(full) - logLik(base)
df.diff = base$df.residual - full$df.residual
pchisq(as.numeric(like.diff) * 2, df=df.diff, lower.tail=F)
जब मैं इसे anova()
चलाता हूं, तो 0.6071 का पी-मूल्य देता है, जबकि अन्य दो 0.60599 देते हैं। एक छोटा सा अंतर, लेकिन सुसंगत, और बहुत बड़ा होने के लिए कैसे अस्थायी बिंदु संख्याओं में संग्रहित किया जाता है। क्या कोई समझा सकता है कि anova()
अलग जवाब क्यों देता है?