30 votos

Fórmula de pseudo R al cuadrado para los MLG

He encontrado una fórmula para el pseudo $R^2$ en el libro Ampliación del modelo lineal con R, Julian J. Faraway (p. 59).

$$1-\frac{\text{ResidualDeviance}}{\text{NullDeviance}}$$ .

¿Se trata de una fórmula común de pseudo $R^2$ para GLMs?

24voto

Sean Hanley Puntos 2428

Hay un gran número de pseudo- $R^2$ El excelente sitio de ayuda a las estadísticas de la UCLA ofrece una descripción exhaustiva de las mismas aquí . El que usted enumera se llama el pseudo de McFadden. $R^2$ . En relación con la tipología de la UCLA, es como $R^2$ en el sentido de que indexa la mejora del modelo ajustado sobre el modelo nulo. Algunos programas informáticos de estadística, en particular el SPSS, si no recuerdo mal, imprimen el pseudodistintivo de McFadden. $R^2$ por defecto con los resultados de algunos análisis como la regresión logística, por lo que sospecho que es bastante común, aunque los pseudo-análisis de Cox & Snell y Nagelkerke $R^2$ s pueden serlo aún más. Sin embargo, el pseudo- $R^2$ no tiene todas las propiedades de $R^2$ (no hay pseudo- $R^2$ lo hace). Si alguien está interesado en utilizar un pseudo- $R^2$ para entender un modelo, recomiendo encarecidamente la lectura de este excelente hilo de CV: ¿Qué pseudo- $R^2$ ¿es la medida a reportar para la regresión logística (Cox & Snell o Nagelkerke)? (Por si sirve de algo, $R^2$ es más resbaladizo de lo que la gente cree, una gran demostración de ello puede verse en la respuesta de @whuber aquí: Es $R^2$ ¿útil o peligroso? )

1 votos

Me pregunto si todos estos pseudo-R2 han sido diseñados específicamente para la regresión logística solamente. ¿O se generalizan también para poisson y gamma-glms? He encontrado diferentes fórmulas R2 para cada posible GLM en Colin Cameron, A., & Windmeijer, F. A. (1997). An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77(2), 329-342.

0 votos

@Jens, algunos de ellos parecen ciertamente específicos de LR, pero otros utilizan la desviación, que podrías obtener de cualquier GLiM.

1 votos

Tenga en cuenta que McFadden $R^2$ a menudo se define en términos de la log-verosimilitud, que sólo se define hasta una constante aditiva, y no la desviación como en la pregunta del OP. Sin una especificación de la constante aditiva, la fórmula de McFadden $R^2$ no está bien definido. La desviación es una única elección de la constante aditiva, que en mi opinión es la más apropiada, si la generalización debe ser comparable con $R^2$ de los modelos lineales.

10voto

Bou Puntos 1859

R da la desviación nula y residual en la salida a glm para poder hacer exactamente este tipo de comparación (ver las dos últimas líneas de abajo).

> x = log(1:10)

> y = 1:10

> glm(y ~ x, family = poisson)

>Call:  glm(formula = y ~ x, family = poisson)

Coefficients:
(Intercept)            x  
  5.564e-13    1.000e+00  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      16.64 
Residual Deviance: 2.887e-15    AIC: 37.97

También puede extraer estos valores del objeto con model$null.deviance y model$deviance

0 votos

Ah, vale. Sólo estaba respondiendo a la pregunta tal y como estaba escrita. Habría añadido más, pero yo mismo no estoy 100% seguro de cómo se calcula la desviación nula (tiene algo que ver con la probabilidad logarítmica de un modelo saturado, pero no recuerdo lo suficiente los detalles sobre la saturación como para estar seguro de poder dar buenas intuiciones)

0 votos

No lo tengo en la salida de glm (posión familiar o quasipoisson).

0 votos

@Tomas ver mis ediciones. No sé si me equivoqué hace 2 años o si la salida por defecto ha cambiado desde entonces.

6voto

Ruby Puntos 61

La fórmula que usted propone ha sido propuesta por Maddala (1983) y Magee (1990) para estimar la R al cuadrado en el modelo logístico. Por lo tanto, no creo que sea aplicable a todos los modelos glm (véase el libro Modern Regression Methods de Thomas P. Ryan en la página 266).

Si haces un conjunto de datos falso, verás que se subestima la R al cuadrado... para el glm gaussiano por ejemplo.

Creo que para un glm gaussiano se puede utilizar la fórmula básica (lm) R al cuadrado...

R2gauss<- function(y,model){
    moy<-mean(y)
    N<- length(y)
    p<-length(model$coefficients)-1
    SSres<- sum((y-predict(model))^2)
    SStot<-sum((y-moy)^2)
    R2<-1-(SSres/SStot)
    Rajust<-1-(((1-R2)*(N-1))/(N-p-1))
    return(data.frame(R2,Rajust,SSres,SStot))
}

Y para la familia logística (o binomial en r ) utilizaría la fórmula que propones...

    R2logit<- function(y,model){
    R2<- 1-(model$deviance/model$null.deviance)
    return(R2)
    }

Hasta ahora para el glm de poisson he utilizado la ecuación de este post.

https://stackoverflow.com/questions/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regression

También hay un gran artículo sobre pseudo R2 disponible en researchs gates...aquí está el enlace:

https://www.researchgate.net/publication/222802021_Pseudo_R-squared_measures_for_Poisson_regression_models_with_over-_or_underdispersion

Espero que esto ayude.

0 votos

Basta con ajustar un modelo GLM con family=gaussian(link=identity) y comprobar el valor de 1-summary(GLM)$deviance/summary(GLM)$null.deviance y verá que el R2 coincide con el valor R2 de una regresión OLS normal, por lo que la respuesta anterior es correcta. Ver también mi post aquí - stats.stackexchange.com/questions/412580/

5voto

Bob T. Builder Puntos 1

El paquete R modEvA calcula D-Squared como 1 - (mod$deviance/mod$null.deviance) como menciona David J. Harris

set.seed(1)
data <- data.frame(y=rpois(n=10, lambda=exp(1 + 0.2 * x)), x=runif(n=10, min=0, max=1.5))

mod <- glm(y~x,data,family = poisson)

1- (mod$deviance/mod$null.deviance)
[1] 0.01133757
library(modEvA);modEvA::Dsquared(mod)
[1] 0.01133757

La D-cuadrada o desviación explicada del modelo se introduce en (Guisan & Zimmermann 2000) https://doi.org/10.1016/S0304-3800(00)00354-9

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