R-quadrato nel modello lineare rispetto alla devianza nel modello lineare generalizzato?


13

Ecco il mio contesto per questa domanda: da quello che posso dire, non possiamo eseguire una regressione dei minimi quadrati ordinaria in R quando si utilizzano i dati ponderati e il surveypacchetto. Qui, dobbiamo usare svyglm(), che invece esegue un modello lineare generalizzato (che potrebbe essere la stessa cosa? Sono sfocato qui in termini di ciò che è diverso).

In OLS e attraverso la lm()funzione, calcola un valore R-quadrato, la cui interpretazione capisco. Tuttavia, svyglm()non sembra calcolare questo e invece mi dà una Devianza, che il mio breve viaggio su Internet mi dice che è una misura di bontà che viene interpretata diversamente da un R-quadrato.

Quindi credo di avere essenzialmente due domande su cui speravo di ottenere una direzione:

  1. Perché non possiamo eseguire OLS nel surveypacchetto, mentre sembra che ciò sia possibile con dati ponderati in Stata?
  2. Qual è la differenza nell'interpretazione tra la devianza di un modello lineare generalizzato e un valore r-quadrato?

2
Benvenuto nel sito, @RichardBlissett, +1 per una buona domanda. La regressione OLS è un caso speciale del modello lineare generalizzato, in cui la funzione di collegamento è la funzione identità e la distribuzione della risposta è normale (vedere la mia risposta qui: differenza tra modelli logit e probit , per maggiori informazioni). Esistono "pseudo-R2 per GLiMs, ma sono controversi (vedi qui: what -pseudo-r2-to-report-for-logistic-regression , per maggiori informazioni).
gung - Ripristina Monica

1
Grazie mille per il tuo commento (e mi dispiace che ci sia voluto tanto tempo per rispondere ... Ho perso questa domanda e mi ero completamente dimenticato di non averlo messo su SO). È stata una fantastica coppia di spiegazioni, grazie. Immagino quindi che la mia domanda sia questa: presumo, quindi, che questi pacchetti statistici non eseguano OLS perché c'è qualche problema fondamentale nell'esecuzione con dati ponderati per il sondaggio. Non riesco a capire, tuttavia, quale sia il problema.
RickyB,

1
La devianza è una generalizzazione della varianza e la devianza attesa è una generalizzazione del R-quadrato. Il problema è che non sembra esserci una risposta facile o generale alla devianza attesa, vedi ad esempio qui: stats.stackexchange.com/questions/124306/…
nukimov

Risposte:


2

Da quello che posso dire, non possiamo eseguire una normale regressione dei minimi quadrati in R quando si utilizzano i dati ponderati e il surveypacchetto. Qui, dobbiamo usare svyglm(), che invece esegue un modello lineare generalizzato (che potrebbe essere la stessa cosa? Sono sfocato qui in termini di ciò che è diverso).

svyglmti darà un modello lineare se lo usi, family = gaussian()che sembra essere il valore predefinito dalla vignetta del sondaggio (nella versione 3.32-1). Vedi l'esempio in cui trovano il file regmodel.

Sembra che il pacchetto si assicuri solo di usare i pesi corretti quando chiama glm. Pertanto, se il risultato è continuo e si presume che sia normalmente distribuito, è necessario utilizzarlo family = gaussian(). Il risultato è un modello lineare ponderato. Questa risposta

Perché non possiamo eseguire OLS nel surveypacchetto, mentre sembra che ciò sia possibile con dati ponderati in Stata?

affermando che puoi effettivamente farlo con il surveypacchetto. Per quanto riguarda la seguente domanda

Qual è la differenza nell'interpretazione tra la devianza di un modello lineare generalizzato e un valore r-quadrato?

C'è una formula semplice per ottenere il R2con family = gaussian()come alcune persone hanno menzionato nei commenti. L'aggiunta di pesi non cambia nulla, come mostrato di seguito

> set.seed(42293888)
> x <- (-4):5
> y <- 2 + x + rnorm(length(x))
> org <- data.frame(x = x, y = y, weights = 1:10)
> 
> # show data and fit model. Notice the R-squared
> head(org) 
   x          y weights
1 -4  0.4963671       1
2 -3 -0.5675720       2
3 -2 -0.3615302       3
4 -1  0.7091697       4
5  0  0.6485203       5
6  1  3.8495979       6
> summary(lm(y ~ x, org, weights = weights))

Call:
lm(formula = y ~ x, data = org, weights = weights)

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-3.1693 -0.4463  0.2017  0.9100  2.9667 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   1.7368     0.3514   4.942  0.00113 ** 
x             0.9016     0.1111   8.113 3.95e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 2.019 on 8 degrees of freedom
Multiple R-squared:  0.8916,    Adjusted R-squared:  0.8781 
F-statistic: 65.83 on 1 and 8 DF,  p-value: 3.946e-05

> 
> # make redundant data set with redundant rows
> idx <- unlist(mapply(rep, x = 1:nrow(org), times = org$weights))
> org_redundant <- org[idx, ]
> head(org_redundant)
     x          y weights
1   -4  0.4963671       1
2   -3 -0.5675720       2
2.1 -3 -0.5675720       2
3   -2 -0.3615302       3
3.1 -2 -0.3615302       3
3.2 -2 -0.3615302       3
> 
> # fit model and notice the same R-squared
> summary(lm(y ~ x, org_redundant))

Call:
lm(formula = y ~ x, data = org_redundant)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.19789 -0.29506 -0.05435  0.33131  2.36610 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.73680    0.13653   12.72   <2e-16 ***
x            0.90163    0.04318   20.88   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 0.7843 on 53 degrees of freedom
Multiple R-squared:  0.8916,    Adjusted R-squared:  0.8896 
F-statistic: 436.1 on 1 and 53 DF,  p-value: < 2.2e-16

> 
> # glm gives you the same with family = gaussian()  
> # just compute the R^2 from the deviances. See 
> #   /stats//a/46358/81865
> fit <- glm(y ~ x, family = gaussian(), org_redundant)
> fit$coefficients
(Intercept)           x 
  1.7368017   0.9016347 
> 1 - fit$deviance / fit$null.deviance
[1] 0.8916387

La devianza è solo la somma degli errori quadrati quando si utilizza family = gaussian() .

Avvertenze

Presumo che tu voglia un modello lineare dalla tua domanda. Inoltre, non ho mai usato il surveypacchetto, ma ho rapidamente scansionato attraverso di esso e fatto ipotesi su ciò che fa che dichiaro nella mia risposta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.