R の caret パッケージメモ~train:caret 線形回帰~

スポンサーリンク

R で "caret" パッケージを使って分析をする際の解説記事です。まずは、線形回帰分析 (lm) の仕方を解説していきます。

caret パッケージのインストール

最初に、"caret" パッケージをインストールします。"caret" をライブラリ化すると、合わせて "lattice", "ggplot2" もロードされます。

> install.pachages("caret")
> library(caret)

分析で用意するデータ

今回は、車が停滞するまでに必要な距離(速度別)のデータである "cars" を使用します。
※余談ですが、このデータは 1920年代に測定されたものだそうです。

> dim(cars)
[1] 50 2 > head(cars)
   speed  dist
1        4     2
2        4    10
3        7     4
4        7    22
5        8    16
6        9    10

caret での線形回帰モデル構築

caret でモデル構築を行うには "train関数" を使用します。

> cars.lm <- train(
 + data = cars,        # 元となるデータを選択
 + dist ~ .,               # 結果変数と説明変数を選択
 + method = "lm")   # モデル選択。線形回帰は "lm"

モデルの評価は "RMSE" の値を確認します。
この値が小さいほど、モデルの性能がいいことを示します。

> cars.lm
Linear Regression 50 samples
1 predictor No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 50, 50, 50, 50, 50, 50, ...
Resampling results: RMSE Rsquared
15.16135 0.6679958 Tuning parameter 'intercept' was held constant at a value of TRUE

cars.lm のサマリーを表示します。ここは普通に lm関数を使った時と同じです。

> summary(cars.lm)
Call:
lm(formula = .outcome ~ ., data = dat) Residuals:
Min 1Q Median 3Q Max
-29.069 -9.525 -2.272 9.215 43.201 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -17.5791 6.7584 -2.601 0.0123 *
speed 3.9324 0.4155 9.464 1.49e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 15.38 on 48 degrees of freedom
Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12

caret での分析結果の可視化

散布図に回帰直線を引く際は "lattice" パッケージ中の "xyplot関数" を使用します。"lattice" パッケージは "caret" をロードする際に合わせてロードされます。

> xyplot(dist ~ speed, data = cars, type = c("p", "r"), col.line = "red",
+ main = "speed x dist (cars)")

xyplotで引いた散布図と回帰直線