R에 포아송 GLM 피팅-비율 대 개수 문제


11

현재 시간이 지남에 따라 일부 카운트 데이터의 GLM (및 결국 GAM)과 관련된 프로젝트를 진행하고 있습니다. 일반적으로 SAS 에서이 작업을 수행하지만 R로 이동하려고하고 ... 문제가 있습니다.

다음을 사용하여 데이터를 계산하기 위해 GLM을 적합시킬 때 :

cdi_model <- glm(counts ~ exposure + covariate + month, data=test, family = poisson)

나는 얻다:

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9825  -0.7903  -0.1187   0.5717   1.7649  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  1.97563    0.20117   9.821  < 2e-16 ***
exposure     0.94528    0.30808   3.068  0.00215 ** 
covariate   -0.01317    0.28044  -0.047  0.96254    
months      -0.03203    0.01303  -2.458  0.01398 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 40.219  on 29  degrees of freedom
Residual deviance: 29.297  on 26  degrees of freedom
AIC: 137.7

Number of Fisher Scoring iterations: 5

이 시점에서 대부분 구문 등을 가지고 노는 모델 자체의 성능 또는 부족을 잠시 무시하십시오.

그러나 요율 데이터 (수 / 일)를 맞추려고 할 때 다음과 같이 오프셋을 사용하십시오. cdi_model <- glm(count_rate ~ exposure + covariate + months + offset(log(pd)), data=test, family = poisson)

"1 : dpois (y, mu, log = TRUE) : ​​정수가 아닌 x = 0.002082"등 50 개 이상의 경고가 표시됩니다. 각 관측치에 대해 둘 이상입니다 (데이터 세트에는 30 개만 있음).

또한, 모형 적합은 냄비에가는 것처럼 보입니다. 다음과 같이 출력하십시오 :

 Deviance Residuals: 
       Min          1Q      Median          3Q         Max  
-0.0273656  -0.0122169   0.0002396   0.0072269   0.0258643  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept) -15.40110   15.12772  -1.018    0.309
exposure      0.84848   22.18012   0.038    0.969
covariate    -0.02751   21.31262  -0.001    0.999
months       -0.01889    0.95977  -0.020    0.984

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 0.0068690  on 29  degrees of freedom
Residual deviance: 0.0054338  on 26  degrees of freedom
AIC: Inf

Number of Fisher Scoring iterations: 9

그럼에도 불구하고 실제 데이터에 대해 예측 속도를 플로팅하면 적합도가 그다지 나쁘지 않으며 실제 효과 추정치가 그다지 바뀌지 않는 것 같습니다.

누구나 무슨 일이 일어나고 있는지 또는 모든 것이 올바르게 진행되고 있고 경험이 없어서 뭔가를 놓친다면?

답변:


17

오프셋을 추가하면 속도를 계산할 필요도없고 노출도 포함하지 않아도됩니다.

이것이 오류의 원인인지 여부는 알 수 없지만 사례 당 노출이 person days pd인 경우 종속 변수는 다음 countslog(pd)같아야합니다.

cdi_model <- glm(counts ~ covariate + months + offset(log(pd)), 
                 data=test, family = poisson)

(+1) 때때로 역학자들이 독립적 인 관심 변수를 "노출"(예 : "담배 흡연에 대한 노출")이라고 부르는 것을 보았습니다. 그러나 좋은 캐치, 속도를 종속 변수로 사용해서는 안됩니다.
Andy W

나는 'months'변수가 노출의 길이라고 추측했을 것입니다. 그러나 원리는 같습니다.
아니 코

@Aniko 나는 우리가 곧 알게 될 것 같아요. 나는 비율을 생각하는 것이 합리적이라면 (counts/thing)로그 선형 모델이 거의 항상 있다고 생각했다 counts ~ ... + offset(log(thing)). 그리고 우리가 두 번째 추측하는 동안, 나는 또한 log(pd) == exposure...
켤레 이전

몇 가지를 명확히하기 위해 Andy W가 맞습니다. "노출"은 실제로 독립적 인 관심 변수입니다 (이 경우 정책 변경). 월은 데이터 추세에 대한 일부 제어를 허용하기 위해 "날짜 X 이후의 월"입니다.
Fomite

@ConjugatePrior 답변에서 모델을 사용할 때 모델의 출력이 속도에 맞지 않아야합니까? 그것을 실행하면 오프셋을 포함하더라도 모든 것을 원시 카운트로 내놓는 것처럼 보입니다. 아니면 내가 놓친 또 다른 단계가 있습니까?
Fomite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.