回答:
次のoffset
ような引数を使用する必要があります。
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)
範囲について...は実装されていないと思いますglmnet
。彼らが数値的な方法を使用している場合は、Rコードを掘り下げてそこに制限することをお勧めしますが、プログラミングの十分なバックグラウンドが必要です。
offset
実際に何をしていますか?の値は1.1*x1
質問からどのように決定されますか?
offset
でglmnet
パッケージ、Stat社が提供する答えは私を感じることはありません。fit1 beta)]を実行すると、表示されません。あなたの例でオフセットがどのように機能しているかを明確にできますか?ベータの範囲については、および引数を使用できます。β 1 = 1.0lower.limits
upper limits
さて、考えましょう。あなたが持っている:
(簡単にするために)を強制したいので、
そのため、各側からを引くだけで済みます。
次に、を推定できます。
係数を範囲内に制限することに関して、推定へのベイズのアプローチはこれを達成するための1つの手段です。
特に、マルコフ連鎖モンテカルロに依存するでしょう。まず、ギブスサンプリングアルゴリズムについて考えます。これは、MCMCを制限なしのベイジアンフレームワークに適合させる方法です。ギブスサンプリングでは、アルゴリズムの各ステップで、データと他のすべてのパラメーターを条件として、各パラメーター(またはパラメーターのグループ)の事後分布からサンプリングします。ウィキペディアはアプローチの良い要約を提供します。
範囲を制約する1つの方法は、Metropolis-Hastingsステップを適用することです。基本的な考え方は、範囲外にあるシミュレートされた変数を単に破棄することです。その後、次の反復に進む前に、それが範囲内になるまで再サンプリングを続けることができます。これの欠点は、シミュレーションを何度もスタックする可能性があり、MCMCの速度が低下することです。John Gewekeによって最初にいくつかの 論文で開発され、Rodriguez-Yam、Davis、Sharpeによって拡張された別のアプローチは、制約付き多変量正規分布からシミュレーションすることです。このアプローチは、パラメーターの線形および非線形の不等式制約を処理でき、私はある程度成功しました。
glmnet
。
私はLASSOまたはglmnet
に精通していませんが、lavaan
(「潜在変数分析」の略)は、等式制約と単一境界不等式制約の両方を使用して多重回帰モデルを容易にします(このPDFの 7ページの表「lavaan:An R package」を参照)構造方程式モデリング用」)。係数に上限と下限の両方を設定できるかどうかはわかりませんが、おそらくそれぞれの上限を別々の行で追加できます。例:
Coefficient>.49999999
Coefficient<1.0000001
もちろん、モデルをフィッティングする前にすべてを標準化している場合は、いずれにしても、回帰係数に上限1を課すことを心配する必要はありません。この場合は、何か問題が発生した場合に備えて、省略したほうがよいと思います。(lavaan
あるすべての後にまだベータ版で...私は、これまでそれを私自身の限られた使用中のいくつかのやや生臭い結果を見てきました。)