timeseries

Author

Takafumi KUBOTA

Time series

# パッケージのインストール
#install.packages("ggplot2")
#install.packages("forecast")

# パッケージの読み込み
library(ggplot2)
Warning: package 'ggplot2' was built under R version 4.3.1
library(forecast)
Warning: package 'forecast' was built under R version 4.3.1
Registered S3 method overwritten by 'quantmod':
  method            from
  as.zoo.data.frame zoo 
# CSVファイルの読み込み
file_path <- "Purchases.csv"
data <- read.csv(file_path)

# データの確認
str(data)
'data.frame':   138 obs. of  2 variables:
 $ date     : chr  "2016/4/1" "2016/4/2" "2016/4/3" "2016/4/4" ...
 $ Purchases: num  303 295 301 302 303 298 300 297 300 304 ...
# 時系列データに変換 (必要に応じて調整)
# ここではデータの最初の列が時系列データであると仮定します
purchases_ts <- ts(data[, 2], frequency = 12, start = c(2020, 1))

# 基本的な時系列データのプロット
autoplot(purchases_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot") +
  xlab("Time") +
  ylab("Purchases")
Warning in ggplot2::geom_line(na.rm = TRUE, ...): Ignoring unknown parameters:
`ts.colour`

# トレンド成分の分解
decomposed_data <- decompose(purchases_ts)

# 分解された成分のプロット
autoplot(decomposed_data) +
  ggtitle("Decomposition of Time Series Data")

# 移動平均によるトレンドのプロット
trend <- ma(purchases_ts, order = 12) # 12時間の移動平均

# 元データとトレンドのプロット
autoplot(purchases_ts, series = "Data") +
  autolayer(trend, series = "Trend", color = "red") +
  ggtitle("Trend Detection using Moving Average") +
  xlab("Time") +
  ylab("Purchases") +
  scale_color_manual(values = c("Data" = "blue", "Trend" = "red"))
Warning: Removed 12 rows containing missing values or values outside the scale range
(`geom_line()`).

# Holt-Winters法による予測
fit <- hw(purchases_ts, seasonal = "multiplicative")
forecast_data <- forecast(fit, h = 24) # 24時間先までの予測

# 予測結果のプロット
autoplot(forecast_data) +
  ggtitle("Forecast using Holt-Winters Method") +
  xlab("Time") +
  ylab("Purchases")

  • パッケージのインストールと読み込み

    • ggplot2forecastパッケージをインストールする。ggplot2はデータの可視化を行うためのパッケージであり、forecastは時系列データの予測を行うためのパッケージである。

    • library関数を使用して、ggplot2およびforecastパッケージを読み込む。これにより、これらのパッケージの関数が使用可能になる。

  • CSVファイルの読み込み

    • 読み込むCSVファイルのパスを指定する。ここでは/mnt/data/Purchases.csvを指定している。

    • read.csv関数を使用して、指定したファイルパスからCSVファイルを読み込み、データフレームとして格納する。

  • データの確認

    • str関数を使用して、データフレームの構造を表示する。これにより、データの構造や各列のデータ型を確認する。
  • 時系列データに変換

    • 読み込んだデータフレームの2列目のデータをts関数を使用して時系列データに変換する。frequencyパラメータでデータの周期を12(ここでは月次データと仮定)に設定し、startパラメータで開始時点を2020年1月に設定する。
  • 基本的な時系列データのプロット

    • autoplot関数を使用して、時系列データをプロットする。ts.colourパラメータでプロットの色を青に設定する。

    • ggtitle関数を使用して、プロットにタイトルを追加する。タイトルは「Time Series Data Plot」に設定する。

    • xlab関数を使用して、X軸のラベルを「Time」に設定する。

    • ylab関数を使用して、Y軸のラベルを「Purchases」に設定する。

  • トレンド成分の分解

    • decompose関数を使用して、時系列データをトレンド、季節成分、不規則成分に分解する。分解結果をdecomposed_dataに格納する。

    • autoplot関数を使用して、分解された時系列データをプロットする。ggtitle関数を使用して、プロットにタイトルを「Decomposition of Time Series Data」に設定する。

  • 移動平均によるトレンドのプロット

    • ma関数を使用して移動平均を計算し、トレンドを検出する。ここでは、12時間の移動平均を計算し、その結果をtrendに格納する。

    • autoplot関数を使用して元の時系列データをプロットし、seriesパラメータで系列名を「Data」に設定する。

    • autolayer関数を使用して、移動平均トレンドをプロットに追加する。seriesパラメータで系列名を「Trend」に、colorパラメータで色を赤に設定する。

    • ggtitle関数を使用して、プロットにタイトルを「Trend Detection using Moving Average」に設定する。

    • xlab関数を使用して、X軸のラベルを「Time」に設定する。

    • ylab関数を使用して、Y軸のラベルを「Purchases」に設定する。

    • scale_color_manual関数を使用して、プロットの色を手動で設定する。元のデータを青、トレンドを赤に設定する。

  • Holt-Winters法による予測

    • hw関数を使用してHolt-Winters法に基づく時系列モデルを適合させる。seasonalパラメータを「multiplicative」に設定し、モデルを適合させる。

    • forecast関数を使用して、Holt-Wintersモデルを基に予測を行う。予測期間を24(ここでは24時間先まで)に設定し、その結果をforecast_dataに格納する。

    • autoplot関数を使用して、予測結果をプロットする。ggtitle関数を使用して、プロットにタイトルを「Forecast using Holt-Winters Method」に設定する。

    • xlab関数を使用して、X軸のラベルを「Time」に設定する。

    • ylab関数を使用して、Y軸のラベルを「Purchases」に設定する。