Rに観測値や予測値を追加するときに線形回帰を効率的に更新する


15

観測または予測子が追加されたときに線形モデルを効率的に更新する方法をRで見つけることに興味があります。biglmには観測値を追加する際の更新機能がありますが、データはメモリに常駐するのに十分なサイズです(ただし、更新するインスタンスは多数あります)。これを素手で行う方法、例えばQR分解を更新する方法があります(HammarlingとLucasによる「QR分解と最小二乗問題の更新」を参照)が、既存の実装を期待しています。

回答:


6

探しているアルゴリズムが実際にApplied Statistics 274、1992、Vol 41(2)のようなものである場合、ファイルにデータを保持する必要がないため、biglmを使用できます。


感謝しますが、数予測子でbiglmを更新できますか?観測のみを更新すると思った。
ギャップのある

予測変数を追加するための閉じた形式のソリューションはありますか?inv(X'X)に相当するものが必要ですが、列を追加するために存在しますか?いずれにせよ、あなたの問題は、たとえば数千(数千)数百(数百)ほどの「小さな」ものではありませんか?それは本当に重要ですか?
ダークエデルブエッテル

2
SVDを更新する単純な閉じた形式と、QRのより複雑な式があります。数千のモデルを解く場合、計算上の節約は非常に大きくなります。Rで実装できますが、少し作業が必要です。それは素晴らしいプロジェクトです。
ギャップのある

2
まあ、私はあなたの店に有能なITチームがあることを理解しています。彼らはあなたのために厳しいものを実装できると確信しています。
ダークエデルブエッテル

4

MATLABでランク1つのQR更新機能があり、ここで あなたの因子保存し回帰線形のp変量の係数を更新する複雑では。p

数か月前に数日間検索しましたが、Rで同等のものを見つけることができませんでした(cranには多くのqr.update関数がありますが、フードの下を見ると、それらは偽物です-つまり、lm.updateすべて同じ)。

更新:パッケージ 'leaps'のソースで試してください。Rソースには、ランク1のQR更新を実装していると思われるパッケージの/ srcにあるFORTRANルーチン「forwrd」を呼び出す関数「leaps.forward」があります。


3

線形モデルオブジェクトの更新機能を試してみませんか

update.lm( lm.obj, formula, data, weights, subset, na.action)

このリンクをご覧ください

  • 更新機能の一般的な説明:

http://stat.ethz.ch/R-manual/R-devel/library/stats/html/update.html

  • update.lmに関する特定の説明:

http://www.science.oregonstate.edu/~shenr/Rhelp/update.lm.html


3
更新では機能しないものが2つあります(注意:update.lmは非推奨です)。まず、数式を使用します。これにより、lm.fit()よりも実行が400%遅くなります。2番目に、モデル全体を再評価します。ここでは効率の向上はありません。
ギャップのある

事実のおかげで、私は中型モデルのアップデートを使用しています。おそらくあなたの場合は役に立ちません。
deps_stats

1

matlab qrアップデートに相当するものを長い間探していましたが、跳躍は良い方法のようです!

Rでは、パッケージstrucchangeのrecresid()関数を見ることができます。これは、観測値(変数ではない!)を追加したときに再帰的残差を与えます。私の推測では、これは再帰的なベータ版(コード内のbetar?)を取得するためにほとんど変更を必要としません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.