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)")