第二件事看起来像是用于x+y < 20
案例的计算的近似值,但是基于Stirling近似值。
通常,当将其用于此类逼近时,人们至少会使用下一个附加项(对的逼近因子),这对于小会大大提高相对逼近度。。2个πñ---√n !ñ
例如,如果 X 和 ÿ 都为10,则第一个计算得出的值约为0.088,而当 2个πñ---√所有项中包含的大约为0.089,对于大多数用途来说足够接近...但是在近似中忽略该项将得到0.5-这实际上还不够接近!该函数的作者显然没有费心检查边界情况下逼近的准确性。
为此,作者可能应该简单地调用了内置lgamma
函数-特别地,通过使用此函数代替他的功能log_p1
:
log_p1 <- lgamma(x+y+1)-lgamma(x+1)-lgamma(y+1)-(x+y+1)*log(2)
这导致他尝试近似的答案(因为lgamma(x+1)
实际上返回日志(x!),他正试图通过Stirling近似进行近似(很差))。
同样,我不确定为什么作者choose
在第一部分中不使用内置函数,该函数是R的标准发行版中提供的。为此,相关的发行函数也可能是内置的。
您实际上并不需要两个单独的案例。在lgamma
一个作品就好一直到最小值。另一方面,该choose
函数适用于相当大的值(例如,choose(1000,500)
效果很好)。在更安全的选择可能是lgamma
,但你需要有相当大的X 和 ÿ 才是问题。
有了更多的信息,应该可以确定测试的来源。我的猜测是作者从某个地方拿走了它,因此应该可以对其进行追踪。您对此有一些了解吗?
当您说“优化”时,是指使其更快,更短,更易于维护或其他?
快速阅读论文后进行编辑:
作者在许多方面似乎是错误的。Fisher的精确检验不假设边距是固定的,仅是对它们的条件进行限制,这根本不是一回事,例如,在此处与参考文献讨论过。的确,他们似乎完全不了解关于限制利润率的条件及其原因的辩论。那里的链接值得一读。
[他们从“费舍尔的检验总是比我们的检验更保守”到“费舍尔检验太保守 ... 的断言…… 除非条件错误是不一定的” 。他们必须确定这一点,但是鉴于统计学家一直在争论约80年,而且这些作者似乎不知道为什么要进行调节,所以我认为这些家伙并没有完全解决这个问题。 。]
该论文的作者至少似乎确实理解,他们给出的概率必须累加才能给出p值。例如,在第5页第一栏的中间(强调我的位置):
根据费舍尔精确检验得出的这种结果的统计显着性为4.6%(双尾P值,即在肌动蛋白EST频率独立于cDNA文库的假设中,此类表格出现的可能性)。相比之下,从
等式2 的累积形式(等式9,请参见方法)计算出的P值(即,在两个库中肌动蛋白EST的相对频率相同),前提是至少观察到11个同源EST。 (在脑库中观察到两次后的肝库)为1.6%。
(尽管我不确定我是否同意他们在那里的值的计算;我必须仔细检查以查看它们在另一条尾巴上的实际作用。)
我不认为该程序可以做到这一点。
但是要当心,他们的分析不是标准的二项式检验。他们使用贝叶斯(Bayesian)参数在否则为频繁检验的情况下得出p值。在我看来,这些条件似乎也有些奇怪-X, 而不是 x + y。这意味着他们必须以负二项式而不是二项式结束,但是我发现论文的组织确实很糟糕,而且解释得很糟糕(我习惯于弄清楚统计论文的内容),所以我除非我仔细检查,否则无法确定。
我什至不相信他们的概率之和在这一点上是1。
这里还有很多要说的,但问题不在于论文,而在于程序中的实现。
-
无论如何,结果是,至少论文正确地识别出p值由几率之和组成,如等式2中的那些,但程序没有。(请参见本文“方法”部分中的等式9a和9b。)
该代码是完全错误的。
[您可以使用pbinom
@whuber的注释表示,可以算出单个概率(但不能计算尾巴,因为它不是结构的二项式检验),但是等式2中有1/2的额外因数,因此如果要在纸上复制结果,则需要更改它们。]
您可以通过以下方式轻松地获得它pnbinom
-
负二项式的通常形式是对 ķŤ ^ h成功或数量失败的ķŤ ^ h成功。两者是等效的。维基百科在这里给出了第二种形式。概率函数为:
(k + r − 1ķ) ⋅(1−p)[Rpķ,
p4上的等式2(p3上的等式1也是)是负二项式,但移位了1。p =ñ1个/(ñ1个+ñ2), ķ = X 和 r = y+ 1。
这使我担心,因为 ÿ 并没有发生类似的变化,因此它们的概率甚至可能不等于1。
那将是不好的。
p2
。的小p1
和p2
对应的小x
和y
分别, -这是一个低效率。一个可能的错误是条件的第二个分支根本无法计算p2
并且仅使用p1
。我也怀疑代码可能完全错误,因为它似乎没有计算p值:它只是二项式概率的一半,也许应该是尾部概率。为什么不只使用pbinom
/dbinom
并完成呢?