0

次のような単純な線形回帰をデータフレームで実行しようとしています。実際のデータセットには、より多くの因子とより多くの予測子(x)があり、すべてyを予測しようとしています。

f1 f2 x y
x  a  1 3.3
x  a  2 3.2
x  a  3 3.04
x  b  1 4.5
x  b  2 4.9
x  b  3 8
y  a  1 20.1
y  a  2 20.3
y  a  3 21.9
y  b  1 101.2
y  b  2 201.8
y  b  3 332.8

f1とf2の組み合わせごとに、傾向が異なることに注意してください。私がやりたいのは、f1とf2の組み合わせごとにlmモデルを作成し、それをある種のリストに保存することです。そうすれば、predictを呼び出すと、適切なモデルを使用して、xに基づいてyを予測できるはずです。以下に示すように、モデルのリストを作成するにはldplyを使用する必要があると思います

lm.model.list = ldply(x,.(f1,f2),function(x) {
 fit = lm(x$y ~ x$x)
 return(fit)
 }

これはエラーになります、

Error: attempt to apply non-function

また、すべてをリストに入れると仮定しますが、その後、predictをどのように処理しますか?

編集:モデリング自体の要素にインジケーター変数を使用できることに気付きましたが、これは避けたいと思います。

4

1 に答える 1

3

あなたが欲しいのはただだと思います:

fit <- lm(y ~ x+ f1*f2, data=dfrm)

これにより、f1 と f2 の相互作用のレベルごとに異なる予測が得られます。predictこれは 1 つのモデルにすぎませんが、f1 と f2 の任意の組み合わせを使用して、関数を使用して予測を「照会」することができます。?formula を見て、線形モデルがどのように解釈されるかを理解するのに時間を費やす必要があります。

于 2012-12-02T21:49:43.137 に答える