제 질문은 기술적 성격 일 수 있습니다. 저는 노출을 통제하기 위해 인구 (p)를 오프셋으로 사용하여 질병 수 (d)를 모델링하려고합니다. R에서 두 가지 가능한 방법을 찾았습니다.
m1 -> glm(d ~ 1 + offset(log(n)), family=poisson, data=dat)
m2 -> glm(d ~ 1, family=poisson, data=dat, offset=log(n))
m1과 m2의 요약은 summary(m1)
= summary(m2)
이지만 pR2
(pscl 패키지)를 통해 McFadden을 계산하려고하면 McFadden(m1)
≠ McFadden(m2)
.
누군가 그것에 대한 설명이 있습니까?
다음은 소스 코드입니다 pscl:::pR2.glm
.
function (object, ...)
{
llh <- logLik(object)
objectNull <- update(object, ~1)
llhNull <- logLik(objectNull)
n <- dim(object$model)[1]
pR2Work(llh, llhNull, n)
}
<environment: namespace:pscl>
오프셋이 공식에 지정된 경우 두 번째 줄에서 손실됩니다 ( update
절편 전용 모델을 계산하기 위해).
이 예를 참조하십시오.
library("foreign")
ceb <- read.dta("http://data.princeton.edu/wws509/datasets/ceb.dta")
ceb$y <- round(ceb$mean*ceb$n, 0)
ceb$os <- log(ceb$n)
m0 <- glm(y ~ res + offset(os), data=ceb, family=poisson)
m1 <- glm(y ~ res, offset=os, data=ceb, family=poisson)
all.equal(coef(m0), coef(m1))
# [1] TRUE
### compute null models
coef(update(m0, ~1)) # wrong, offset not considered
# (Intercept)
# 5.02
coef(update(m1, ~1))
# (Intercept)
# 1.376
coef(update(m0, ~1, offset=os))
# (Intercept)
# 1.376
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다