모형 적합을 비교하기 위해 R에서 우도 비 검정을 수행하는 방법을 찾고있었습니다. 내가 먼저 나 자신을 코딩, 디폴트 모두 발견 anova()
기능도 lrtest()
에 lmtest
패키지로 제공된다. 그러나 검사 할 때 anova()
'test'매개 변수가 "LRT"로 설정되어 있어도 항상 다른 두 값과 약간 다른 p- 값이 생성됩니다. anova()
실제로 미묘하게 다른 테스트를 수행하고 있습니까 , 아니면 무언가를 이해하지 못합니까?
플랫폼 : Linux Mint 17, lmtest
버전 0.9-33 에서 실행되는 R 3.2.0
샘플 코드 :
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()
p- 값은 0.6071을 제공하는 반면 다른 두 값은 0.60599를 제공합니다. 작은 차이는 있지만 일관되며 부동 소수점 숫자를 저장하는 방법에있어 부정확하기에는 너무 큽니다. 왜 anova()
다른 대답을 하는지 설명 할 수 있습니까 ?