Benim sorum Poisson regresyonunu ve genel olarak GLM'leri iyi anlamadığımı ortaya koyuyor. Sorumu açıklamak için bazı sahte veriler:
### 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'yi döndürmek için bazı özel işlevler:
### 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)}
Dört modele uyun: OLS, kimlik bağlantılı Gauss GLM, günlük bağlantılı Poisson GLM, kimlik bağlantılı 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)
Son olarak tahminleri çizin:
#### 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")
2 sorum var:
OLS ve Gaussian GLM'den kimlik bağlantılı çıkan katsayılar ve tahminler tamamen aynı görünüyor. Bu her zaman doğru mu?
OLS tahminlerinin ve tahminlerinin kimlik bağlantılı Poisson GLM'den çok farklı olduğuna çok şaşırdım . Her iki yöntemin de E (Y | X) tahmin etmeye çalışacağını düşündüm. Poisson için kimlik bağlantısını kullandığımda olasılık işlevi neye benziyor?