裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia に翻訳--040 自己相関係数

2021年03月09日 | ブログラミング

#==========
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)

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Julia に翻訳--039 ホッジス... | トップ | Julia に翻訳--041 Excel に... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事