学生t分布的累积分布函数(CDF)R基础文档

9
在学生t分布的累积分布函数的背景下,R版本4.3.1的?dt文档强调了以下结果: 然而,在尝试验证这个公式的准确性时,出现了一个不一致性,如下面的代码片段所示:
v <- 5
t <- -1

## Student's t-distribution cumulative distribution function
pt(q = t, df = v, lower.tail = TRUE, ncp = 0)
#> [1] 0.1816087

## Application of the theorical result where there is a discrepancy 
## based on what is mentioned in R Version 4.3.1's ?dt documentation
1 - pbeta(q = v / (v + t^2), shape1 = v/2, shape2 = 1/2, 
          ncp = 0,lower.tail = TRUE)
#> [1] 0.6367825

创建于2023-10-09,使用reprex v2.0.2生成

这个问题引发了对文档准确性的质疑。在向R项目报告潜在错误之前,我正在寻求澄清,以确定问题是否出在文档本身。这个询问与一个理论概念有关,详细解释可以在这里找到。


我不认为这个推导是正确的。你应该参考网页https://mathworld.wolfram.com/Studentst-Distribution.html中的方程(7)。 - undefined
1
或许值得注意的是,这个部分只是在一年前添加的:https://github.com/r-devel/r-svn/commit/61e301ad9720195f6756317458761df9bfbc0f2d - undefined
非常感谢Ben Bolker指出这一点。我非常感激你的帮助。 - undefined
2个回答

7
嗯,看起来好像出错了。这是一个有效的身份证:
v <- 5
t <- -1

## Student's t-distribution cumulative distribution function
pt(q = t, df = v, lower.tail = TRUE, ncp = 0)
#> [1] 0.1816087

x = (t + sqrt(t * t + v)) / (2.0 * sqrt(t * t + v))
pbeta(q = x, shape1 = v/2, shape2 = v/2, ncp = 0, lower.tail = TRUE)
#> [1] 0.1816087

还有一个,更接近R文档的声明:
pbeta(q = v / (v + t^2), shape1 = v/2, shape2 = 1/2, 
            ncp = 0,lower.tail = TRUE) / 2
#> [1] 0.1816087

3
首先,我不认为R手册中的公式是正确的!
你应该使用以下公式来计算CDF。
> 1 / 2 + 1 / 2 * (pbeta(1, v / 2, v) - pbeta(v / (v + t^2), v / 2, 1 / 2)) * sign(t)
[1] 0.1816087

这个公式是指https://mathworld.wolfram.com/Studentst-Distribution.html,参见方程式(7)。

enter image description here


将功能分解

我们可以看到,累积分布函数取决于t的符号。请注意,pbeta(1, a, b) = 1始终成立,因此表达式可以进一步简化,并以t的分段方式书写,如下:

  • 如果t>0
1 - 0.5 * pbeta(v / (v + t^2), v / 2, 1 / 2)
  • Otherwise
0.5 * pbeta(v / (v + t^2), v / 2, 1 / 2)

请注意,你有一个负数 t < -1,所以你应该使用第二个表达式(注意在 pbeta 前面的因子 0.5),然后你会看到。
> 0.5 * pbeta(v / (v + t^2), v / 2, 1 / 2)
[1] 0.1816087

1
感谢ThomasIsCoding指出另一种选择。 - undefined
@luifrancgom 我在我的回答中添加了更多的解释。 - undefined
再次感谢ThomasIsCoding。现在我更明白了!我将尝试使用概率分布函数推导出当t > 0的情况。最初我只能推导出t < 0的情况。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接