データのお砂場(1) R言語、AirPassengers、せめて前年同月比プロットしたい

Joseph Halfmoon

モダンOSに続く「お砂場」シリーズ第2弾?は「データ」です。最近、データサイエンティストの活躍凄まじく?年寄りはついていけません。xxの冷や水、世にあまたある「サンプルデータ」を味わう程度でもよろしかろうと。今回は長らく眠っていたR言語を復活させて、大量に含まれているサンプルデータセットの最初の1個を触ってみました。

※「データのお砂場」投稿順Indexはこちら

まずはソフトウエアのアップデートから

R言語はインストールしてあったのですが、相当前だったので更新いたしました。念のため旧版アンインストールした後、下のリンクのCRANからWindows用のインストールファイルをダウンロードしてきてインストールいたしました。

The Comprehensive R Archive Network

これにて、R for Windows 3.2.3 から 4.1.2 への更新が済みましてございまする。

続いてはRStudioです。直接Rを使うより、RStudioを「フロントエンド?」にして使った方が何かと操作がしやすいです。これは以前も使わせていただいとりました。これはDesktop版であれば無料でつかえます(有料バージョンもあるようです。)以下のURLからたどってファイルをダウンロードしてインストール。こちらは上書きインストールであります。

RStudio – RStudio

これにて RStudio 1.0.136版から、2021.09.01版への更新成功。ここでRStudioを立ち上げて、コマンドラインに以下を打ち込むと、インストールしたR言語に既に内蔵されている datasets パッケージ内のデータセットの一覧(先頭のアイキャッチ画像に掲げましたるもの)が出力されます。

data()

アイキャッチ画像は、出力されたリストの先頭付近で、その後まだまだお名前が続くのです。こんなにあるデータをDISKの肥やしにしておくのは勿体ない。各データセットのお名前と、説明、データの出所その他詳細については、以下のページから情報が得られます。処理方法の例なども書かれているのでお役立ち。

The R Datasets Package

今回は、そのデータセットの中から、リストのイの一番にある

AirPassengers

というデータセットを使ってみます。1949年から1960年の国際線の旅客数のデータとのことです。月別、単位は1000人。

Rコマンダーなるパッケージをインストール

R自体は、自分でプログラムしなくても、人々によって作られた大量の各種のパッケージが存在するので非常に便利です。パッケージの検索と追加作業もRStudio使うとかなり楽。しかし、今回は「Rコマンダー」なるものをインストールすると楽だ、という情報があり、追加でインストールしてみました。お楽には目がない。

なにせ暫くR使っていないので、ほぼほぼ忘れています。Rコマンダー使うと、コマンドラインから打ち込まなくてもGUIで選んでいけば「出来てしまう」らしいです。Rコマンダーのページは以下に

Rcmdr

Rコマンダー自体のインストールと起動は、RStudioのコマンドウインドウから以下で出来ました。

> install.packages("Rcmdr", dependencies=T)
> library(Rcmdr)

なお、Rコマンダーの入門ファイルはRコマンダーのヘルプから日本語化されたPDFファイルが表示可能でした。至れり尽くせり。

さて、R内のパッケージのサンプルデータを読み込むメニューは以下にありました。
Rcmdr000

以下のウインドウで所望のものをクリクリすれば指定して、変数に読み込むことができます。

Rcmdr001
読み込むと以下のように、実際に実行したコマンド列が表示されています。コマンド忘れている年寄りにはお助けな一品。

Rcmdr002
とりあえずグラフにしてみるのもプルダウンメニューより一発でできます。らくちん。

AirPassengersIndexPlot年々かなりな勢いで伸びている。そして月ごとの季節変動がハッキリしていることが想像されますが、ちょっと素っ気ないグラフです。どうも元々は時系列データであるものを、Rコマンダーが気を効かせて?データ・フレームにしてしまったので、情報が落ちているみたいです。

Rコマンダーの使い方はまた後で勉強することにして、とりあえず手動に切り替えました。

時系列データとしての読み込みとグラフ化

以下は手で打ち込みながら確認していった様子です。

AirPassengerOPR0まずデータを指定して、classで調べてみると、やはりデータは ts (time series)でした。変数をダンプしてみると、上記のように年と月が綺麗にならんだデータでした。

時系列用のts.plot()関数で出力してみた結果がこちら。横軸がちゃんと年になって良い感じになりました。

tsplot次に、季節変動パターンを確かめるために、acf(自己相関関数)をとってみました。ここでのLag=1.0というのは一年ということで良いのだよね?急増しつつも年間変動のパターンあり、と。当然か。

acfAirPassengers
そして前年同月に対する増減をプロットしてみています。1954年のはじめあたりに前年割れの時期があったのね。結構、変動繰り返しながらもだんだん伸びの人数は増えている感じ。
diff_lag12

しかし前年同月比が見たい

こういうとき「普通」よくやるのが、「前年同月比」だよね。どうしたら計算できるのでしょう。たまたま、時系列解析のお勉強のために見ていた以下のPDFにお答えがありました。

R による時系列分析の方法

以下のようにすると前年同月比計算できました。

YoYdataプロットしたところが以下に。本当は縦軸%が良かったんだけれども、そこまで行き届きませぬ。

YoYgraph絶対数でみると後半の方が伸びが多く見えるけれど、比で言うと伸びが急激だったのは50年代前半で、1960年ごろには落ち着いて(それでも近くも十数%も伸びている)きているのね。

サンプルデータの説明ページのExamples(Not runとかオコトワリがある)では、時系列解析らしく? arima()など駆使しているのだけれど、そこまでとてもたどり着けませんな。また時系列出てくるだろうし、まあ、ボチボチとな。

データのお砂場(2) R言語、BJsales 良くわからないけれど「先行指標」?

デバイスビジネス開拓団トップへ