Làm thế nào để xác định trọng số cho hồi quy WLS trong R?


8

Tôi đang cố gắng dự đoán tuổi như là một chức năng của một tập hợp các dấu hiệu methyl hóa DNA. Các dự báo này liên tục trong khoảng từ 0 đến 100. Khi thực hiện hồi quy OLS, tôi có thể thấy phương sai tăng theo tuổi.

Vì vậy, tôi quyết định phù hợp với mô hình hồi quy có trọng số. Tuy nhiên, tôi gặp khó khăn khi quyết định cách xác định trọng số cho mô hình của mình. Tôi đã sử dụng phương pháp fGLS, như vậy:

OLSressq <- OLSres^2                 # Square residuals
lnOLSressq <- log(OLSressq)          # Take natural log of squared residuals
aux <- lm(lnOLSressq~X)              # Run auxillary model
ghat <- fitted(aux)                  # Predict g^
hhat <- exp(ghat)                    # Create h^
fGLS <- lm(Y~X, weights = 1/hhat)    # Weight is 1/h^

Và đây là kết quả của tôi:

Call:
lm(formula = Y ~ X, weights = 1/hhat)

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-4.9288 -1.2491 -0.1325  1.2626  5.1452 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 23.1009494  5.2299867   4.417 1.64e-05 ***
XASPA       -0.1441404  0.0474738  -3.036  0.00271 ** 
XPDE4C       0.6421385  0.0812891   7.899 1.83e-13 ***
XELOVL2     -0.2040382  0.0866564  -2.355  0.01951 *  
XELOVL2sq    0.0088532  0.0009381   9.438  < 2e-16 ***
XEDARADD    -0.1965472  0.0348989  -5.632 5.98e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 1.762 on 200 degrees of freedom
Multiple R-squared:  0.9687,    Adjusted R-squared:  0.9679 
F-statistic:  1239 on 5 and 200 DF,  p-value: < 2.2e-16

Tuy nhiên, trước khi tìm ra cách thực hiện phương pháp fGLS, tôi đã chơi xung quanh với các trọng lượng khác nhau chỉ để xem điều gì sẽ xảy ra. Tôi đã sử dụng 1 / (phần dư bình phương của mô hình OLS) làm trọng số và kết thúc với điều này:

Call:
lm(formula = Y ~ X, weights = 1/OLSressq)

Weighted Residuals:
    Min      1Q  Median      3Q     Max 
-1.0893 -0.9916 -0.7855  0.9998  2.0238 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.8756737  1.1355861   27.19   <2e-16 ***
XASPA       -0.1956188  0.0116329  -16.82   <2e-16 ***
XPDE4C       0.6168490  0.0102149   60.39   <2e-16 ***
XELOVL2     -0.1596969  0.0116723  -13.68   <2e-16 ***
XELOVL2sq    0.0078459  0.0001593   49.26   <2e-16 ***
XEDARADD    -0.2492048  0.0068751  -36.25   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 1 on 200 degrees of freedom
Multiple R-squared:      1, Adjusted R-squared:      1 
F-statistic: 1.133e+06 on 5 and 200 DF,  p-value: < 2.2e-16

Vì sai số chuẩn còn lại nhỏ hơn, R² bằng 1 (thậm chí có thể xảy ra không?) Và thống kê F cao hơn rất nhiều, tôi rất muốn giả sử mô hình này tốt hơn so với những gì tôi đạt được thông qua phương pháp fGLS. Tuy nhiên, đối với tôi, việc chọn ngẫu nhiên các trọng số thông qua thử và sai sẽ luôn mang lại kết quả tồi tệ hơn so với khi bạn thực sự cố gắng ước tính các trọng số chính xác.

