6. Modello di Regressione di Poisson con R Enrico Properzi -...

14
6. Modello di Regressione di Poisson con R Enrico Properzi - [email protected] A.A. 2010/2011

Transcript of 6. Modello di Regressione di Poisson con R Enrico Properzi -...

Page 1: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

6. Modello di Regressione di Poisson con R

Enrico Properzi - [email protected] A.A. 2010/2011

Page 2: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Se la variabile risposta è una variabile di conteggio (e può assumere solo valori interi) e segue la distribuzione di Poisson

e si vuole studiare la seguente relazione:

E(yi|xi) = λi = exp(xi’ß)

ossia la dipendenza di Yi da un insieme di variabili Xi (regressione di Poisson) si possono utilizzare i GLM

Page 3: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Caso di studio:

Si vuole studiare se il numero di incidenti subiti da un insieme di barche dipende da alcuni regressori:

type -> tipo di imbarcazioneconstruction -> anno di costruzioneoperation -> periodo di operativitàmonths -> mesi di servizio effettuati

barche <- read.table("ships.txt", header=T)

str(barche)'data.frame': 34 obs. of 5 variables: $ type : Factor w/ 5 levels "A","B","C","D",..: 1 1 1 1 1 1 1 2 2 2 ... $ construction: Factor w/ 4 levels "1960-64","1965-69",..: 1 1 2 2 3 3 4 1 1 2 ... $ operation : Factor w/ 2 levels "1960-74","1975-79": 1 2 1 2 1 2 2 1 2 1 ... $ months : int 127 63 1095 1095 1512 3353 2244 44882 17176 28609 ... $ damage : int 0 0 3 4 6 18 11 39 29 58 ...

Page 4: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Costruiamo un primo modello in cui ipotizziamo che il numero dei danni dipenda soltanto dal tipo di imbarcazione:

> mod_type <- glm(damage~type, family=poisson(link="log"), data=barche)

> summary(mod_type)

Call:

glm(formula = damage ~ type, family = poisson(link = "log"),

data = barche)

Deviance Residuals:

Min 1Q Median 3Q Max

-4.6716 -2.2039 -0.5921 0.8632 4.0113

Coefficients:

Estimate Std. Error z value Pr(>|z|)

(Intercept) 1.7918 0.1543 11.612 < 2e-16 ***

typeB 1.7957 0.1666 10.777 < 2e-16 ***

typeC -1.2528 0.3273 -3.827 0.000130 ***

typeD -0.9045 0.2875 -3.146 0.001653 **

typeE -0.1178 0.2346 -0.502 0.615698

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 614.54 on 33 degrees of freedom

Residual deviance: 170.71 on 29 degrees of freedom

AIC: 278.58

Number of Fisher Scoring iterations: 6

Page 5: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Ora costruiamo un secondo modello in cui ipotizziamo che il numero di incidenti dipenda soltanto dal periodo di operatività dell’imbarcazione

> mod_op <- glm(damage~operation, family=poisson(link="log"), data=barche)> summary(mod_op)

Call:glm(formula = damage ~ operation, family = poisson(link = "log"), data = barche)

Deviance Residuals: Min 1Q Median 3Q Max -4.77934 -3.99640 -2.47040 0.09608 10.73683

Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 2.22642 0.08482 26.249 <2e-16 ***operation1975-79 0.20903 0.10864 1.924 0.0543 . ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 614.54 on 33 degrees of freedomResidual deviance: 610.79 on 32 degrees of freedomAIC: 712.65

Page 6: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Costruiamo un altro modello in cui ipotizziamo che il numero di incidenti dipenda soltanto dall’anno di costruzione dell’imbarcazione

> mod_con <- glm(damage~construction, family=poisson(link="log"), data=barche)

> summary(mod_con)

Call:

glm(formula = damage ~ construction, family = poisson(link = "log"),

data = barche)

Deviance Residuals:

Min 1Q Median 3Q Max

-5.15752 -3.84193 -2.54327 0.05806 9.02390

Coefficients:

Estimate Std. Error z value Pr(>|z|)

(Intercept) 2.0513 0.1195 17.163 < 2e-16 ***

