
今回からしばらくは、UCI Machine Learning RepositoryのSeoul Bike Sharing Demandのデータを分析してみたいと思います。
Seoul Bike Sharing Demand [Dataset]. (2020). UCI Machine Learning Repository. https://doi.org/10.24432/C5F62R.

レンタルサイクルの貸出数を予測するモデルを作る、というタスクです。
ダウンロードしたExcel CSVファイルはこんな感じでした。

2行目に、私が変数名を挿入しました。
これをRで分析します。
まず、Tidyverseパッケージを読み込みます。

read_csv()関数でファイルを読み込みます。skip = 1 として2行目から読み込みます。

glimpse()関数で、データが読み込まれていることを確認します。

上手く読み込まれました。
na.omit()関数でNAのある行を念のため削除します。

dateが文字列型のままなので、dmy()関数で日付型に変換します。

dateが<date>となっていて、日付型になっていることが確認できます。
season, hol, funcを文字列型からファクター型に変換します。

summary()関数でサマリーをみてみます。

seasonは、春、夏、秋、冬の4つですね。holは休日か休日でないか、funcはyesかnoかです。
holとfuncは0, 1のダミー変数にしておきます。

今回のタスクは、bikeを予測することなので、bikeの分布を確認しておきましょう。


右の裾野が広い分布ですね。
対数変換した分布をみてみます。


今度は左の裾野が広い分布になりました。
sqrt()関数で平方根にしてみます。


平方根にした分布が一番、左右対称に近いですね。
ということで、bikeを平方根に変換しておきます。

今回は以上です。
次回は、
www.crosshyou.info
です。
今回のコードは以下になります。
#
# tidyverseの読み込み
library(tidyverse)
#
# CSVファイルの読み込み
df_raw <- read_csv("SeoulBikeData.csv",
skip = 1)
#
# データの確認
glimpse(df_raw)
#
# NAの削除
df <- na.omit(df_raw)
#
# dateを日付型に変換
df <- df |> mutate(
date = dmy(date)
)
df
#
# season, hol, funcをファクター型にする
df <- df |>
mutate(
across(season:func, as.factor)
)
#
# サマリー
summary(df)
#
# hol, funcをダミー変数に
df <- df |>
mutate(
hol = if_else(hol == "Holiday", 1, 0),
func = if_else(func == "Yes", 1, 0)
)
#
#
# bikeが目的変数なので、分布を確認
ggplot(df, aes(x = bike)) +
geom_histogram(fill = "white", color = "black") +
theme_minimal()
#
# bike + 1の対数変換ヒストグラム
df |>
mutate(bike = log(bike + 1)) |>
ggplot(aes(x = bike)) +
geom_histogram(fill = "white", color = "black") +
theme_minimal()
#
# sqrt(bike)のヒストグラム
df |>
mutate(bike = sqrt(bike)) |>
ggplot(aes(x = bike)) +
geom_histogram(fill = "white", color = "black") +
theme_minimal()
#
# bikeをsqrt()で平方根変換
df$bike <- sqrt(df$bike)
#
(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは、Photograph of very long wide view of natural forest, a river is running in the middle of the forest. Blue sky, a close up of red rose flowers. です。)