本学生的 t 分布 CDF 计算中的任何明显缺陷
Any obvious pitfalls in this Student's t-distribution CDF computation?
我一直在寻找一个有效的函数来计算学生t分布的CDF(累积分布函数)。
这是我在查看了另一个堆栈溢出问题后解决的问题,JStat 库,the_subtprob第 317 行的函数。
查看上次参考中的注释导致我找到了一本绝版书,这无济于事
如果您对更精确的算法感兴趣,您可以 可以看看: 统计库: http://lib.stat.cmu.edu/apstat/;
应用统计算法,作者:Griffiths, P. and Hill, I.D.
埃利斯·霍伍德:奇切斯特 (1985)
cmu 站点有一个 FORTRAN 函数,我翻译了它,如下所示。
查看其他来源,我发现高阶函数,如不完整的beta,log gamma,并且实现似乎更复杂,并且在一种情况下是迭代的。
我想知道此实现是否存在任何已知的陷阱。 它似乎产生了与其他结果相同的结果。 任何关于如何评估这一点的想法也会有所帮助。
function tcdf (t, v) {
//
// ALGORITHM AS 3 APPL. STATIST. (1968) VOL.17, P.189
// STUDENT T PROBABILITY (LOWER TAIL)
//
var b = v / (v + t * t),
c = 1,
s = 1,
ioe = v % 2,
k = 2 + ioe;
if (v < 1) {
return 0;
}
if (v >= 4) {
while (k <= v - 2) {
c *= b - b / k;
s += c;
k += 2;
}
}
c = t / Math.sqrt(v);
if (1 !== ioe) {
return 0.5 + 0.5 * Math.sqrt(b) * c * s;
}
return 0.5 + ((1 === v ? 0 : b * c * s) + Math.atan(c)) / Math.PI;
}
此算法可能出现两个问题。
-
处理大值
v
。当v
变大时,我们应该恢复标准正态分布。但是,您在v
上有一个while
循环。所以v=1000000
说,变得很慢 -
尾部精度。算法如何应对极端的尾部?通常,我们需要使用
log
以避免舍入误差。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery中是否内置了任何字符串格式化函数
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 有任何可能将facebook实时信使整合到一个网站中
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- AJAX:$_GET不返回任何值
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 将事件处理程序绑定到任何可能的事件
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- document.styleSheets不返回任何内容
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- Graphiti中是否有任何工具提示功能
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 在解析对象.save()中;没有返回任何原因
- 任何浏览器都不支持javascript函数
- 本学生的 t 分布 CDF 计算中的任何明显缺陷
- 在使用javascript的if语句中使用字符串作为布尔值是否存在任何缺陷