จากสิ่งที่ฉันสามารถบอกได้เราไม่สามารถเรียกใช้การถดถอยกำลังสองน้อยที่สุดธรรมดาใน 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
แพ็คเกจ แต่สแกนอย่างรวดเร็วและตั้งสมมติฐานเกี่ยวกับสิ่งที่ฉันระบุไว้ในคำตอบ