自己相関係数 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)
直前のページへ戻る
E-mail to Shigenobu AOKI