好吧,我已经和这件事纠结了一段时间了。
我在计算滚动方差。我使用手动方差计算,然后与
var()
计算样本的平均值。。。
从每个数据点减去平均值。。。
将每个结果平方。。。
求平方值之和。。。
除以n-1,其中n是数据点的数目。
xi = [1.0,2.0,3.0,4.0,5.0,6.0]
# initalize arrays
xi_sum = zeros(xi)
xi_mean = zeros(xi)
xi_mean_dev = zeros(xi)
xi_mean_dev_sq = zeros(xi)
xi_sum_mean_dev_sq = zeros(xi)
xi_var_corrected = zeros(xi)
# loop
i=1
for i = 1:size(xi,1)
xi_sum[i] = sum(xi[1:i])
xi_mean[i] = xi_sum[i] / i
xi_mean_dev[i] = xi[i] - xi_mean[i]
xi_mean_dev_sq[i] = xi_mean_dev[i]^2
xi_sum_mean_dev_sq[i] = sum(xi_mean_dev_sq[1:i])
xi_var_corrected[i] = xi_sum_mean_dev_sq[i] / (i-1) # n-1
end
带输出:
julia> xi_var_corrected
6-element Array{Float64,1}:
NaN
0.25
0.625
1.16667
1.875
2.75
var_verify = zeros(xi)
for i = 1:size(xi,1)
var_verify[i] = var(xi[1:i],corrected=true)
end
julia> var_verify
6-element Array{Float64,1}:
NaN
0.5
1.0
1.66667
2.5
3.5
还有:
julia> var(xi)
3.5
> test = c(1,2,3,4,5,6)
> var(test)
[1] 3.5
决赛是3.5比2.75。
我的问题是-im不知道为什么我的手工方差计算没有提供与var()、R var()相同的答案。
谢谢