我在Python 2.7中计算似然比检验时遇到了困难。
我有两个模型和相应的似然值。如果这些模型密切相关,我认为比较模型L2是否优于模型L1的规则是查看-2 * log(L2/L1)。
然后我想找到对应于-2 * log(L2/L1)的p值,并将其与L2优于L1的显著性联系起来。以下是我目前的进展:
import numpy as np
from scipy.stats import chisqprob
L1 = 467400. # log(likelihood) of my 1st fit
L2 = 467414. # log(likelihood) of my 2nd fit
LR = -2. * np.log(L2 / L1) # LR = -5.9905e-05
p = chisqprob(LR, 1) # L2 has 1 DoF more than L1
print 'p: %.30f' % p # p = 1.000000000000000000000000000000
five_sigma = 1 - scipy.special.erf(5 / np.sqrt(2.)) :-)
print '5 sigma: %.30f' % five_sigma
five_sigma_check = 1 - 0.999999426696856 :-(
print 'Check : %.30f' % five_sigma_check
然而,我遇到了两个问题:
- 我的p值为1,但我预期它应该接近于0。
- 当我使用带有:-)标记的行上的公式来找到五西格玛时,例如,它与文献中引用的值不同,该行用:-(突出显示。我的
five_sigma_check
值取自这里。
请问有人能提供任何建议吗?我对Python和统计学相对较新。
谢谢。
L1
和L2
是似然度还是对数似然度?如果它们是对数似然度,那么在计算LR时就不应该对它们取对数。 - C_Z_L1
和L2
是似然对数的日志记录。我明白你的意思,对日志记录再次求对数没有意义... - Sean Mooney