R
Poisson GLM 如何處理非計數數據(速率數據)?[複製]
我的問題是相關的,但與以下問題不同: 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