【R】オーストラリアへの旅行客
2020年5月4日
1.はじめに
R
のfpp3
ライブラリには、予測練習用のデータが含まれています。その中で、aus_arrivals (Internatinal Arrivals to Australia) という、日本、ニュージーランド、イギリス、アメリカからオーストラリアへの到着人数の1981年から4半期ごとの統計データがあります。これは、Tourism Research Australiaからのデータです。
このデータをアニメーションで確認したいと思います。
2.コード
R
のコードを下記に示します。
5年ごとに30年分の時系列データをプロットする関数をreplot
として用意します。プロットは四半期ごとのデータを国ごとに色分けします。aus_arrivalsデータのOrigin列から国ごとのプロットする期間のデータを抽出しrange_**という値に格納し、最後にデータフレームdatにまとめます。まとめたデータをggplotにて表示します。
アニメーションはanimation
ライブラリを使用します。saveGIF()
関数にてreplot()
を実行して、アニメーションGifを作成し、output.gif
というファイルに出力します。
library(animation) library(ggplot2) data("aus_arrivals") ani.options(outdir=getwd(), convert = 'C:/Program Files/ImageMagick-7.0.10-Q16/convert.exe') replot <- function(){ for(i in c(seq(5, 30, by = 5))){ # 5年ごと30年分のデータ表示 no_year<-i no_dat<-no_year*4 #表示する期間(=データ数) no_country<-length(table(aus_arrivals$Origin)) #国数 no_org_dat<-length(aus_arrivals$Quarter) #総データ数 no_dat_country<-no_org_dat/no_country #各国ごとの総データ数 range_jp<-c(1:no_dat) range_nz<-c((no_dat_country+1):(no_dat_country+1+no_dat)) range_uk<-c((no_dat_country*2+1):(no_dat_country*2+1+no_dat)) range_us<-c((no_dat_country*3+1):(no_dat_country*3+1+no_dat)) dat<-aus_arrivals[c(range_jp,range_nz,range_uk,range_us),] p<-ggplot(aus_arrivals, aes(x=Quarter, y=Arrivals, col=Origin)) + geom_blank() + layer( data=dat, mapping=aes(x=dat$Quarter, y=dat$Arrivals, col=dat$Origin), geom="point", stat="identity", position="identity" ) print(p) } } saveGIF({replot()}, clean=TRUE, img.name="output", movie.name="output.gif") dev.off()
3.プロット
アニメーションにしたプロット結果は次の通りです。
日本は、1990年代後半にむけて急激に旅行客が増加しましたが、その後、急速に減少に転じました。ニュージーランドは多少の上下はありますが、ずっと上昇しています。イギリスも上昇していますが、季節ごとの差が激しいです。意外だったのはアメリカで、人口の割には旅行客が少なく、その数はそれほど増加していません。
4.おわりに
プロットとアニメーションの練習のために時系列グラフを描いてみましたが、意外な結果で新たな発見でした。