recursion - F# 中偏度的递归公式

标签 recursion f# statistics

我正在尝试使用 Knuth 的递归公式在 F# 中创建偏度函数,该公式基于 Jon Harrop 为科学家提供的 F# 中的方差公式。

这是我的代码,(带有辅助函数)

let skewness_aux (m, m2, m3, k) x =
     let m'  = m  + (x - m)/k
     let m2' = m2 + ((x - m)*(x - m)*(k-1.0))/k
     m', m2', m3 + (x-m)*(x-m)*(x-m)*(k-1.0)*(k-2.0)/(k*k)-(3.0*(x-m)*m2)/k, k + 1.0;;

let skewness xs =
    let _, m2, m3, n2 = Seq.fold skewness_aux (0.0, 0.0, 0.0, 1.0) xs
    (sqrt(n2) * m3)/(sqrt (m2*m2*m2));;

最后是一个小测试 -

 skewness [|2.0; 2.0; 3.0|];;

应该返回 1/(sqrt2) 大约 0.707107,但给了我 0.8164965809

有比我更聪明的人对它为什么不起作用有什么建议吗?公式看起来是正确的。我正在使用关于高矩函数算法的维基百科页面以及 Pebay 2008 年关于该主题的论文进行交叉检查。

提前非常感谢您提供的任何帮助。

最佳答案

您的 skewness_aux 函数返回 m、m2、m3 和 k+1。因此,您需要使用 sqrt(n2-1),而不是 sqrt(n2)。

关于recursion - F# 中偏度的递归公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025818/

相关文章:

javascript - 递归算法如何适用于汉诺塔?

mysql - 使用 SQLProvider 时出现 "CreateSemaphore"错误

algorithm - 检测与其余数据非常分散的点

java - 递归构建 <ul> 列表

Python:通过递归函数调用传递列表导致列表变为 'NoneType' ,为什么?

c# - 如何避免在 WPF 中递归触发事件?

f# - F#命令行文件顺序?

xml - F# XML 数据解析 '' 子类型''

mysql - 这种高级 SQL 语法是如何构造的?

r - 软件开发与统计编程/分析相比如何?