R 的“poisson.test”函数在数学上是如何工作的?

机器算法验证 r 泊松分布
2022-04-17 09:25:36

试图了解poisson.test. 在将数据样本与另一个泊松率进行比较时,我使用它来计算 p 值;不是另一个数据样本。statsR

我已经查阅了有关此的文档,但我找不到任何概述测试本身数学的东西,只有它是如何使用的。如果有人能够提供帮助,或者指出我正确的方向,我将不胜感激。

2个回答

当您说“另一个泊松率”时……如果该其他泊松率是从数据中得出的,那么您就是在将数据与数据进行比较。

我会假设你的意思是反对一些预先指定/理论的比率(即你正在执行一个样本测试)。

你没有说明你是在做单尾测试还是双尾测试。我将讨论两者

它所做的是使用具有您正在测试的指定速率的泊松分布,然后计算尾部区域“至少与您获得的样本一样极端”(在替代方向上)。

例如,考虑一个单尾测试; vs并且观察到的泊松计数为 14。然后我们可以计算出 14 及以上的上尾有 0.0514 的概率 - 例如:H0:μ8.5H1:μ>8.5

泊松上尾概率

> 1-ppois(13,8.5)
[1] 0.05141111

(我意识到这不是在 R 中计算它的最佳方法——我们应该改用这个lower.tail参数——但想让它对不太熟悉 R 的读者更透明;相比之下ppois(13,8.5,lower.tail=FALSE)看起来像是一个错误的错误)

此计算符合poisson.test

> poisson.test(14,r=8.5,alt="greater")

        Exact Poisson test

data:  14 time base: 1
number of events = 14, time base = 1, p-value = 0.05141
alternative hypothesis: true event rate is greater than 8.5
95 percent confidence interval:
 8.463938      Inf
sample estimates:
event rate 
        14 

通过双尾检验,它以相等或较低的概率对这些值求和(即,与典型的 Fisher 式精确检验一样,它使用空值下的似然性来识别什么是“更极端”):

泊松二尾概率

泊松平均值为 8.5 的 14 的概率约为 0.024,在左尾,最大 x 值的概率不大于 3,因此将 0、1、2 和 3 的概率相加:

>  1-ppois(13,8.5)+ppois(3,8.5)
[1] 0.08152019

检查输出:

> poisson.test(14,r=8.5)

        Exact Poisson test

data:  14 time base: 1
number of events = 14, time base = 1, p-value = 0.08152
alternative hypothesis: true event rate is not equal to 8.5
95 percent confidence interval:
  7.65393 23.48962
sample estimates:
event rate 
        14 

R 代码是公开的——你可以查看代码;在这种情况下,它证实了我上面所说的。

Glen 的回答指出您可以检查此功能的代码,但我不确定您是否知道如何执行此操作,因此我将通过向您展示如何来扩充他的答案。要检查代码,只需加载相关库并输入不带任何参数的函数名称:

library(stats)
poisson.test

function (x, T = 1, r = 1, alternative = c("two.sided", "less", 
    "greater"), conf.level = 0.95) 
{
    ...some code here...

    PVAL <- ...some code...

    ...more code here...

    structure(list(statistic = x, parameter = T, p.value = PVAL, 
        conf.int = CINT, estimate = ESTIMATE, null.value = r, 
        alternative = alternative, method = "Exact Poisson test", 
        data.name = DNAME), class = "htest")
    }
}
<bytecode: 0x0000000019efa180>
<environment: namespace:stats>

您将从代码中看到该poisson.test函数创建了一个htest对象(分类为假设检验的列表),其中包含检验统计量、p 值和置信区间的计算。代码很长,但是很多都可以忽略。感兴趣的部分是计算检验统计量和 p 值的代码,每个代码大约 12-15 行。您也许可以浏览它并查看这些对象中的每一个是如何计算的,这将告诉您它们正在使用的数学。这将增加 Glen 的答案,确认特定情况下的测试输出。