2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

tsibbleの意味とtsibbleの作り方

Last updated at Posted at 2023-05-26

本題に入る前に + 記事の概要

「予測: 原理と実践 (第3版)」の第2章にてtsibbleオブジェクトが出てきました。今後重要なオブジェクトなので備忘録を兼ねて掲載してみます。(Qiita初掲載なので大目に見ていただけたら幸いです。)
概要
・Rにおけるオブジェクトの考え方
tsibbleの意味とその機能
tibbleとの違いtibbleからtsibbleへの変換方法

そもそもRにおけるオブジェクトとは?

Rにおけるオブジェクトとは、変数やデータのかたまりを格納する箱に名前を付けたものを指します。
高校数学で、a = 5を代入して、などやったかもしれませんがそれに近いものです。

qiita_object.R
##オブジェクトaに1+2+3の計算結果を代入し、表示する
a <- 1+2+3
a
##実行結果
6

tsibbleオブジェクトとは?

A.本書では『tidyなデータフレーム (tibbleオブジェクト)に時間軸を導入して拡張したもの』とあります。
時系列データをRで保存するための箱みたいなものだと個人的には理解しています。
もう少し厳密に考えるには、時系列分析について理解する必要があるため、簡単に掲載しておきます。

時系列分析: 時間の経過順に並んだデータ(時系列データ)に基づいてそのデータの変動要因を様々な要素について統計的な手法を用いて分解し、将来の値を予測するもの。

時系列データの具体例として株価の推移や、ある製品の売り上げ推移、マンション地価の推移などがあります。

tibbleとは...?

tibbleを理解するためにまずデータフレームを理解しましょう。
データフレームとは、「①1つの列が1つの変数を表す」、「②1つの行が1つの観測を表す」、「③1つのテーブルが1つのデータセットだけを含む」という3つの定義があります。
データを読み込むときにcsvファイルを用いると思いますが、あれも立派なデータフレームです。

tsibbleの具体例を考えてみよう

下の表は、2018年から2022年にかけて、「かわいい共和国(架空の国)」の「かわいい薬(架空の薬)」の販売個数salesの推移をまとめたものです。これをtsibbleに変換してみましょう。

Year Sales
2018 138
2019 127
2020 85
2021 93
2022 104
qiita_tsibble.R
#必要なパッケージのインストール
install.packages("tsibble")
install.packages("dplyr")
#必要なパッケージの読み込み
library(tsibble)
library(dplyr) ##後で使います
#tsibbleに変換
y <- tsibble(
Year = 2018:2022,
Sales = c(138, 127, 85, 93, 104),
index = Year
)

y
#実行結果
# A tsibble: 5 x 2 [1Y]
   Year Sales
  <int> <dbl>
1  2018   138
2  2019   127
3  2020    85
4  2021    93
5  2022   104

実行結果のようにになりましたね。#A tsibble: 5 x 2 [1Y]をとあるように、tsibbleへの変換そのものはこれでおしまいです。index = Yearとすることで、Yearをインデックス変数に変換して、観測時点Yearと'Sales'を結び付けられるようになります。

tibbletsibbleに変換

先ほど同様にかわいい共和国(架空の国)」の「かわいい薬(架空の薬)」の販売個数salesの時系列データです。先ほどと違うのは、2019年1月から5月までのの月次データである点です。まずは一度tibbleをつくるところまで書いてみましょう。

qiita_tibble.R
#tibbleの設定
z <- tibble(
month = c('2019 Jan','2019 Feb','2019 Mar', '2019 Apr','2019 May'),
sales = c(23,26,31,17,38)
)
#zの表示
z

#実行結果
# A tibble: 5 x 2
  month    sales
  <chr>    <dbl>
1 2019 Jan    23
2 2019 Feb    26
3 2019 Mar    31
4 2019 Apr    17
5 2019 May    38


これでtibbleの作成は完了です。このデータをtsibbleに変換してみましょう。ただし、dplyrをインストールし、読み込まないと実行されないので気を付けましょう。

qiita_tsibble_tibble.R

 z %>% #パイプ演算子で結合
mutate(Month = yearmonth(month)) %>% 
as_tsibble(index = Month)

#実行結果
# A tsibble: 5 x 3 [1M]
  month    sales  Month
  <chr>    <dbl>  <mth>
1 2019 Jan    23 2019 1
2 2019 Feb    26 2019 2
3 2019 Mar    31 2019 3
4 2019 Apr    17 2019 4
5 2019 May    38 2019 5

# A tsibble: 5 x 3 [1M]とあるように、tibbleをtsibbleに変換することができましたね。
手順は以下のように行っています。
1.yearmonth()という時間クラス関数を使ってMonth列を文字から月次時間オブジェクトに変換
2.as_tsibble()の引数indexMonth列を指定して、データフレームをtsibbleに変換

なお、# A tsibble: 5 x 3 [1M][1M]は月次データであることを表しています。観測頻度に合わせて関数を変更しましょう。次の表は観測頻度ごとに用いる時間クラス関数です。また、mutate()関数は新たに変数を作るための関数です。

観測頻度 用いる時間クラス関数
年次 start:end
四半期 yearquarter()
月次 yearmonth()
週次 yearweek()
日次 as_date(), ymd()
さらに高頻度 as_datetime(), ymd_hms()

変換にあたり、パイプ演算子%>%を用いましたが、これについては別途解説を投稿していきたいと思います。

今回の投稿では、作り方までを掲載しましたが、使い方については次回以降の投稿に掲載しようと考えています。
最後までお読みいただきありがとうございました。

修正
6/6 オブジェクトの定義を修正

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?