Cách khắc phục một hệ số và phù hợp với các hệ số khác bằng hồi quy


11

Tôi muốn sửa thủ công một hệ số nhất định, giả sử , sau đó khớp hệ số với tất cả các yếu tố dự đoán khác, trong khi vẫn giữ trong mô hình.β 1 = 1.0β1=1.0β1=1.0

Làm thế nào tôi có thể đạt được điều này bằng cách sử dụng R? Tôi đặc biệt muốn làm việc với LASSO ( glmnet) nếu có thể.

Ngoài ra, làm cách nào tôi có thể giới hạn hệ số này trong một phạm vi cụ thể, giả sử ?0.5β11.0


Để chỉ định các ràng buộc hộp trên các hệ số được trang bị, có các đối số low.limits và Upper.limits trong glmnet, phải không?
Tom Wenseleers

Câu trả lời:


4

Bạn cần sử dụng offsetđối số như thế này:

library(glmnet)
x=matrix(rnorm(100*20),100,20)
x1=matrix(rnorm(100),100,1)
y=rnorm(100)
fit1=glmnet(x,y,offset=x1)
fit1$offset
print(fit1)

Về phạm vi ... Tôi không nghĩ rằng đã được thực hiện trong glmnet. Nếu họ sử dụng một số phương pháp số, bạn có thể muốn đào sâu vào mã R và cố gắng hạn chế nó ở đó, nhưng bạn sẽ cần một nền tảng lập trình tốt, vững chắc.


2
Là những gì offsetthực sự đang làm gì? Làm thế nào là giá trị được 1.1*x1xác định từ câu hỏi?
whuber

Tôi đã đọc tài liệu về 'offset' trong glmnet và tôi vẫn không chắc nó làm gì. Tôi không thể tìm thấy bất kỳ ví dụ tuyệt vời nào, nhưng hầu hết các quy trình Poisson tham khảo. Tại sao 1.1 * x1 được sử dụng?
raco

Tôi nghĩ rằng anh ta đang sửa các hệ số là . Tôi chỉ chỉnh sửa câu trả lời. Giá trị bù là thuật ngữ trong đó hệ số của nó không được ước tính bởi mô hình nhưng được giả sử là có giá trị 1.β1=1.1
Stat

Tôi đủ hạnh phúc với câu trả lời này. Tôi có thể lặp lại qua các "hệ số" bù khác nhau và so sánh các mô hình. Cảm ơn!
raco

