#==========
Julia の修行をするときに,いろいろなプログラムを書き換えるのは有効な方法だ。
以下のプログラムを Julia に翻訳してみる。
自己相関係数
http://aoki2.si.gunma-u.ac.jp/R/acf.html
ファイル名: acf.jl 関数名: acf
翻訳するときに書いたメモ
StatsBase には autocor がある。
==========#
using Statistics, Plots
function acf(x, k)
n = length(x)
(n >= 3 && n-k >= 2 && k >= 1) || error("invalid argument")
mean2 = mean(x)
num = sum((x[1:n-k] .- mean2) .* (x[k+1:n] .- mean2))
den = var(x)*(n-1)
num/den
end
x = [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];
acf(x, 1) # 0.1854958594271549
acf(x, 5) # -0.1833559602380119
y = [acf(x, i) for i = 1:length(x)-2]
pyplot()
plt = plot(y, seriestype=:sticks, color=:black, grid=false,
tick_direction=:out, label="")
hline!([0], color=:black, label="")
using StatsBase
autocor(float.(x), [1, 2])
# 2-element Array{Float64,1}:
# 0.1854958594271549
# -0.2241014077628256
y2 = autocor(float.(x), 1:length(x)-2)
plt2 = plot(y2, seriestype=:sticks, color=:black, grid=false,
tick_direction=:out, label="")
hline!([0], color=:black, label="")
plot(plt, plt2)
※コメント投稿者のブログIDはブログ作成者のみに通知されます