R-quadrado no modelo linear versus desvio no modelo linear generalizado?

13

Aqui está o meu contexto para esta pergunta: Pelo que sei, não podemos executar uma regressão ordinária de mínimos quadrados em R ao usar dados ponderados e o surveypacote. Aqui, temos que usar svyglm(), que em vez disso executa um modelo linear generalizado (que pode ser a mesma coisa? Estou confuso aqui em termos do que é diferente).

No OLS e através da lm()função, calcula um valor ao quadrado R, cuja interpretação eu entendo. No entanto, svyglm()parece não calcular isso e, em vez disso, me fornece um desvio, que minha breve viagem pela Internet me diz que é uma medida de qualidade de ajuste que é interpretada de maneira diferente de um quadrado-R.

Então eu acho que basicamente tenho duas perguntas sobre as quais eu esperava obter alguma orientação:

  1. Por que não podemos executar o OLS no surveypacote, enquanto parece que isso é possível com dados ponderados no Stata?
  2. Qual é a diferença de interpretação entre o desvio de um modelo linear generalizado e um valor do quadrado r?
RickyB
fonte
2
Bem-vindo ao site, RichardBlissett, +1 para uma boa pergunta. A regressão OLS é um caso especial do modelo linear generalizado, em que a função de link é a função de identidade e a distribuição de respostas é normal (veja minha resposta aqui: diferença entre modelos de logit e probit , para obter mais informações). Existem 'pseudo-R2s para GLiMs, mas são controversos (veja aqui: qual pseudo-r2-a-relatar-para-regressão logística , para mais informações).
gung - Reintegrar Monica
1
Muito obrigado pelo seu comentário (e desculpe por ter demorado tanto para eu responder ... eu perdi essa pergunta e esqueci completamente que não a coloquei no SO). Isso foi um par incrível de explicações, obrigado. Acho que minha pergunta, então, é a seguinte: presumo que esses pacotes estatísticos não executam OLS porque há um problema fundamental em executar isso com dados ponderados por pesquisa. Não consigo descobrir, no entanto, qual é esse problema.
21713 RickyB
1
O desvio é uma generalização da variação, e o desvio esperado é uma generalização do quadrado R. O problema é que não parece ser uma resposta fácil ou geral para desvio esperado, ver, por exemplo aqui: stats.stackexchange.com/questions/124306/...
nukimov

Respostas:

2

Pelo que sei, não podemos executar uma regressão ordinária de mínimos quadrados em R ao usar dados ponderados e o surveypacote. Aqui, temos que usar svyglm(), que em vez disso executa um modelo linear generalizado (que pode ser a mesma coisa? Estou confuso aqui em termos do que é diferente).

svyglmfornecerá um modelo linear se você usar o family = gaussian()que parece ser o padrão da vinheta da pesquisa (na versão 3.32-1). Veja o exemplo onde eles encontram o regmodel.

Parece que o pacote apenas garante que você use os pesos corretos quando chamar glm. Assim, se o seu resultado for contínuo e você assumir que ele é normalmente distribuído por iid, você deve usá-lo family = gaussian(). O resultado é um modelo linear ponderado. Esta resposta

Por que não podemos executar o OLS no surveypacote, enquanto parece que isso é possível com dados ponderados no Stata?

afirmando que você realmente pode fazer isso com o surveypacote. Quanto à seguinte pergunta

Qual é a diferença de interpretação entre o desvio de um modelo linear generalizado e um valor do quadrado r?

R2family = gaussian()

> 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

O desvio é apenas a soma dos erros quadrados quando você usa family = gaussian().

Ressalvas

Suponho que você queira um modelo linear da sua pergunta. Além disso, nunca usei o surveypacote, mas o examinei rapidamente e fiz suposições sobre o que ele faz, que afirmo em minha resposta.

Benjamin Christoffersen
fonte