APIを用いたベット分析
今回の研究の動機は知人にPinnacle Sportsのデータの分析を依頼されたことです。
公式にAPIが提供されているので、それを用いてデータの取得と分析を行います。
Rパッケージ
おそらく最も容易な方法はPinnacleのRパッケージを使うことです。
パッケージ名:Pinnacle.API
https://github.com/marcoblume/pinnacle.API#README
導入手順
まずはRStudioでパッケージをインストールします。
RStudioで以下のコードを書くことでAPIが使えるようになります。
library(pinnacle.API)
username <- "ユーザー名"
userpass <- "パスワード"
SetCredentials(username, userpass)
AcceptTermsAndConditions(accepted = TRUE)
ユーザー名、パスワードにはそれぞれPinnacle Sportsで使っているusername, userpassをそれぞれ入力します。
データの取得
実際にデータを取得してみます。
currentDate <- as.POSIXlt(Sys.Date(), tz = "UTC")
dfSum <- NULL
for (i in 1:2) {
df <- GetBetsList(fromDate = currentDate - i * 30 * 24 * 60 * 60,
toDate = currentDate - (i-1) * 30 * 24 * 60 * 60)
dfSum <- rbind(df, dfSum)
}
dfSum <- dfSum[order(dfSum$bets.betId),]
データを一回に取得できる日時の範囲が上限30日に制限されています。
ループで区切って30日ごとのデータを取得し、rbind
で縦につなげています。
今回は4月1日からの2ヶ月間のデータを取得する目的なので、ループは2回しか回していません。
過去1年分など取得したければループの回数を増やせばよいです。
最後にorder
を使って、日時の順番(正確にはbetIdの順)に並び替えています。
データの保存
保存したいディレクトリやファイル名を指定して、データフレームをCSVに保存します。
file <- "pin.csv"
write.csv(dfSum, file)
データの解析
データは取得できたので、Rでもpythonでも好きな言語でいろいろ分析できます。
Rでそのままヒストグラムを描いてみます。
score <- c(dfSum$bets.ftTeam1Score, dfSum$bets.ftTeam2Score)
hist(score, breaks = seq(-0.5,15.5,1), col="green")
まとめ
今回はAPIを使ってRでデータ分析を行う方法を紹介しました。
ご意見などあればコメントお願いします。