R-squared ในแบบจำลองเชิงเส้นข้อเบี่ยงเบนในแบบจำลองเชิงเส้นทั่วไป?


14

นี่คือบริบทของฉันสำหรับคำถามนี้: จากสิ่งที่ฉันสามารถบอกได้เราไม่สามารถเรียกใช้การถดถอยกำลังสองน้อยสุดธรรมดาใน R เมื่อใช้ข้อมูลที่มีน้ำหนักและsurveyแพคเกจ ที่นี่เราต้องใช้svyglm()ซึ่งใช้โมเดลเชิงเส้นทั่วไปแทน (ซึ่งอาจเป็นสิ่งเดียวกันหรือไม่ฉันคลุมเครือที่นี่ในแง่ของสิ่งที่แตกต่างกัน)

ใน OLS และผ่านlm()ฟังก์ชั่นมันจะคำนวณค่า R-squared ซึ่งเป็นการตีความที่ฉันเข้าใจ อย่างไรก็ตามsvyglm()ดูเหมือนจะไม่สามารถคำนวณสิ่งนี้ได้และให้ค่าเบี่ยงเบนมาตรฐานแทนซึ่งการเดินทางสั้น ๆ รอบอินเทอร์เน็ตของฉันบอกฉันว่าเป็นการวัดความดีที่พอดีซึ่งตีความได้แตกต่างจาก R-squared

ดังนั้นฉันเดาว่าฉันมีคำถามสองข้อที่ฉันหวังว่าจะได้รับทิศทาง:

  1. ทำไมเราไม่สามารถเรียกใช้ OLS ในsurveyแพ็คเกจได้ แต่ดูเหมือนว่าเป็นไปได้ที่จะทำกับข้อมูลที่มีน้ำหนักใน Stata
  2. อะไรคือความแตกต่างในการตีความระหว่างความเบี่ยงเบนของตัวแบบเส้นตรงทั่วไปกับค่า r-squared?

2
ยินดีต้อนรับสู่เว็บไซต์ @RichardBlissett +1 สำหรับคำถามที่ดี การถดถอย OLS เป็นกรณีพิเศษของโมเดลเชิงเส้นทั่วไปที่ฟังก์ชันลิงก์เป็นฟังก์ชันเอกลักษณ์ & การแจกแจงการตอบสนองเป็นเรื่องปกติ (ดูคำตอบของฉันที่นี่: ความแตกต่างระหว่างโมเดล logit และ probitสำหรับข้อมูลเพิ่มเติม) มี 'pseudo-R2's สำหรับ GLiMs แต่พวกมันขัดแย้งกัน (ดูที่นี่: ซึ่ง pseudo-r2-to-report-for-logistic-regressionสำหรับข้อมูลเพิ่มเติม)
gung - Reinstate Monica

1
ขอบคุณมากสำหรับความคิดเห็นของคุณ (และขอโทษที่ใช้เวลานานมากในการตอบ ... ฉันทำคำถามนี้หายไปและลืมไปโดยสิ้นเชิงว่าไม่ได้ใส่ไว้ใน SO) นั่นเป็นคำอธิบายที่น่าทึ่งมากขอบคุณ ฉันเดาว่าคำถามของฉันคือ: ฉันถือว่าแล้วแพ็กเกจสถิติเหล่านี้จะไม่เรียกใช้ OLS เนื่องจากมีปัญหาพื้นฐานบางประการในการดำเนินการดังกล่าวด้วยข้อมูลถ่วงน้ำหนักการสำรวจ ฉันไม่สามารถคิดออกได้ว่าปัญหานั้นคืออะไร
RickyB

1
Deviance เป็นลักษณะทั่วไปของความแปรปรวนและความเบี่ยงเบนที่คาดหวังนั้นเป็นลักษณะทั่วไปของ R-square ปัญหาคือดูเหมือนจะไม่มีคำตอบที่ง่ายหรือทั่วไปสำหรับการเบี่ยงเบนที่คาดหวังดูตัวอย่างได้ที่นี่: stats.stackexchange.com/questions/124306/…
nukimov

คำตอบ:


2

จากสิ่งที่ฉันสามารถบอกได้เราไม่สามารถเรียกใช้การถดถอยกำลังสองน้อยที่สุดธรรมดาใน R เมื่อใช้ข้อมูลที่มีน้ำหนักและsurveyแพ็คเกจ ที่นี่เราต้องใช้svyglm()ซึ่งใช้โมเดลเชิงเส้นทั่วไปแทน (ซึ่งอาจเป็นสิ่งเดียวกันหรือไม่ฉันคลุมเครือที่นี่ในแง่ของสิ่งที่แตกต่างกัน)

svyglmจะให้โมเดลเชิงเส้นแก่คุณหากคุณใช้family = gaussian()ซึ่งดูเหมือนจะเป็นค่าเริ่มต้นจากบทความสำรวจ (ในรุ่น 3.32-1) regmodelดูตัวอย่างที่พวกเขาพบว่า

glmมันดูเหมือนว่าแพคเกจเพียงแค่ทำให้แน่ใจว่าคุณใช้น้ำหนักที่ถูกต้องเมื่อมันสาย ดังนั้นหากผลของคุณอย่างต่อเนื่องและคุณคิดว่ามันเป็นปกติ IID family = gaussian()กระจายแล้วคุณควรใช้ ผลลัพธ์ที่ได้คือโมเดลเชิงเส้นตรงถ่วงน้ำหนัก คำตอบนี้

ทำไมเราไม่สามารถเรียกใช้ OLS ในsurveyแพ็คเกจได้ แต่ดูเหมือนว่าเป็นไปได้ที่จะทำกับข้อมูลที่มีน้ำหนักใน Stata

โดยระบุว่าคุณสามารถทำได้อย่างแน่นอนด้วยsurveyแพ็คเกจ สำหรับคำถามต่อไปนี้

อะไรคือความแตกต่างในการตีความระหว่างความเบี่ยงเบนของตัวแบบเส้นตรงทั่วไปกับค่า 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

family = gaussian()อันซ์เป็นเพียงผลรวมของข้อผิดพลาดของตารางเมื่อคุณใช้

คำเตือน

ฉันคิดว่าคุณต้องการโมเดลเชิงเส้นจากคำถามของคุณ นอกจากนี้ฉันไม่เคยใช้surveyแพ็คเกจ แต่สแกนอย่างรวดเร็วและตั้งสมมติฐานเกี่ยวกับสิ่งที่ฉันระบุไว้ในคำตอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.