Pokémon

Author

Takafumi Kubota

Published

June 14, 2024

Abstract

This code loads and processes a CSV file containing time series data. It converts the data into time series objects, visualizes them using ggplot2, and performs forecasts using the Holt-Winters method. The code also detects breakpoints in the time series data with the strucchange package and calculates the correlation between Price and PSA10Total, displaying it with a scatter plot.

Keywords

Time Series Analysis, Holt-Winters Forecasting, Breakpoint Detection

1 ソルガレオ

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

# パッケージの読み込み
library(ggplot2)
library(forecast)
library(strucchange)

# CSVファイルの読み込み
file_path <- "Solgaleo.csv"
data <- read.csv(file_path)

# データの確認
str(data)
'data.frame':   15 obs. of  3 variables:
 $ Date      : chr  "2023/3/1" "2023/5/1" "2023/6/1" "2023/7/1" ...
 $ Price     : int  60000 70000 240000 280000 90000 120000 100000 94000 68000 57000 ...
 $ PSA10Total: int  1456 2211 2425 2807 3889 4406 4820 5152 5452 5752 ...
Code
head(data)
      Date  Price PSA10Total
1 2023/3/1  60000       1456
2 2023/5/1  70000       2211
3 2023/6/1 240000       2425
4 2023/7/1 280000       2807
5 2023/8/1  90000       3889
6 2023/9/1 120000       4406
Code
# 日付データの整形
data$Date <- as.Date(data$Date, format="%Y/%m/%d")

# Priceの時系列データに変換
price_ts <- ts(data$Price, frequency = 12, start = c(2023, 4))

# PSA10Totalの時系列データに変換
psa10total_ts <- ts(data$PSA10Total, frequency = 12, start = c(2023, 4))

