連関比率法     Last modified: Aug 04, 2009

目的

連関比率法により,季節指数を計算し,季節調整済みデータを返す。

使用法

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

graph


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )

Made with Macintosh