目的 連関比率法により,季節指数を計算し,季節調整済みデータを返す。 使用法 SeasonalIndex(x, xlab="", ylab="", main=NULL, lx="bottomright", ly=NULL, lty1=2, lty2=1, pch1=1, pch2=19, label1="粗データ", label2="季節調整済みデータ") 引数 x 度数分布表 ymax 度数軸の最大値。デフォルトでは sum(x) sort.flag 度数分布の大きい順に並べ替えるかどうか。デフォルトは TRUE col 度数を表す矩形の描画色。デフォルトは NULL density 度数を表す矩形のハッチ。デフォルトは NULL lwd 累積度数曲線の描画線種。デフォルトは 1 las 軸のラベルの描き方。par 関数の las。デフォルトは 0 main グラフのタイトル xlab 横軸のラベル ylab 度数軸のラベル。デフォルトは "度数" ylab2 累積度数軸のラベル。デフォルトは "累積%" ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/SeasonalIndex.R", encoding="euc-jp") # 連関比率法 SeasonalIndex <- function( x, # 4 半期ごとのデータベクトル xlab="", ylab="", main=NULL, # 軸,図のラベル lx="bottomright", ly=NULL, # legend の位置 lty1=2, lty2=1, # 線種 pch1=1, pch2=19, # マーカー label1="粗データ", label2="季節調整済みデータ") # ラベル { n <- length(x) y <- matrix(x/c(x[1], x[-n]), 4) mean1 <- rowMeans(y) mean2 <- mean1/exp(mean(log(mean1))) mean2[1] <- 1 chain.index <- cumprod(mean2) # 連鎖指数 seasonal.index <- chain.index/mean(chain.index) # 季節指数 z <- as.vector(x/seasonal.index) # 季節調整済みデータ plot(1:n, x, type="l", lty=lty1, xlab=xlab, ylab=ylab, main=main) points(1:n, x, pch=pch1) lines(1:n, z, lty=lty2) points(1:n, z, pch=pch2) legend(lx, ly, legend=c(label1, label2), lty=c(lty1, lty2), pch=c(pch1, pch2)) return(list(seasonal.index=seasonal.index, corrected.data=z)) } 使用例・出力結果例 > AP <- colSums(matrix(t(AirPassengers), 3)) > SeasonalIndex(AP, lx="topleft", xlab="期", ylab="人数") $seasonal.index [1] 0.9341869 1.0232490 1.1693645 0.8731996 $corrected.data [1] 387.5027 376.2525 369.4314 390.5178 408.9117 399.7072 425.8723 [8] 443.1977 506.3226 501.3443 497.7062 542.8312 582.3246 568.7765 [15] 582.3676 637.8840 672.2423 690.9364 661.0428 677.9664 671.1719 [22] 708.5275 730.3112 756.9862 794.2736 834.5965 874.8341 903.5735 [29] 939.8547 982.1657 1003.1089 1011.2236 1040.4770 1099.4392 1142.5009 [36] 1131.4710 1091.8586 1119.9620 1197.2314 1152.0849 1186.0581 1258.7357 [43] 1342.6095 1344.4808 1313.4416 1434.6460 1484.5670 1469.3090