Ho trovato una formula per lo pseudo nel libro Extending the Linear Model with R, Julian J. Faraway (p. 59).
È una formula comune per pseudo per GLM?
Ho trovato una formula per lo pseudo nel libro Extending the Linear Model with R, Julian J. Faraway (p. 59).
È una formula comune per pseudo per GLM?
Risposte:
Esistono molti pseudo- s per GLiMs. L'eccellente sito di aiuto per le statistiche dell'UCLA ha una panoramica completa di questi qui . Quello che hai elencato si chiama pseudo- R ^ 2 di McFadden . Rispetto alla tipologia dell'UCLA, è come nel senso che indicizza il miglioramento del modello adattato rispetto al modello nullo. Alcuni software statistici, in particolare SPSS, se ricordo bene, stampano di default lo pseudo- di McFadden con i risultati di alcune analisi come la regressione logistica, quindi sospetto che sia abbastanza comune, sebbene lo pseudo- R di Cox & Snell e Nagelkerke ^ 2 s potrebbe essere ancora di più. Tuttavia, lo pseudo- R ^ 2 di McFadden non ha tutte le proprietà di (no pseudo- ). Se qualcuno è interessato a utilizzare uno pseudo- per comprendere un modello, consiglio vivamente di leggere questo eccellente thread CV: quale misura pseudo- è quella da segnalare per la regressione logistica (Cox & Snell o Nagelkerke)? (Per quello che vale, è di per sé slipperier di quanto si creda, una grande dimostrazione di che può essere visto in @ di whuber risposta qui: Is ? Utili o pericolosi )
R fornisce una deviazione nulla e residua nell'output in glm
modo da poter effettuare esattamente questo tipo di confronto (vedere le ultime due righe di seguito).
> 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
Puoi anche estrarre questi valori dall'oggetto con model$null.deviance
emodel$deviance
La formula che hai proposto è stata proposta da Maddala (1983) e Magee (1990) per stimare R al quadrato sul modello logistico. Pertanto non penso che sia applicabile a tutti i modelli glm (vedere il libro Metodi di regressione moderni di Thomas P. Ryan a pagina 266).
Se crei un set di dati falso, noterai che è sottovalutato il quadrato R ... per glm gaussiano per esempio.
Penso che per una gloria gaussiana puoi usare la formula quadrata di base (lm) R ...
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))
}
E per la famiglia logistica (o binomiale in r) userei la formula che hai proposto ...
R2logit<- function(y,model){
R2<- 1-(model$deviance/model$null.deviance)
return(R2)
}
Finora per il glisson di poisson ho usato l'equazione di questo post.
/programming/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regression
C'è anche un grande articolo sullo pseudo R2 disponibile sulle porte della ricerca ... ecco il link:
Spero questo aiuto.
1-summary(GLM)$deviance/summary(GLM)$null.deviance
e vedrai che R2 corrisponde al valore R2 di una normale regressione OLS, quindi la risposta sopra è corretta! Vedi anche il mio post qui - stats.stackexchange.com/questions/412580/…
Il pacchetto R modEvA
calcola D-Squared
come 1 - (mod$deviance/mod$null.deviance)
come detto da 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
Il D-Squared o spiegato Deviance del modello è introdotto in (Guisan & Zimmermann 2000) https://doi.org/10.1016/S0304-3800(00)00354-9
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.