1
Liên quan đến offsettrong glmnetgói, câu trả lời do Stat cung cấp không có nghĩa gì với tôi. Khi tôi chạy fit1 beta)] Tôi không thấy bất kỳ β 1 = 1,0 . Bạn có thể làm rõ làm thế nào bù đắp làm việc trong ví dụ của bạn? Đối với phạm vi của betas, bạn có thể sử dụng và đối số. beta[,ncol(fit1β1=1.0lower.limitsupper limits
Mario Nuñez

9

Hãy nghĩ xem. Bạn có:

Y=b0+b1x1+b2x2+e

(để đơn giản) Bạn muốn buộc vì vậy, bạn muốnb1=1

Y=b0+x1+b2x2+e

vì vậy bạn chỉ có thể trừ từ mỗi bên để lại:x1

Ynew=Yx1=b0+b2x2+e

b2


2
Đó là phần dễ dàng (và đã được giải quyết trong các chủ đề khác khi tôi nhớ lại). Điều gì về việc giới hạn hệ số trong một phạm vi? Phần đặc biệt khó khăn của vấn đề này là đạt được giới hạn tin cậy tốt khi ước tính nằm trên ranh giới của vùng ràng buộc.
whuber

2
Điều đó chắc chắn là khó hơn. Tôi đã bỏ lỡ cuối bài. Nhưng tôi nghĩ tôi nên để lại câu trả lời của mình vì nó trả lời một phần của câu hỏi
Peter Flom - Tái lập Monica

β11β1=0.75Ynew=Y.75x1=β0+(β10.75)x1+β2x2+ϵβ1

1
Có, nếu nó được cố định ở 0,75 thì làm những gì bạn nói sẽ hiệu quả. Nhưng như @whuber chỉ ra, đó là phần dễ dàng của vấn đề này
Peter Flom - Tái lập Monica

2
@whuber, trong khuôn khổ Bayes, bạn có thể đưa vào một bước của Đô thị để đưa ra bất kỳ hệ số nào ngoài phạm vi của bạn hoặc thay vào đó bạn có thể lấy mẫu từ phân phối bình thường đa biến bị cắt ngắn.
Giăng

3

Đối với việc hạn chế các hệ số nằm trong một phạm vi, cách tiếp cận Bayes để ước tính là một phương tiện để thực hiện điều này.

Cụ thể, người ta sẽ dựa vào Chuỗi Markov Monte Carlo. Đầu tiên, hãy xem xét thuật toán lấy mẫu Gibbs, đó là cách bạn sẽ phù hợp với MCMC trong khung Bayes mà không có hạn chế. Trong lấy mẫu Gibbs, trong mỗi bước của thuật toán, bạn lấy mẫu từ phân phối sau của từng tham số (hoặc nhóm tham số) có điều kiện trên dữ liệu và tất cả các tham số khác. Wikipedia cung cấp một bản tóm tắt tốt về cách tiếp cận.

Một cách để hạn chế phạm vi là áp dụng một bước của Metropolis-Hastings. Ý tưởng cơ bản là chỉ cần loại bỏ bất kỳ biến mô phỏng nào nằm ngoài giới hạn của bạn. Sau đó, bạn có thể tiếp tục lấy mẫu lại cho đến khi nó nằm trong giới hạn của bạn trước khi chuyển sang lần lặp tiếp theo. Nhược điểm của điều này là bạn có thể bị kẹt mô phỏng rất nhiều lần, làm chậm MCMC. Một cách tiếp cận khác, ban đầu được John Geweke phát triển trong một vài bài báo và được Rodriguez-Yam, Davis, Sharpe mở rộng trong một bài báo để mô phỏng từ một phân phối thông thường đa biến bị hạn chế. Cách tiếp cận này có thể xử lý các ràng buộc bất bình đẳng tuyến tính và phi tuyến tính trên các tham số và tôi đã có một số thành công với nó.


Để chỉ định các ràng buộc hộp trên các hệ số được trang bị, có các đối số low.limits và Upper.limits trong glmnet, phải không?
Tom Wenseleers

@TomWenseleers Tôi đã trả lời chung chung hơn. Nhìn vào một số câu trả lời khác liên quan đến glmnet.
Giăng

2

Tôi không quen thuộc với LASSO hoặc glmnet, nhưng lavaan(viết tắt của "phân tích biến tiềm ẩn") tạo điều kiện cho nhiều mô hình hồi quy với cả ràng buộc đẳng thức và ràng buộc bất đẳng thức giới hạn đơn (xem bảng trên trang 7 của PDF này, "lavaan: Gói R cho mô hình phương trình cấu trúc " ). Tôi không biết liệu bạn có thể có cả giới hạn trên và dưới của hệ số hay không, nhưng có lẽ bạn có thể thêm từng giới hạn bằng các dòng riêng biệt, ví dụ:

Coefficient>.49999999
Coefficient<1.0000001

Tất nhiên, nếu bạn đang chuẩn hóa mọi thứ trước khi lắp mô hình, bạn không cần phải lo lắng về việc áp đặt giới hạn trên 1 cho các hệ số hồi quy của mình. Tôi muốn nói rằng bạn tốt hơn nên bỏ qua nó trong trường hợp này, chỉ trong trường hợp có điều gì đó không ổn! ( lavaan vẫn còn trong phiên bản beta sau khi tất cả ... Tôi đã nhìn thấy một số kết quả hơi tanh sử dụng hạn chế riêng của tôi về nó cho đến nay.)


Để chỉ định các ràng buộc hộp trên các hệ số được trang bị, có các đối số low.limits và Upper.limits trong glmnet, phải không?
Tom Wenseleers
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.