R-kuadrat dalam model linier penyimpangan ayat dalam model linier umum?

13

Inilah konteks saya untuk pertanyaan ini: Dari apa yang bisa saya katakan, kita tidak bisa menjalankan regresi kuadrat terkecil biasa dalam R ketika menggunakan data tertimbang dan surveypaket. Di sini, kita harus menggunakan svyglm(), yang sebaliknya menjalankan model linear umum (yang mungkin hal yang sama? Saya bingung di sini dalam hal apa yang berbeda).

Dalam OLS dan melalui lm()fungsi, ini menghitung nilai R-squared, interpretasi yang saya mengerti. Namun, svyglm()sepertinya tidak menghitung ini dan malah memberi saya Deviance, yang perjalanan singkat saya di internet mengatakan kepada saya adalah ukuran good-of-fit yang ditafsirkan berbeda dari R-squared.

Jadi saya kira saya pada dasarnya memiliki dua pertanyaan yang saya harapkan untuk mendapatkan arahan:

  1. Mengapa kita tidak bisa menjalankan OLS dalam surveypaket, sementara sepertinya ini mungkin dilakukan dengan data tertimbang di Stata?
  2. Apa perbedaan interpretasi antara penyimpangan model linear umum dan nilai r-squared?
RickyB
sumber
2
Selamat datang di situs, @RichardBlissett, +1 untuk pertanyaan yang bagus. Regresi OLS adalah kasus khusus dari model linear umum, di mana fungsi tautan adalah fungsi identitas & distribusi respons normal (lihat jawaban saya di sini: model selisih antara logit dan probit , untuk info lebih lanjut). Ada 'pseudo-R2's untuk GLiMs, tetapi mereka kontroversial (lihat di sini: mana-pseudo-r2-untuk-melaporkan-untuk-logistik-regresi , untuk info lebih lanjut).
gung - Reinstate Monica
1
Terima kasih banyak atas komentar Anda (dan maaf butuh waktu lama bagi saya untuk menanggapi ... Saya kehilangan pertanyaan ini dan benar-benar lupa bahwa saya tidak memasukkannya ke SO). Itu adalah beberapa penjelasan yang luar biasa, terima kasih. Saya kira pertanyaan saya, kemudian, apakah ini: Saya berasumsi, maka bahwa paket statistik ini tidak menjalankan OLS karena ada beberapa masalah mendasar dengan menjalankannya dengan data tertimbang survei. Namun, saya tidak tahu apa masalahnya.
RickyB
1
Deviance adalah generalisasi dari varians, dan deviance yang diharapkan adalah generalisasi dari R-square. Masalahnya adalah sepertinya tidak ada jawaban yang mudah atau umum untuk penyimpangan yang diharapkan, lihat misalnya di sini: stats.stackexchange.com/questions/124306/…
nukimov

Jawaban:

2

Dari apa yang saya tahu, kita tidak bisa menjalankan regresi kuadrat terkecil biasa dalam R ketika menggunakan data tertimbang dan surveypaket. Di sini, kita harus menggunakan svyglm(), yang sebaliknya menjalankan model linear umum (yang mungkin hal yang sama? Saya bingung di sini dalam hal apa yang berbeda).

svyglmakan memberi Anda model linier jika Anda menggunakan family = gaussian()yang tampaknya merupakan default dari sketsa survei (dalam versi 3.32-1). Lihat contoh di mana mereka menemukan regmodel.

Tampaknya paket itu hanya memastikan bahwa Anda menggunakan bobot yang benar saat menelepon glm. Dengan demikian, jika hasil Anda kontinu dan Anda menganggap bahwa itu biasanya dibagikan maka Anda harus menggunakannya family = gaussian(). Hasilnya adalah model linear tertimbang. Jawaban ini

Mengapa kita tidak bisa menjalankan OLS dalam surveypaket, sementara sepertinya ini mungkin dilakukan dengan data tertimbang di Stata?

dengan menyatakan bahwa Anda memang bisa melakukan itu dengan surveypaket. Adapun pertanyaan berikut

Apa perbedaan interpretasi antara penyimpangan model linear umum dan nilai r-squared?

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

Penyimpangan hanya jumlah kesalahan kuadrat saat Anda gunakan family = gaussian().

Peringatan

Saya berasumsi bahwa Anda menginginkan model linier dari pertanyaan Anda. Lebih lanjut, saya tidak pernah menggunakan surveypaket itu tetapi dengan cepat memindai melalui itu dan membuat asumsi tentang apa yang dilakukannya yang saya nyatakan dalam jawaban saya.

Benjamin Christoffersen
sumber