construction1965-69 0.5365 0.1477 3.633 0.00028 ***

construction1970-74 0.4168 0.1509 2.763 0.00573 **

construction1975-79 -0.1054 0.2070 -0.509 0.61079

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 614.54 on 33 degrees of freedom

Residual deviance: 592.51 on 30 degrees of freedom

AIC: 698.38

Number of Fisher Scoring iterations: 6

Page 7: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Costruiamo infine un modello in cui ipotizziamo che il numero di incidenti dipenda soltanto dal numero di mesi di attività dell’imbarcazione:

mod_mon <- glm(damage~months, family=poisson(link="log"), data=barche)> summary(mod_mon)

Call:glm(formula = damage ~ months, family = poisson(link = "log"), data = barche)

Deviance Residuals: Min 1Q Median 3Q Max -5.694 -3.251 -1.305 1.346 6.745

Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.781e+00 7.207e-02 24.71 <2e-16 ***months 5.959e-05 2.921e-06 20.40 <2e-16 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 614.54 on 33 degrees of freedomResidual deviance: 309.15 on 32 degrees of freedomAIC: 411.02

Number of Fisher Scoring iterations: 5

Page 8: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Da questa prima serie di analisi l’unico regressore che non sembra essere molto significativo è operation.

Il modello che finora si adatta meglio ai dati è mod_mon (AIC è il più basso)

Proviamo ora a costruire un modello completo che contiene tutti e quattro I regressori e uno che li contiene tutti tranne operation e verifichiamo quale è il migliore.

mod_tcm <- glm(damage~type+construction+months, family=poisson(link="log"), data=barche)> summary(mod_tcm)

Call:glm(formula = damage ~ type + construction + months, family = poisson(link = "log"), data = barche)

Deviance Residuals: Min 1Q Median 3Q Max -3.8174 -1.4399 -0.6102 0.7901 3.8942

Page 9: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 7.762e-01 2.422e-01 3.204 0.001353 ** typeB 9.492e-01 2.109e-01 4.500 6.81e-06 ***typeC -1.215e+00 3.274e-01 -3.711 0.000206 ***typeD -8.559e-01 2.876e-01 -2.976 0.002921 ** typeE -1.810e-01 2.347e-01 -0.771 0.440639 construction1965-69 1.011e+00 1.750e-01 5.778 7.54e-09 ***construction1970-74 1.354e+00 2.252e-01 6.012 1.83e-09 ***construction1975-79 9.279e-01 2.750e-01 3.374 0.000740 ***months 4.775e-05 7.385e-06 6.465 1.01e-10 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 614.54 on 33 degrees of freedomResidual deviance: 101.66 on 25 degrees of freedomAIC: 217.53

Number of Fisher Scoring iterations: 6

N.B: il coefficiente della variabile dummy typeE risulta non significativo: ciò indica che il numero di danni subiti dalle barche ti tipo E non è significativamente differente da quello delle barche di tipo A

Page 10: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

> mod <- glm(damage ~type + construction+operation+months, family=poisson(link="log"), data=barche)> summary(mod)

Call:glm(formula = damage ~ type + construction + operation + months, family = poisson(link = "log"), data = barche)

Deviance Residuals: Min 1Q Median 3Q Max -2.5484 -1.3867 -0.4307 0.5222 3.1152

Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.786e-01 2.771e-01 0.645 0.519201 typeB 6.701e-01 2.172e-01 3.085 0.002034 ** typeC -1.192e+00 3.275e-01 -3.638 0.000275 ***typeD -8.294e-01 2.877e-01 -2.883 0.003941 ** typeE -1.493e-01 2.349e-01 -0.636 0.524853

construction1965-69 1.087e+00 1.792e-01 6.067 1.30e-09 ***construction1970-74 1.500e+00 2.247e-01 6.673 2.50e-11 ***construction1975-79 8.545e-01 2.759e-01 3.097 0.001955 ** operation1975-79 7.284e-01 1.357e-01 5.369 7.93e-08 ***months 6.697e-05 8.523e-06 7.857 3.92e-15 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 614.539 on 33 degrees of freedom

