我的问题表明我对泊松回归和GLM总体上了解不足。以下是一些虚假数据来说明我的问题:
### some fake data
x=c(1:14)
y=c(0, 1, 2, 3, 1, 4, 9, 18, 23, 31, 20, 25, 37, 45)
一些返回psuedo-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,带日志链接的Poisson GLM,带身份链接的Poisson 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时,似然函数是什么样的?
相关: stats.stackexchange.com/questions/142338/...
—
的Kjetil b HALVORSEN
如果您想做最小二乘以近似具有身份链接的泊松模型,则还可以拟合加权最小二乘模型mdl.wols = lm(y〜x,weights = 1 / log(y + 1.00000000001)),其中对数然后将(y + 1.00000000001)作为方差的第一个估计值(sqrt(y + 1E-10))也可以工作-这样的模型的估计值将非常接近具有身份链接的Poisson GLM的估计值...
—
Tom Wenseleers