# 基本的な時系列データのプロット
autoplot(price_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot (Price)") +
  xlab("Time") +
  ylab("Price")

Code
autoplot(psa10total_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot (PSA10Total)") +
  xlab("Time") +
  ylab("PSA10Total")

Code
# Holt-Winters法による予測 (Price)
fit_price <- hw(price_ts, seasonal = "multiplicative")
forecast_price <- forecast(fit_price, h = 24)
autoplot(forecast_price) +
  ggtitle("Forecast using Holt-Winters Method (Price)") +
  xlab("Time") +
  ylab("Price")

Code
# ブレークポイントの検出 (Price)
breakpoints_price <- breakpoints(price_ts ~ 1)
plot(price_ts, main = "Breakpoints in Price Data")
lines(breakpoints_price, col = "red")
title("Breakpoints in Price Data")

Code
# PriceとPSA10Totalの相関関係の計算
correlation <- cor(data$Price, data$PSA10Total, method = "pearson")

# 相関関係の表示
print(paste("Correlation between Price and PSA10Total:", correlation))
[1] "Correlation between Price and PSA10Total: -0.580141293332746"
Code
# 散布図のプロット
ggplot(data, aes(x = Price, y = PSA10Total)) +
  geom_point(color = "blue") +
  ggtitle("Scatter Plot of Price vs PSA10Total") +
  xlab("Price") +
  ylab("PSA10Total") +
  geom_smooth(method = "lm", col = "red")

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

まず、必要なパッケージをインストールする。ggplot2forecaststrucchangeの各パッケージは、データの可視化、時系列データの予測、およびブレークポイント(変化点)の検出に使用する。これらのパッケージをインストールするには、それぞれinstall.packages関数を使用する。

次に、インストールしたパッケージを読み込む。library関数を使用して、ggplot2forecaststrucchangeの各パッケージを読み込み、各パッケージの機能を使用できるようにする。

1.2 CSVファイルの読み込みとデータの確認

次に、CSVファイルを読み込む。file_path変数に読み込むファイルのパスを指定し、read.csv関数を使用してデータを読み込む。読み込んだデータはデータフレームdataに格納される。

読み込んだデータの構造を確認するために、str関数を使用してデータフレームの構造を表示し、各列のデータ型とサンプル値を確認する。また、head関数を使用してデータフレームの先頭の数行を表示し、データの内容を簡単に確認する。

1.3 日付データの整形

次に、日付データを整形する。data$Date列をas.Date関数を使用して日付型に変換する。format="%Y/%m/%d"として日付のフォーマットを指定する。

1.4 時系列データの変換と基本的なプロット

次に、PricePSA10Totalの各列を時系列データに変換する。ts関数を使用し、それぞれのデータを時系列オブジェクトに変換する。frequencyはデータの周期を指定し、ここでは月次データとして12を設定する。startはデータの開始時点を指定し、ここでは2023年4月としている。

その後、時系列データの基本的なプロットを行う。autoplot関数を使用してprice_tspsa10total_tsをプロットする。ts.colour引数でプロットの色を指定し、blueとして青色に設定する。さらに、ggtitle関数でプロットのタイトルを設定し、xlabylab関数でX軸とY軸のラベルを設定する。

1.5 Holt-Winters法による予測

次に、Holt-Winters法を使用して予測を行う。まず、hw(price_ts, seasonal = "multiplicative")を使用してprice_tsのモデルを適合させる。seasonal = "multiplicative"は季節性を乗法モデルに設定する。次に、forecast(fit_price, h = 24)を使用して24ヶ月先の予測を行う。h = 24は予測期間を24ヶ月に設定する。最後に、autoplot(forecast_price)を使用して予測結果をプロットし、タイトルや軸ラベルを設定する。

1.6 ブレークポイントの検出

次に、ブレークポイントの検出を行う。breakpoints(price_ts ~ 1)を使用してprice_tsのブレークポイントを検出する。ここでは、定数項のみのモデル(~ 1)を使用している。plot(price_ts, main = "Breakpoints in Price Data")price_tsの時系列データをプロットし、lines(breakpoints_price, col = "red")で検出されたブレークポイントを赤色の線でプロットに追加する。title("Breakpoints in Price Data")でプロットにタイトルを追加する。

1.7 PriceとPSA10Totalの相関関係の計算と表示

次に、PricePSA10Totalの相関関係を計算し、表示する。cor関数を使用してPricePSA10Totalのピアソン相関係数を計算する。method引数で相関係数の計算方法を指定し、"pearson"を使用する。print関数を使用して相関係数を表示する。

1.8 PriceとPSA10Totalの散布図のプロット

最後に、PricePSA10Totalの散布図をプロットする。ggplot関数を使用して、X軸にPrice、Y軸にPSA10Totalを設定する。geom_point関数で青色の点をプロットし、ggtitle関数で散布図にタイトルを設定する。xlabylab関数でX軸とY軸のラベルを設定する。最後に、geom_smooth関数で回帰直線を赤色でプロットに追加する。

2 がんばリーリエ

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

# パッケージの読み込み
library(ggplot2)
library(forecast)
library(strucchange)

# CSVファイルの読み込み
file_path <- "GambaLelie.csv"
data <- read.csv(file_path)

# データの確認
str(data)
'data.frame':   16 obs. of  3 variables:
 $ Date      : chr  "2023/3/1" "2023/4/1" "2023/5/1" "2023/6/1" ...
 $ Price     : int  2400000 2700000 3700000 6700000 6000000 3400000 3900000 3700000 3000000 1700000 ...
 $ PSA10Total: int  412 476 526 556 616 658 684 709 733 753 ...
Code
head(data)
      Date   Price PSA10Total
1 2023/3/1 2400000        412
2 2023/4/1 2700000        476
3 2023/5/1 3700000        526
4 2023/6/1 6700000        556
5 2023/7/1 6000000        616
6 2023/8/1 3400000        658
Code
# 日付データの整形
data$Date <- as.Date(data$Date, format="%Y/%m/%d")

# Priceの時系列データに変換
price_ts <- ts(data$Price, frequency = 12, start = c(2023, 3))

# PSA10Totalの時系列データに変換
psa10total_ts <- ts(data$PSA10Total, frequency = 12, start = c(2023, 3))

# 基本的な時系列データのプロット
autoplot(price_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot (Price)") +
  xlab("Time") +
  ylab("Price")

Code
autoplot(psa10total_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot (PSA10Total)") +
  xlab("Time") +
  ylab("PSA10Total")

Code
# Holt-Winters法による予測 (Price)
fit_price <- hw(price_ts, seasonal = "multiplicative")
forecast_price <- forecast(fit_price, h = 24)
autoplot(forecast_price) +
  ggtitle("Forecast using Holt-Winters Method (Price)") +
  xlab("Time") +
  ylab("Price")

Code
# ブレークポイントの検出 (Price)
breakpoints_price <- breakpoints(price_ts ~ 1)
plot(price_ts, main = "Breakpoints in Price Data")
lines(breakpoints_price, col = "red")
title("Breakpoints in Price Data")

Code
# PriceとPSA10Totalの相関関係の計算
correlation <- cor(data$Price, data$PSA10Total, method = "pearson")

# 相関関係の表示
print(paste("Correlation between Price and PSA10Total:", correlation))
[1] "Correlation between Price and PSA10Total: -0.477975083396857"
Code
# 散布図のプロット
ggplot(data, aes(x = Price, y = PSA10Total)) +
  geom_point(color = "blue") +
  ggtitle("Scatter Plot of Price vs PSA10Total") +
  xlab("Price") +
  ylab("PSA10Total") +
  geom_smooth(method = "lm", col = "red")

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

まず、必要なパッケージをインストールする。インストールするパッケージは、ggplot2forecaststrucchangeである。これらのパッケージを使用して、データの可視化、時系列データの予測、ブレークポイント(変化点)の検出を行う。これには、install.packages関数を使用する。

次に、インストールしたパッケージを読み込む。library関数を使用して、ggplot2forecaststrucchangeの各パッケージを読み込み、それぞれの機能を使用できるようにする。

2.2 CSVファイルの読み込みとデータの確認

次に、CSVファイルを読み込む。file_path変数に読み込むファイルのパスを指定し、read.csv関数を使用してデータを読み込む。読み込んだデータはデータフレームdataに格納される。

読み込んだデータの構造を確認するために、str関数を使用してデータフレームの構造を表示し、各列のデータ型とサンプル値を確認する。また、head関数を使用してデータフレームの先頭の数行を表示し、データの内容を簡単に確認する。

2.3 日付データの整形

次に、日付データを整形する。data$Date列をas.Date関数を使用して日付型に変換する。format="%Y/%m/%d"として日付のフォーマットを指定する。

2.4 時系列データの変換と基本的なプロット

次に、PricePSA10Totalの各列を時系列データに変換する。ts関数を使用し、それぞれのデータを時系列オブジェクトに変換する。frequencyはデータの周期を指定し、ここでは月次データとして12を設定する。startはデータの開始時点を指定し、ここでは2023年3月としている。

その後、時系列データの基本的なプロットを行う。autoplot関数を使用してprice_tspsa10total_tsをプロットする。ts.colour引数でプロットの色を指定し、blueとして青色に設定する。さらに、ggtitle関数でプロットのタイトルを設定し、xlabylab関数でX軸とY軸のラベルを設定する。

2.5 Holt-Winters法による予測

次に、Holt-Winters法を使用して予測を行う。まず、hw(price_ts, seasonal = "multiplicative")を使用してprice_tsのモデルを適合させる。seasonal = "multiplicative"は季節性を乗法モデルに設定する。次に、forecast(fit_price, h = 24)を使用して24ヶ月先の予測を行う。h = 24は予測期間を24ヶ月に設定する。最後に、autoplot(forecast_price)を使用して予測結果をプロットし、タイトルや軸ラベルを設定する。

2.6 ブレークポイントの検出

次に、ブレークポイントの検出を行う。breakpoints(price_ts ~ 1)を使用してprice_tsのブレークポイントを検出する。ここでは、定数項のみのモデル(~ 1)を使用している。plot(price_ts, main = "Breakpoints in Price Data")price_tsの時系列データをプロットし、lines(breakpoints_price, col = "red")で検出されたブレークポイントを赤色の線でプロットに追加する。title("Breakpoints in Price Data")でプロットにタイトルを追加する。

2.7 PriceとPSA10Totalの相関関係の計算と表示

次に、PricePSA10Totalの相関関係を計算し、表示する。cor関数を使用してPricePSA10Totalのピアソン相関係数を計算する。method引数で相関係数の計算方法を指定し、"pearson"を使用する。print関数を使用して相関係数を表示する。

2.8 PriceとPSA10Totalの散布図のプロット

最後に、PricePSA10Totalの散布図をプロットする。ggplot関数を使用して、X軸にPrice、Y軸にPSA10Totalを設定する。geom_point関数で青色の点をプロットし、ggtitle関数で散布図にタイトルを設定する。xlabylab関数でX軸とY軸のラベルを設定する。最後に、geom_smooth関数で回帰直線を赤色でプロットに追加する。

2.9 PSA10Totalの最初の値がNAの場合の処理

また、PSA10Totalの1つ目の値がNAであったため、相関係数の計算と散布図のプロットにはこの値を除外している。具体的には、PricePSA10Totalのデータを1行目を除いて新しいデータフレームに格納している。これにより、正確な相関関係と散布図を得ることができる。

3 アセロラ

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

# パッケージの読み込み
library(ggplot2)
library(forecast)
library(strucchange)

# CSVファイルの読み込み
file_path <- "Acerola.csv"
data <- read.csv(file_path)

# データの確認
str(data)
'data.frame':   15 obs. of  3 variables:
 $ Date      : chr  "2023/3/1" "2023/5/1" "2023/6/1" "2023/7/1" ...
 $ Price     : int  56000 59000 86000 110000 52000 40000 38000 40000 32000 27000 ...
 $ PSA10Total: int  1925 4419 4830 5481 7062 8113 8867 9362 9774 10183 ...
Code
head(data)
      Date  Price PSA10Total
1 2023/3/1  56000       1925
2 2023/5/1  59000       4419
3 2023/6/1  86000       4830
4 2023/7/1 110000       5481
5 2023/8/1  52000       7062
6 2023/9/1  40000       8113
Code
# 日付データの整形
data$Date <- as.Date(data$Date, format="%Y/%m/%d")

# Priceの時系列データに変換
price_ts <- ts(data$Price, frequency = 12, start = c(2023, 4))

# PSA10Totalの時系列データに変換
psa10total_ts <- ts(data$PSA10Total, frequency = 12, start = c(2023, 4))

# 基本的な時系列データのプロット
autoplot(price_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot (Price)") +
  xlab("Time") +
  ylab("Price")

Code
autoplot(psa10total_ts, ts.colour = 'blue') +
  ggtitle("Time Series Data Plot (PSA10Total)") +
  xlab("Time") +
  ylab("PSA10Total")

Code
# Holt-Winters法による予測 (Price)
fit_price <- hw(price_ts, seasonal = "multiplicative")
forecast_price <- forecast(fit_price, h = 24)
autoplot(forecast_price) +
  ggtitle("Forecast using Holt-Winters Method (Price)") +
  xlab("Time") +
  ylab("Price")

Code
# ブレークポイントの検出 (Price)
breakpoints_price <- breakpoints(price_ts ~ 1)
plot(price_ts, main = "Breakpoints in Price Data")
lines(breakpoints_price, col = "red")
title("Breakpoints in Price Data")

Code
# PriceとPSA10Totalの相関関係の計算
correlation <- cor(data$Price, data$PSA10Total, method = "pearson")

# 相関関係の表示
print(paste("Correlation between Price and PSA10Total:", correlation))
[1] "Correlation between Price and PSA10Total: -0.783406892902581"
Code
# 散布図のプロット
ggplot(data, aes(x = Price, y = PSA10Total)) +
  geom_point(color = "blue") +
  ggtitle("Scatter Plot of Price vs PSA10Total") +
  xlab("Price") +
  ylab("PSA10Total") +
  geom_smooth(method = "lm", col = "red")

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

まず、必要なパッケージをインストールする。ggplot2forecaststrucchangeの各パッケージは、データの可視化、時系列データの予測、およびブレークポイント(変化点)の検出に使用する。これらのパッケージをインストールするには、それぞれinstall.packages関数を使用する。

次に、インストールしたパッケージを読み込む。library関数を使用して、ggplot2forecaststrucchangeの各パッケージを読み込み、それぞれの機能を使用できるようにする。

3.2 CSVファイルの読み込みとデータの確認

次に、CSVファイルを読み込む。file_path変数に読み込むファイルのパスを指定し、read.csv関数を使用してデータを読み込む。読み込んだデータはデータフレームdataに格納される。

読み込んだデータの構造を確認するために、str関数を使用してデータフレームの構造を表示し、各列のデータ型とサンプル値を確認する。また、head関数を使用してデータフレームの先頭の数行を表示し、データの内容を簡単に確認する。

3.3 日付データの整形

次に、日付データを整形する。data$Date列をas.Date関数を使用して日付型に変換する。format="%Y/%m/%d"として日付のフォーマットを指定する。

3.4 時系列データの変換と基本的なプロット

次に、PricePSA10Totalの各列を時系列データに変換する。ts関数を使用し、それぞれのデータを時系列オブジェクトに変換する。frequencyはデータの周期を指定し、ここでは月次データとして12を設定する。startはデータの開始時点を指定し、ここでは2023年4月としている。

その後、時系列データの基本的なプロットを行う。autoplot関数を使用してprice_tspsa10total_tsをプロットする。ts.colour引数でプロットの色を指定し、blueとして青色に設定する。さらに、ggtitle関数でプロットのタイトルを設定し、xlabylab関数でX軸とY軸のラベルを設定する。

3.5 Holt-Winters法による予測

次に、Holt-Winters法を使用して予測を行う。まず、hw(price_ts, seasonal = "multiplicative")を使用してprice_tsのモデルを適合させる。seasonal = "multiplicative"は季節性を乗法モデルに設定する。次に、forecast(fit_price, h = 24)を使用して24ヶ月先の予測を行う。h = 24は予測期間を24ヶ月に設定する。最後に、autoplot(forecast_price)を使用して予測結果をプロットし、タイトルや軸ラベルを設定する。

3.6 ブレークポイントの検出

次に、ブレークポイントの検出を行う。breakpoints(price_ts ~ 1)を使用してprice_tsのブレークポイントを検出する。ここでは、定数項のみのモデル(~ 1)を使用している。plot(price_ts, main = "Breakpoints in Price Data")price_tsの時系列データをプロットし、lines(breakpoints_price, col = "red")で検出されたブレークポイントを赤色の線でプロットに追加する。title("Breakpoints in Price Data")でプロットにタイトルを追加する。

3.7 PriceとPSA10Totalの相関関係の計算と表示

次に、PricePSA10Totalの相関関係を計算し、表示する。cor関数を使用してPricePSA10Totalのピアソン相関係数を計算する。method引数で相関係数の計算方法を指定し、"pearson"を使用する。print関数を使用して相関係数を表示する。

3.8 PriceとPSA10Totalの散布図のプロット

最後に、PricePSA10Totalの散布図をプロットする。ggplot関数を使用して、X軸にPrice、Y軸にPSA10Totalを設定する。geom_point関数で青色の点をプロットし、ggtitle関数で散布図にタイトルを設定する。xlabylab関数でX軸とY軸のラベルを設定する。最後に、geom_smooth関数で回帰直線を赤色でプロットに追加する。

3.9 PSA10Totalの最初の値がNAの場合の処理

また、PSA10Totalの1つ目の値がNAであったため、相関係数の計算と散布図のプロットにはこの値を除外している。具体的には、PricePSA10Totalのデータを1行目を除いて新しいデータフレームに格納している。これにより、正確な相関関係と散布図を得ることができる。