目的 自己相関係数を計算する (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)