Cara memperbaiki satu koefisien dan menyesuaikan yang lainnya menggunakan regresi


11

Saya ingin secara manual memperbaiki koefisien tertentu, katakan , lalu koefisien dengan semua prediktor lain, sambil menjaga dalam model.β 1 = 1.0β1=1.0β1=1.0

Bagaimana saya bisa mencapai ini menggunakan R? Saya terutama ingin bekerja dengan LASSO ( glmnet) jika memungkinkan.

Atau, bagaimana saya dapat membatasi koefisien ini untuk rentang tertentu, katakan ?0.5β11.0


Untuk menentukan batasan kotak pada koefisien yang dipasang ada argumen lower.limits dan upper.limits di glmnet, kan?
Tom Wenseleers

Jawaban:


4

Anda perlu menggunakan offsetargumen seperti ini:

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)

Tentang jangkauan ... Saya pikir itu belum diterapkan di glmnet. Jika mereka menggunakan beberapa metode numerik, Anda mungkin ingin menggali ke dalam kode R dan mencoba untuk membatasi di sana, tetapi Anda akan membutuhkan latar belakang pemrograman yang bagus dan solid.


2
Apa yang offsetsebenarnya sedang dilakukan? Bagaimana nilai 1.1*x1ditentukan dari pertanyaan?
Whuber

Saya membaca dokumentasi untuk 'offset' di glmnet, dan saya masih tidak yakin apa fungsinya. Saya tidak dapat menemukan contoh yang bagus, tetapi kebanyakan proses referensi Poisson. Mengapa 1.1 * x1 digunakan?
raco

Saya pikir dia memperbaiki koefisien menjadi . Saya baru saja mengedit jawabannya. Offset adalah istilah di mana koefisiennya tidak diestimasi oleh model tetapi diasumsikan memiliki nilai 1.β1=1.1
Stat

Saya cukup senang dengan jawaban ini. Saya dapat mengulangi berbagai "koefisien" offset yang berbeda & membandingkan model. Terima kasih!
raco

1
offsetglmnetbeta[,ncol(fit1β1=1.0lower.limitsupper limits

9

Baiklah, mari berpikir. Kamu punya:

Y=b0+b1x1+b2x2+e

b1=1

Y=b0+x1+b2x2+e

x1

Ynew=Yx1=b0+b2x2+e

b2


2
Itu bagian yang mudah (dan telah dibahas di utas lain seingat saya). Bagaimana dengan membatasi koefisien pada rentang? Bagian yang paling sulit dari masalah ini adalah mendapatkan batas kepercayaan yang baik ketika perkiraan tersebut terletak pada batas wilayah kendala.
whuber

2
Itu jelas lebih sulit. Saya merindukan akhir posting. Tapi saya pikir saya harus meninggalkan jawaban saya karena itu menjawab bagian dari pertanyaan
Peter Flom - Reinstate Monica

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

1
Ya, jika diperbaiki pada 0,75 maka melakukan apa yang Anda katakan akan berhasil. Tetapi seperti yang ditunjukkan oleh @whuber, itulah bagian mudah dari masalah ini
Peter Flom - Reinstate Monica

2
@whuber, dalam kerangka Bayesian, Anda dapat melakukan langkah Metropolis untuk membuang koefisien di luar rentang Anda atau secara bergantian Anda dapat mengambil sampel dari distribusi normal multivarian terpotong.
John

3

Sehubungan dengan membatasi koefisien agar berada dalam kisaran, pendekatan Bayesian untuk estimasi adalah salah satu cara untuk mencapai ini.

Secara khusus, orang akan bergantung pada Markov Chain Monte Carlo. Pertama, pertimbangkan algoritma sampling Gibbs, yang merupakan cara Anda menyesuaikan MCMC dalam kerangka Bayesian tanpa batasan. Dalam pengambilan sampel Gibbs, dalam setiap langkah algoritma Anda sampel dari distribusi posterior setiap parameter (atau kelompok parameter) bersyarat pada data dan semua parameter lainnya. Wikipedia memberikan ringkasan pendekatan yang bagus.

Salah satu cara untuk membatasi rentang adalah menerapkan langkah Metropolis-Hastings. Ide dasarnya adalah membuang variabel simulasi yang ada di luar batas Anda. Anda kemudian dapat terus mengambil sampel ulang hingga berada dalam batas Anda sebelum melanjutkan ke iterasi berikutnya. Kelemahan dari ini adalah bahwa Anda mungkin akan terjebak mensimulasikan banyak kali, yang memperlambat MCMC. Pendekatan alternatif, yang awalnya dikembangkan oleh John Geweke dalam beberapa makalah dan diperluas dalam makalah oleh Rodriguez-Yam, Davis, Sharpe adalah untuk mensimulasikan dari distribusi normal multivariat yang dibatasi. Pendekatan ini dapat menangani kendala ketimpangan linear dan non-linear pada parameter dan saya sudah cukup sukses dengannya.


Untuk menentukan batasan kotak pada koefisien yang dipasang ada argumen lower.limits dan upper.limits di glmnet, kan?
Tom Wenseleers

@ TomWenseleers saya menjawab lebih umum. Lihatlah beberapa jawaban lain sehubungan dengan glmnet.
John

2

Saya tidak terbiasa dengan LASSO atau glmnet, tetapi lavaan(kependekan dari "analisis variabel laten") memfasilitasi beberapa model regresi dengan kendala kesetaraan dan kendala ketidaksetaraan tunggal (lihat tabel di halaman 7 dari PDF ini, "lavaan: Paket R untuk pemodelan persamaan struktural " ). Saya tidak tahu apakah Anda dapat memiliki batas atas dan bawah pada koefisien, tetapi mungkin Anda dapat menambahkan setiap ikatan dengan garis yang berbeda, misalnya:

Coefficient>.49999999
Coefficient<1.0000001

Tentu saja, jika Anda menstandarkan semuanya sebelum menyesuaikan model, Anda tidak perlu khawatir tentang memaksakan batas atas 1 pada koefisien regresi Anda. Saya akan mengatakan Anda lebih baik menghilangkannya dalam hal ini, untuk berjaga-jaga jika terjadi kesalahan! ( lavaan Ini masih dalam versi beta setelah semua ... Saya telah melihat beberapa hasil yang sedikit amis di saya penggunaan terbatas sendiri itu sejauh ini.)


Untuk menentukan batasan kotak pada koefisien yang dipasang ada argumen lower.limits dan upper.limits di glmnet, kan?
Tom Wenseleers
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.