【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.おわりに
プロットとアニメーションの練習のために時系列グラフを描いてみましたが、意外な結果で新たな発見でした。