Generalized-Linear-Model
帶有身份鏈接的 OLS 與 Poisson GLM
我的問題總體上表明我對泊松回歸和 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")
我有兩個問題:
- 看來,OLS 和具有恆等鏈接的高斯 GLM 得出的係數和預測完全相同。這總是正確的嗎?
- 我很驚訝 OLS 估計和預測與帶有身份鏈接的 Poisson GLM 非常不同。我認為這兩種方法都會嘗試估計 E(Y|X)。當我使用 Poisson 的恆等鏈接時,似然函數是什麼樣的?
- 是的,它們是一樣的。高斯的 MLE 是最小二乘法,因此當您使用身份鏈接執行高斯 GLM 時,您正在執行 OLS。
- a) “我認為這兩種方法都會嘗試估計 E(Y|X) ”
確實如此,但將條件期望估計為數據函數的方式並不相同。即使我們忽略分佈(以及因此數據如何進入可能性)並僅根據均值和方差來考慮 GLM(好像它只是一個加權回歸),泊鬆的方差隨著均值的增加而增加,所以觀察的相對權重會有所不同。
b) “當我使用 Poisson 的恆等鏈接時,似然函數是什麼樣的? ”
在哪裡