R

Poisson GLM 如何處理非計數數據(速率數據)?[複製]

  • August 20, 2015

我的問題是相關的,但與以下問題不同: Fitting a Poisson GLM in R - questions with rates vs. counts

下面是一些假數據:

### some fake data
x=c(1:14)
y=c(0,  1,  2,  3,  1,  4,  9, 18, 23, 31, 20, 25, 37, 45)
y_rate <- y / 1000

我將使用帶有日誌鏈接的 Poisson GLM 來預測y_rate

### model
pois_mdl <- glm(y_rate ~ x, family=poisson(link="log"))
summary(pois_mdl)

繪製擬合:

### plot
plot(x, y_rate)
lines(x, pois_mdl$fitted.values)

我很驚訝泊松glm()允許因變量中的非整數值。泊松分佈的繪製始終是整數(無論均值參數的值如何)。為什麼不glm()炸?

不知道為什麼glm()不炸。要弄清楚這一點,您必須解壓縮所有底層代碼。(此外,如果您唯一的問題是 R 代碼是如何工作的,那麼這個問題在此處是題外話。)

我能說的是你沒有正確地模擬費率。如果要對rate而不是counts建模,則需要在模型的公式中包含偏移量。(關於偏移量的CV有一個很好的討論:何時在泊松回歸中使用偏移量?)使用您的示例,代碼將是:

pois_mdl2 <- glm(y~x+offset(log(rep(1000,14))), family=poisson(link="log"))

請注意,儘管係數估計值相同,但標準誤卻大不相同:

summary(pois_mdl2)$coefficients
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -6.5681214 0.25118701 -26.14833 1.029521e-150
# x 0.2565236 0.02203911 11.63947 2.596237e-31
summary(pois_mdl)$coefficients
# Estimate Std. Error z value Pr(>|z|)
# (Intercept) -6.5681214 7.9431516 -0.8268911 0.4082988
# x 0.2565236 0.6969324 0.3680753 0.7128171

引用自:https://stats.stackexchange.com/questions/167964

comments powered by Disqus