代码之家  ›  专栏  ›  技术社区  ›  Andrew Bannerman

朱莉娅方差Q

  •  0
  • Andrew Bannerman  · 技术社区  · 6 年前

    好吧,我已经和这件事纠结了一段时间了。

    我在计算滚动方差。我使用手动方差计算,然后与 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()相同的答案。

    谢谢

    0 回复  |  直到 6 年前