Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI Machine Learning Repository の Bike Sharing のデータ分析3- 線形回帰モデルで予測する。

Bing Image Creator で生成: Close up of Paeonia suffruticosa flowers, background is Orion stars

www.crosshyou.info

の続きです。前回は、データフレームをトレーニング用とテスト用に分けました。それではいよいよモデルを作って予測してみましょう。

まずはじめは、線形回帰モデル、Linear Regression でやってみます。

R で線形回帰するには、lm() 関数ですね。

step() 関数であまり重要でない変数をなくします。

summary() 関数で出来上がったモデルを確認します。

2012年のほうが2011年よりも3900台も多いですね。土曜は490台多く、月曜は240台少ないなどわかります。

こうして作成されたモデルで df_test のデータを予測します。predict() 関数を使います。

この予測された値と実際の値を一つのデータフレームにして、グラフで表示してみます。

はじめの 10 個ほどのデータですが、結構、予測がうまくいっているように見えます。

グラフを描きます。

赤い線が線形回帰モデルで予測した値、黒い線が実際の値です。結構当たっているように思います。

RMSE を計算します。

df_test の cnt の平均は、4460 なので、824 / 4460 = 18.5% ぐらいの誤差ですね。

今回は以上です。

次回は、

www.crosshyou.info

です。

初めから読むには、

www.crosshyou.info

です。

今回のコードは、以下になります。

#
# 予測モデル1: linear regression
fit_lm <- lm(cnt ~ ., data = df_train)
#
# step() 関数で不要な変数を削除する
fit_lm <- step(fit_lm, trace = FALSE)
#
# 予測モデル1の確認
summary(fit_lm)
#
# 予測モデル1で予測
pred_lm <- predict(fit_lm, newdata = df_test)
#
# 予測値と実際の値のデータフレームを作成
df_results <- tibble(time = df_test$t,
                     jissai = df_test$cnt,
                     lm = pred_lm)
df_results
#
# 予測値と実際の値のグラフ
df_results |> 
  ggplot(aes(x = time)) +
  geom_line(aes(y = lm), color = "red") +
  geom_line(aes(y = jissai))
#
# RMSE の計算
rmse_lm <- sqrt(mean*1
rmse_lm
#

*1:pred_lm - df_test$cnt)^2