Ai đó có thể cho tôi một lời khuyên về việc sử dụng trọng lượng nào cho mô hình của tôi không? Tôi cũng đã đọc ở đây và ở đó rằng bạn không thể diễn giải R² giống như cách bạn làm khi thực hiện hồi quy OLS. Nhưng sau đó nó nên được giải thích như thế nào và tôi vẫn có thể sử dụng nó để bằng cách nào đó so sánh mô hình WLS của tôi với mô hình OLS của tôi?


2
Tôi sẽ rất thận trọng về điều đó R-squared = 1. Bạn có một ý tưởng về các trọng lượng tiềm năng nên là gì? Âm thanh như 1/(squared residuals of OLS model)chỉ là một phỏng đoán. Nếu bạn đang ở trong bóng tối về trọng lượng, tôi khuyên bạn nên sử dụng GLS hoặc Iterative weighted Least Squares.
Jon

Tôi phải thêm rằng, khi lắp cùng một mô hình vào một tập huấn luyện (một nửa dữ liệu gốc của tôi), thì bình phương R đã giảm từ 1 xuống 0,9983. Đó thực sự chỉ là một phỏng đoán, đó là lý do tại sao cuối cùng tôi đã sử dụng fGLS như được mô tả ở trên. Đó có phải là ý của bạn khi "Tôi đề nghị sử dụng GLS"? Tôi chỉ bối rối về lý do tại sao có vẻ như mô hình tôi tạo ra chỉ bằng cách đoán trọng lượng là phù hợp hơn so với mô hình tôi đã thực hiện bằng cách ước tính trọng lượng thông qua fGLS. Tôi chưa nghe nói về bình phương tối thiểu lặp đi lặp lại, nhưng tôi sẽ xem xét nó. Cảm ơn bạn.
I. Smeer

@Jon, GLS khả thi yêu cầu bạn chỉ định các trọng số (trong khi GLS không khả thi sử dụng trọng số tối ưu về mặt lý thuyết không phải là một công cụ ước tính khả thi, nghĩa là không thể sử dụng nó trong thực tế).
Richard Hardy

Vâng đúng rồi. Tuy nhiên, họ có thể chỉ định cấu trúc tương quan trong nlme::glshàm. Việc nlme::corClassescung cấp một danh sách các cấu trúc tương quan khác nhau.
Jon

Câu trả lời:


0

Tại sao bạn sử dụng FLGS? Bạn đã có sự không đồng nhất và mối tương quan giữa các phần dư? Và ma trận var-cov có phải là ẩn số không? Hãy thử bptest(your_model)và nếu giá trị p nhỏ hơn alpha (ví dụ 0,05) thì có độ không đồng nhất. Và sau đó, bạn nên cố gắng hiểu nếu có mối tương quan giữa các phần dư với xét nghiệm Durbin Watson : dwtest(your_model), nếu thống kê W nằm trong khoảng từ 1 đến 3, thì không có tương quan. Vì vậy, nếu bạn chỉ có sự không đồng nhất, bạn nên sử dụng WLS, như thế này:

mod_lin <- lm(Price~Weight+HP+Disp., data=df)
wts     <- 1/fitted( lm(abs(residuals(mod_lin))~fitted(mod_lin)) )^2
mod2    <- lm(Price~Weight+HP+Disp., data=df, weights=wts)

Vì vậy, mod2với mô hình cũ, bây giờ với WLS.

R-square = 1, nó quá kỳ lạ. Có lẽ có sự cộng tác.


1
Tại sao một bài kiểm tra DW sẽ thích hợp. Tôi nghĩ về nó như chỉ được sử dụng cho tương quan tự động và tôi không thấy điều đó sẽ áp dụng như thế nào trong trường hợp này.
meh

1
Chào mừng đến với xvalidated! Vui lòng xác định các chức năng gói bptestdwtestđến từ vì chúng không phải là một phần của phân phối R tiêu chuẩn.
Helix123

Bởi vì bạn cần hiểu công cụ ước tính nào là tốt nhất: như wls, fgls, ols ect ..
Lorenzo Famiglini 22/03/19
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.