自己相関係数     Last modified: Jul 22, 2005

目的

自己相関係数を計算する
(R にも,acf 関数がある)

使用法

acf2(x, k)

引数

x  時系列データ
k  ラグ

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/acf.R", encoding="euc-jp")

# 自己相関係数を計算する
# R にも用意されている
acf2 <- function(    x,      # 時系列データ
                        k)      # ラグ
{
        n <- length(x)
        if (n < 3 || n-k < 2 || k < 1) {
                stop("invalid argument")
        }
        mean <- mean(x)
        num <- sum((x[1:(n-k)]-mean)*(x[(k+1):n]-mean))
        den <- var(x)*(n-1)
        return(num/den)
}


使用例

# 30 ポイントの時系列データ

> x <- c(662, 944, 816, 946, 355, 448, 731, 420, 670, 867, 651, 307, 393, 812, 616, 721, 658, 653,
+        347, 368, 687, 685, 710, 686, 770, 508, 458, 335, 735, 697)
> acf2(x, 1)
[1] 0.1854959
> acf2(x, 5)
[1] -0.1833560
> y <- sapply(1:28, function(i) acf2(x, i)) # ラグを 1〜28 として自己相関係数を計算
> y
 [1]  0.18549586 -0.22410141 -0.23652119 -0.18194974 -0.18335596  0.02725387  0.47072256  0.21042764
 [9] -0.19601326 -0.28309549 -0.07789654  0.01380078  0.02602698  0.21311381  0.15436003 -0.10395050
[17] -0.28076139 -0.15567161  0.04606920  0.10628826  0.10096049  0.10814049  0.04064866 -0.20121772
[25] -0.09760757 -0.05331426  0.04000062  0.02909514
> plot(y, type="l")	# 図を描いてみる
> abline(h=0)

fig


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh