Generalized-Linear-Model

帶有身份鏈接的 OLS 與 Poisson GLM

  • August 18, 2015

我的問題總體上表明我對泊松回歸和 GLM 的理解很差。這裡有一些假數據來說明我的問題:

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

一些返回偽 R2 的自定義函數:

### functions of pseudo-R2

psuR2 <- function(null.dev, model.dev) { 1 - (model.dev / null.dev)}

predR2 <- function(actuals, predicted) { 1 - (sum((actuals - predicted)^2)) / sum((actuals - mean(actuals))^2)}

擬合四個模型:OLS、帶恆等鏈接的高斯 GLM、帶對數鏈路的泊松 GLM、帶恆等鏈路的泊松 GLM

#### OLS MODEL
mdl.ols=lm(y~x)
summary(mdl.ols)
pred.ols = predict(mdl.ols)

summary(mdl.ols)$r.squared
predR2(y, pred.ols)

#### GLM MODEL, family=gaussian(link="identity")
mdl.guass <- glm(y~x, family=gaussian(link="identity"), maxit=500)
summary(mdl.guass)
pred.guass = predict(mdl.guass)

psuR2(mdl.guass$null.deviance, mdl.guass$deviance)
predR2(y, pred.guass)

#### GLM MODEL, family=possion (canonical link)
mdl.poi_log <- glm(y~x, family=poisson(link="log"), maxit=500)
summary(mdl.poi_log)
pred.poi_log= exp(predict(mdl.poi_log))  #transform

psuR2(mdl.poi_log$null.deviance, mdl.poi_log$deviance)
predR2(y, pred.poi_log)

#### GLM MODEL, family=poisson((link="identity")
mdl.poi_id <- glm(y~x, family=poisson(link="identity"), start=c(0.5,0.5), maxit=500)
summary(mdl.poi_id)
pred.poi_id = predict(mdl.poi_id)

psuR2(mdl.poi_id$null.deviance, mdl.poi_id$deviance)
predR2(y, pred.poi_id)

最後繪製預測:

#### Plot the Fit
plot(x, y) 
lines(x, pred.ols)
lines(x, pred.guass, col="green")
lines(x,pred.poi_log, col="red")
lines(x,pred.poi_id, col="blue")

我有兩個問題:

  1. 看來,OLS 和具有恆等鏈接的高斯 GLM 得出的係數和預測完全相同。這總是正確的嗎?
  2. 我很驚訝 OLS 估計和預測與帶有身份鏈接的 Poisson GLM 非常不同。我認為這兩種方法都會嘗試估計 E(Y|X)。當我使用 Poisson 的恆等鏈接時,似然函數是什麼樣的?
  1. 是的,它們是一樣的。高斯的 MLE 是最小二乘法,因此當您使用身份鏈接執行高斯 GLM 時,您正在執行 OLS。
  2. a) “我認為這兩種方法都會嘗試估計 E(Y|X)

確實如此,但將條件期望估計為數據函數的方式並不相同。即使我們忽略分佈(以及因此數據如何進入可能性)並僅根據均值和方差來考慮 GLM(好像它只是一個加權回歸),泊鬆的方差隨著均值的增加而增加,所以觀察的相對權重會有所不同。

b) “當我使用 Poisson 的恆等鏈接時,似然函數是什麼樣的?

在哪裡

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

comments powered by Disqus