4 votos

Interpretación de la ecuación GLM

He desarrollado un modelo glm Poisson en R y me gustaría extraer la fórmula para poder hacer el cálculo en otro lenguaje de software. Cuando escribo la ecuación estoy obteniendo diferentes valores de la predict función en R y las matemáticas que hago manualmente.

summary(model1)

Call:
glm(formula = time ~ dayPart+ weekPart + NumberOfCustomers, 
    family = poisson(link = log), data = trainDf)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0077  -0.6974  -0.1732   0.6231   2.4361  

Coefficients:
                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)          5.471287   0.018404 297.291  < 2e-16 ***
DAY_PARTNight        0.177905   0.015721  11.317  < 2e-16 ***
DAY_PARTEvening      0.106609   0.020109   5.302 1.15e-07 ***
DAY_PARTAfternoon    0.082161   0.016076   5.111 3.21e-07 ***
WEEK_DESCWEEKEND     0.083837   0.012819   6.540 6.16e-11 ***
NumberOfCustomers    0.069795   0.002081  33.545  < 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: 1405.299  on 69  degrees of freedom
Residual deviance:   81.949  on 64  degrees of freedom
AIC: Inf

Number of Fisher Scoring iterations: 3

Por ejemplo, tengo esta fila

Morning WEEKDAY 1 (customer) 255 11.463557 (prediction)

calcular:

exp(5.47)+ (0)(1) + (0)(1) + exp(0.069795)*1 = 238

exp(5.47) - the exp of the intercept since I used a log link function
(0)(1) - The coefficient for Weekday since this is the base for WEEK_DESC
(0)(1) - Since morning is base for time of day categorical variable
exp(0.069795) - slope for number of customers.

¿Qué es lo que está mal donde estoy obteniendo diferencias entre el resultado de la función de predicción de 255 y mis matemáticas donde calculo 238?

13voto

Sean Hanley Puntos 2428

Primero hay que resolver el predictor lineal (completo) y luego exponerlo. Considere:

exp(5.471287 + 0.177905*0 + 0.106609*0 + 0.082161*0 + 0.083837*0 + 0.069795*1)
# [1] 254.9537

Estás sumando la exponenciación de 5.47 y la exponenciación de 0.069795 en lugar de exponer la suma de 5.47 + 0.069795 . Porque la exponenciación es una transformación no lineal, $f(x+y)\ne f(x)+f(y)$ (cf., La desigualdad de Jensen ).

Como se trata de un GLiM de Poisson con un enlace logarítmico, la exponenciación del intercepto es el valor esperado cuando todas las covariables son cero (y las variables categóricas están en el nivel de referencia). Además, la exponenciación de un coeficiente produce el factor multiplicativo por el que el valor esperado aumentará con un incremento de una unidad en la covariable. Así, en este caso se podría hacer de forma equivalente:

exp(5.471287) * exp(0.069795*1)
# [1] 254.9537

o,

exp(5.471287) * exp(0.069795)^1
# [1] 254.9537

Pero tenga en cuenta que tiene multiplicado aquí, no se añade.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X