2014-06-10 16 views
11

Tôi đang chạy hồi quy với 67 quan sát và 32 biến. Tôi đang làm lựa chọn biến bằng cách sử dụng chức năng cv.glmnet từ gói glmnet. Có một biến tôi muốn ép buộc vào mô hình. (Nó được giảm xuống trong quá trình bình thường.) Làm thế nào tôi có thể xác định điều kiện này trong cv.glmnet?Làm thế nào tôi có thể buộc cv.glmnet không thả một biến cụ thể?

Cảm ơn bạn!

Mã của tôi trông giống như sau:

glmntfit <- cv.glmnet(mydata[,-1], mydata[,1]) 
coef(glmntfit, s=glmntfit$lambda.1se) 

Và biến tôi muốn là mydata [2].

Trả lời

9

Điều này có thể đạt được bằng cách cung cấp một vector penalty.factor, như được mô tả trong ?glmnet. Hệ số phạt là 0 cho biết "biến luôn được bao gồm trong mô hình", trong khi 1 là giá trị mặc định.

glmntfit <- cv.glmnet(mydata[,-1], mydata[, 1], 
         penalty.factor=c(0, rep(1, ncol(mydata) - 2))) 
+0

'penal.factor = (tên (mydata) [1: ...] == 'VAR_TO_PENALIZE')' sẽ là một cách thanh lịch hơn để chọn biến đó. – smci

+0

Có khả năng là ngay cả sau khi thiết lập hình phạt.factor của một biến số 0, nó vẫn không bị ép buộc vào mô hình? –

Các vấn đề liên quan