带有身份链接的 OLS 与 Poisson GLM

机器算法验证 广义线性模型 泊松分布 链接功能
2022-03-21 05:34:16

我的问题总体上表明我对泊松回归和 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.gauss <- glm(y~x, family=gaussian(link="identity"), 
                  maxit=500)
summary(mdl.gauss)
pred.gauss = predict(mdl.gauss)

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

#### 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, lwd=2, col="green")
lines(x, pred.gauss, col="black", lty="dotted", lwd=1.5)
lines(x, pred.poi_log, col="red")
lines(x, pred.poi_id, col="blue")

legend("topleft", bty="n", title="Model:",
    legend=c("pred.ols", "pred.gauss", "pred.poi_log", 
             "pred.poi_id"),
    lty=c("solid", "dotted", "solid", "solid"),
    col=c("green", "black", "red", "blue"),
    lwd=c(2,1.5,1,1)
    )

四种不同模型的预测图

我有两个问题:

  1. 看来,OLS 和具有恒等链接的高斯 GLM 得出的系数和预测完全相同。这总是正确的吗?

  2. 我很惊讶 OLS 估计和预测与带有身份链接的 Poisson GLM 非常不同。我认为这两种方法都会尝试估计 E(Y|X)。当我使用 Poisson 的恒等链接时,似然函数是什么样的?

1个回答
  1. 是的,它们是一样的。高斯的 MLE 是最小二乘法,因此当您使用身份链接执行高斯 GLM 时,您正在执行 OLS。

  2. a) “我认为这两种方法都会尝试估计 E(Y|X)

    确实如此,但将条件期望估计为数据函数的方式并不相同。即使我们忽略分布(以及因此数据如何进入似然性)并仅根据均值和方差来考虑 GLM(好像它只是一个加权回归),泊松的方差随着均值的增加而增加,所以观察的相对权重会有所不同。

    b) “当我使用 Poisson 的恒等链接时,似然函数是什么样的?

    L(β0,β1)=ieλiλiyi/yi!

    =exp(iλi+yilog(λi)log(yi!))其中λi=β0+β1xi

    =exp(i(β0+β1xi)+yilog(β0+β1xi)log(yi!))