Residual deviance: 70.498 on 24 degrees of freedomAIC: 188.36

Number of Fisher Scoring iterations: 5

Page 11: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Considerando l’AIC il modello completo sembra essere il migliore. In quest’ultimo caso oltre al coefficiente di typeE anche il coefficiente dell’intercetta (β0) risulta non essere significativo.

La conferma arriva anche dall’analisi stepwise:

> step(mod, direction="backward")Start: AIC=188.36damage ~ type + construction + operation + months

Df Deviance AIC<none> 70.498 188.364- operation 1 101.663 217.529- type 4 122.926 232.793- construction 3 135.854 247.721- months 1 139.085 254.952

Call: glm(formula = damage ~ type + construction + operation + months, family = poisson(link = "log"), data = barche)

Coefficients: (Intercept) typeB typeC 1.786e-01 6.701e-01 -1.192e+00 typeD typeE construction1965-69 -8.294e-01 -1.493e-01 1.087e+00 construction1970-74 construction1975-79 operation1975-79 1.500e+00 8.545e-01 7.284e-01 months 6.697e-05

Degrees of Freedom: 33 Total (i.e. Null); 24 ResidualNull Deviance: 614.5 Residual Deviance: 70.5 AIC: 188.4

Page 12: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Significato dei coefficienti:

Covariate quantitative: Il coefficiente β9 relativo alla variabile quantitativa months indica

che il logaritmo del valore atteso dei danni subiti da un imbarcazione aumenta di 6.697e-05 per ogni mese di attività in più.

Di conseguenza il valore exp(β9) indica...

Covariate qualitative (dicotomiche o politomiche): Il coefficiente β1 relativo alla variabile dummy typeB, invece, indica

che le imbarcazioni di tipo B sono caratterizzate da un valore atteso condizionale di numero di danni subiti che è exp(0.67) volte quello delle barche di tipo A (prese come riferimento, nel caso in esame).

Qual è il modello definitivo che possiamo stimare?

Page 13: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Problema della sovradispersione:

La distribuzione di Poisson (e il relativo modello di regressione) presenta un difetto importante: implica la condizione di equidispersione.

Spesso questa condizione non è supportata dai dati. Risulta infatti frequente il caso di sovradispersione in cui

V(y|x) > E(y|x) = exp(x’β)

In R la sovradispersione si riconosce nel caso in cui la residual deviance è molto più grande dei gradi di libertà. In questo caso si può ricorrere all’utilizzo della quasi-verosimiglianza:

> mod_quasi <- glm(damage~type+construction+operation+months, family=quasipoisson(), data=barche)

> summary(mod_quasi)

Call:glm(formula = damage ~ type + construction + operation + months, family = quasipoisson(), data = barche)

Deviance Residuals: Min 1Q Median 3Q Max -2.5484 -1.3867 -0.4307 0.5222 3.1152

Page 14: 6. Modello di Regressione di Poisson con R Enrico Properzi - enrico.properzi3@unibo.itenrico.properzi3@unibo.it A.A. 2010/2011.

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.786e-01 4.587e-01 0.389 0.700447 typeB 6.701e-01 3.595e-01 1.864 0.074653 . typeC -1.192e+00 5.422e-01 -2.198 0.037863 * typeD -8.294e-01 4.763e-01 -1.741 0.094420 . typeE -1.493e-01 3.888e-01 -0.384 0.704284 construction1965-69 1.087e+00 2.967e-01 3.665 0.001224 ** construction1970-74 1.500e+00 3.721e-01 4.031 0.000487 ***construction1975-79 8.545e-01 4.568e-01 1.871 0.073628 . operation1975-79 7.284e-01 2.246e-01 3.243 0.003461 ** months 6.697e-05 1.411e-05 4.746 7.92e-05 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for quasipoisson family taken to be 2.740679)

Null deviance: 614.539 on 33 degrees of freedomResidual deviance: 70.498 on 24 degrees of freedomAIC: NA

Number of Fisher Scoring iterations: 5

Osserviamo che alcuni coefficienti di regressione non risultano più significativi e che le stime dei loro standard error sono ora molto più grandi.