[(株)数理システム]

(S-PLUS) S-PLUS mini course 第27回


S-PLUS mini course の27回目をお届けします。

ゴールデンウィークも終わり、すっかり気が抜けてしまいました。
皆様はいかがお過ごしでしょうか?

さて、前回2回ほどで因子データに関するお話をしましたが、今回はもう一度回帰に戻り、予測方法をご紹介したいと思います。

以前の mini course(2004/1/27 の22回)で、計算された回帰結果から、新しいデータを使って予測を行うには

fit2 <- lm(Fuel ~ Weight, data=fuel.frame)
predict(fit2, new=data.frame(Weight=2000))


new=データ名でもOK でした。上のコマンドでは、Weight=2000 の車の Fuel を求めました。では、このときに回帰に因子データがあるとどうなるか、見てみましょう。
もう一度、因子だけの説明変数を持つ回帰をします。

options(contrasts=c("contr.treatment", "contr.poly"))
fit4 <- lm(Fuel ~ Type, data=fuel.frame)


ちなみに、このとき定数項を持たない回帰をすると、いわゆる数量化理論のI類になりますが、

fit5 <- lm(Fuel ~ Type - 1, data=fuel.frame)

と、-1 を付けます。

coef(fit4)
coef(fit5)


として、結果を比べてみてください。
さて、この fit4 の結果を利用して、新しいデータから予測を行いますが、前のコマンド同様、関数 predict を引数 new を指定して呼び出します。その前に

fuel.frame$Type[c(1,15,25)]
[1] Small Sporty Compact
Levels (first 5 out of 6):

[1] "Compact" "Large" "Medium" "Small" "Sporty"

車の1,15,25番目はそれぞれ Small, Sporty, Compact なので2通りの方法を用いて、予測をします。

predict(fit4, new=fuel.frame[c(1,15,25),])
   Eagle Summit 4  Dodge Daytona  Chevrolet Beretta 4
              3.27338           3.957606                 4.167655

# 元のデータの1,5,25 番目を用いて予測

predict(fit4, new=data.frame(Type=c("Small", "Sporty", "Compact")))
         1            2            3
3.27338  3.957606  4.167655

# 新しいデータ Small, Sporty, Compact を作って予測

表示方法が違っていても、結果は同じになります。

次回は回帰同士の比較方法をご紹介しましょう。
お楽しみに。

----------------------------------------------------------------

? お問い合わせ/資料請求はお気軽に。
(株)数理システム《S-PLUS》グループ <splus-info@msi.co.jp>