【R】オーストラリアへの旅行客

1.はじめに

Rfpp3ライブラリには、予測練習用のデータが含まれています。その中で、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.おわりに

プロットとアニメーションの練習のために時系列グラフを描いてみましたが、意外な結果で新たな発見でした。

Add a Comment

メールアドレスが公開されることはありません。