Tôi đang cố gắng phù hợp với mô hình hồi quy tuyến tính đa biến với khoảng 60 biến dự đoán và 30 quan sát, vì vậy tôi đang sử dụng gói glmnet để hồi quy chính quy vì p> n.
Tôi đã xem qua tài liệu và các câu hỏi khác nhưng tôi vẫn không thể giải thích kết quả, đây là mã mẫu (với 20 dự đoán và 10 quan sát để đơn giản hóa):
Tôi tạo một ma trận x với các hàng num = num quan sát và num cols = num dự đoán và một vectơ y đại diện cho biến trả lời
> x=matrix(rnorm(10*20),10,20)
> y=rnorm(10)
Tôi phù hợp với mô hình glmnet để mặc định alpha (= 1 cho hình phạt lasso)
> fit1=glmnet(x,y)
> print(fit1)
Tôi hiểu rằng tôi nhận được các dự đoán khác nhau với việc giảm giá trị của lambda (tức là hình phạt)
Call: glmnet(x = x, y = y)
Df %Dev Lambda
[1,] 0 0.00000 0.890700
[2,] 1 0.06159 0.850200
[3,] 1 0.11770 0.811500
[4,] 1 0.16880 0.774600
.
.
.
[96,] 10 0.99740 0.010730
[97,] 10 0.99760 0.010240
[98,] 10 0.99780 0.009775
[99,] 10 0.99800 0.009331
[100,] 10 0.99820 0.008907
Bây giờ tôi dự đoán các giá trị Beta của mình, ví dụ: giá trị lambda nhỏ nhất được đưa ra từ glmnet
> predict(fit1,type="coef", s = 0.008907)
21 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) -0.08872364
V1 0.23734885
V2 -0.35472137
V3 -0.08088463
V4 .
V5 .
V6 .
V7 0.31127123
V8 .
V9 .
V10 .
V11 0.10636867
V12 .
V13 -0.20328200
V14 -0.77717745
V15 .
V16 -0.25924281
V17 .
V18 .
V19 -0.57989929
V20 -0.22522859
Nếu thay vào đó tôi chọn lambda với
cv <- cv.glmnet(x,y)
model=glmnet(x,y,lambda=cv$lambda.min)
Tất cả các biến sẽ là (.).
Nghi ngờ và câu hỏi:
- Tôi không chắc chắn về cách chọn lambda.
- Tôi có nên sử dụng các biến không (.) Để phù hợp với mô hình khác không? Trong trường hợp của tôi, tôi muốn giữ càng nhiều biến càng tốt.
- Làm thế nào để tôi biết giá trị p, tức là biến nào dự đoán đáng kể phản ứng?
Tôi xin lỗi vì kiến thức thống kê kém của tôi! Và cảm ơn bạn đã giúp đỡ.