0

モデルがあり、モデルに基づいて、の新しい値を含む新しいデータフレームの予測を取得するためlm(y~x+I(log(x))に使用したいと思います。予測はモデルのAsIs関数をどのように処理しますか?の引数で追加指定する必要がありますか、それともから構築して使用する必要があることを理解していますか?predictxII(log(x))newdatapredictpredictI(log(x))x

アップデート

@DWin:変数がモデルに入力される方法は、特に交互作用の係数に影響します。私の例は単純ですが、これを試してみてください

x<-rep(seq(0,100,by=1),10)
y<-15+2*rnorm(1010,10,4)*x+2*rnorm(1010,10,4)*x^(1/2)+rnorm(1010,20,100)
z<-x^2

plot(x,y)
lm1<-lm(y~x*I(x^2))
lm2<-lm(y~x*x^2)
lm3<-lm(y~x*z)


summary(lm1)
summary(lm2)
summary(lm3)

lm1 = lm3であることがわかりますが、lm2は別のものです(1つの係数のみ)。ダミー変数を作成したくないと仮定するとz(大規模なデータセットでは計算上非効率的)、lm3のような相互作用モデルを構築する唯一の方法はを使用することIです。繰り返しますが、これは非常に単純な例です(統計的に意味がない場合があります)が、複雑なモデルでは意味があります。

@Ben Bolker:推測を避けて、信頼できる答えを求めたいと思います(モデルは例よりもはるかに複雑なので、モデルでこれを直接確認することはできません)。私の推測では、predict正しく仮定して構築しますI(log(x))

4

1 に答える 1

3

変数名を用語のように見せかける必要はありませんI(x)。newdata引数で「x」を使用するだけです。

理由lm(y~x*I(x^2))lm(y~x*x^2)違いは、「^」と「*」がRの数式用に予約された記号であるためです。これは、log関数には当てはまりません。また、インタラクションは。でしか構築できないというのも誤りですI()。Rで2次多項式が必要な場合は、を使用する必要がありますpoly(x, 2)。I(log(x))を使用してビルドする場合、または単に使用log(x)する場合は、同じモデルを取得する必要があります。次を使用すると、両方とも予測値に適切に変換されpredictます。

newdata=dataframe( x=seq( min(x), max(x), length=10) )

を使用polyすると、の使用によって一般的に引き起こされる誤った推論から保護されますI(x^2)

于 2013-01-21T23:05:18.770 に答える