R bình phương trong mô hình tuyến tính câu thơ lệch trong mô hình tuyến tính tổng quát?


13

Đây là bối cảnh của tôi cho câu hỏi này: Từ những gì tôi có thể nói, chúng ta không thể chạy hồi quy bình phương nhỏ nhất bình thường trong R khi sử dụng dữ liệu có trọng số và surveygói. Ở đây, chúng ta phải sử dụng svyglm(), thay vào đó chạy một mô hình tuyến tính tổng quát (có thể là điều tương tự? Tôi mờ ở đây về những gì khác biệt).

Trong OLS và thông qua lm()hàm, nó tính toán giá trị bình phương R, cách hiểu mà tôi hiểu. Tuy nhiên, svyglm()dường như không tính toán được điều này và thay vào đó mang lại cho tôi một Deviance, mà chuyến đi ngắn ngủi trên internet của tôi nói với tôi là một biện pháp phù hợp được giải thích khác với bình phương R.

Vì vậy, tôi đoán rằng về cơ bản tôi có hai câu hỏi mà tôi hy vọng sẽ có được một số hướng:

  1. Tại sao chúng ta không thể chạy OLS trong surveygói, trong khi dường như điều này có thể thực hiện với dữ liệu có trọng số trong Stata?
  2. Sự khác biệt trong giải thích giữa độ lệch của mô hình tuyến tính tổng quát và giá trị r bình phương là gì?

2
Chào mừng bạn đến với trang web, @RichardBlissett, +1 cho một câu hỏi hay. Hồi quy OLS là trường hợp đặc biệt của mô hình tuyến tính tổng quát, trong đó hàm liên kết là hàm nhận dạng & phân phối đáp ứng là bình thường (xem câu trả lời của tôi ở đây: mô hình khác biệt giữa logit-và-probit- để biết thêm thông tin). Có 'pseudo-R2 dành cho GLiM, nhưng chúng gây tranh cãi (xem tại đây: which-pseudo-r2-to-report-for-logistic-regression , để biết thêm thông tin).
gung - Phục hồi Monica

1
Cảm ơn rất nhiều vì bình luận của bạn (và xin lỗi, tôi mất quá nhiều thời gian để trả lời ... Tôi đã mất câu hỏi này và đã hoàn toàn quên rằng tôi đã không đưa nó vào SO). Đó là một vài lời giải thích tuyệt vời, cảm ơn. Tôi đoán câu hỏi của tôi là: Tôi giả sử rằng các gói thống kê này không chạy OLS vì có một số vấn đề cơ bản khi chạy với dữ liệu có trọng số khảo sát. Tôi dường như không thể tìm ra, tuy nhiên, vấn đề đó là gì.
RickyB

1
Deviance là một khái quát của phương sai, và lệch lạc dự kiến ​​là một khái quát của R-vuông. Vấn đề là dường như không có câu trả lời dễ dàng hoặc chung chung cho sự sai lệch dự kiến, xem ví dụ ở đây: stats.stackexchange.com/questions/124306/ Lỗi
nukimov

Câu trả lời:


2

Từ những gì tôi có thể nói, chúng ta không thể chạy hồi quy bình phương nhỏ nhất bình thường trong R khi sử dụng dữ liệu có trọng số và surveygói. Ở đây, chúng ta phải sử dụng svyglm(), thay vào đó chạy một mô hình tuyến tính tổng quát (có thể là điều tương tự? Tôi mờ ở đây về những gì khác biệt).

svyglmsẽ cung cấp cho bạn một mô hình tuyến tính nếu bạn sử dụng family = gaussian()dường như là mặc định từ họa tiết khảo sát (trong phiên bản 3.32-1). Xem ví dụ nơi họ tìm thấy regmodel.

Có vẻ như gói chỉ đảm bảo rằng bạn sử dụng đúng trọng lượng khi gọi glm. Vì vậy, nếu kết quả của bạn là liên tục và bạn cho rằng nó thường được phân phối iid thì bạn nên sử dụng family = gaussian(). Kết quả là một mô hình tuyến tính có trọng số. Câu trả lời này

Tại sao chúng ta không thể chạy OLS trong surveygói, trong khi dường như điều này có thể thực hiện với dữ liệu có trọng số trong Stata?

bằng cách nói rằng bạn thực sự có thể làm điều đó với surveygói. Đối với câu hỏi sau đây

Sự khác biệt trong giải thích giữa độ lệch của mô hình tuyến tính tổng quát và giá trị r bình phương là gì?

Có một công thức thẳng về phía trước để có được với như một số người đã đề cập trong các ý kiến. Thêm trọng lượng cũng không thay đổi bất cứ điều gì như tôi hiển thị bên dướiR2family = 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

Độ lệch chỉ là tổng các lỗi vuông khi bạn sử dụng family = gaussian().

Hãy cẩn thận

Tôi giả sử rằng bạn muốn một mô hình tuyến tính từ câu hỏi của bạn. Hơn nữa, tôi chưa bao giờ sử dụng surveygói mà nhanh chóng quét qua nó và đưa ra các giả định về những gì tôi làm trong câu trả lời của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.