statistics - 迭代器的逐元素方差

标签 statistics julia

按元素获取迭代器方差的数值稳定方法是什么?举个例子,我想做类似的事情

var((rand(4,2) for i in 1:10))

并返回一个(4,2)矩阵,它是每个系数的方差。使用 Julia 的 Base var 会引发错误。有没有一个包可以处理这个问题?或者使用 Base Julia 函数来实现这一点的简单(且存储效率高)的方法?还是需要自己开发?

最佳答案

我继续实现了 Welford 算法来计算:

# Welford algorithm
# https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance
function componentwise_meanvar(A;bessel=true)
  x0 = first(A)
  n = 0
  mean = zero(x0)
  M2 = zero(x0)
  delta = zero(x0)
  delta2 = zero(x0)
  for x in A
    n += 1
    delta .= x .- mean
    mean .+= delta./n
    delta2 .= x .- mean
    M2 .+= delta.*delta2
  end
  if n < 2
    return NaN
  else
    if bessel
      M2 .= M2 ./ (n .- 1)
    else
      M2 .= M2 ./ n
    end
    return mean,M2
  end
end

实现了一些其他算法in DiffEqMonteCarlo.jl以及。我很惊讶我找不到这样的库,但也许有一天会重构它。

关于statistics - 迭代器的逐元素方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43825377/

相关文章:

graphics - 计算平均网格大小

julia - 如何在 Julia 中打印具有指定 RGB 值的文本?

julia - 检查 Julia 中是否存在关键字参数

macros - 从基础扩展 `@show`

julia - 如何在 Julia 中有效地将 1-dim 数组的向量转换为 2-dim 数组(矩阵)?

type-conversion - 在 Julia 中绘制 ForwardDiff 的输出

R 将行值转置为列

r - R中的线性插值

python - 生成以 y 轴作为相对频率的直方图?

statistics - P值,显着性水平和假设