Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的似然比测试_Python_Python 2.7_Scipy_Statistics - Fatal编程技术网

Python中的似然比测试

Python中的似然比测试,python,python-2.7,scipy,statistics,Python,Python 2.7,Scipy,Statistics,我在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 =

我在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\u sigma\u check
    的值取自
有人能给我一些建议吗?我对Python和统计的世界还比较陌生


谢谢。

要计算给定对数概率的似然比,请使用以下公式:

from scipy.stats.distributions import chi2
def likelihood_ratio(llmin, llmax):
    return(2*(llmax-llmin))


LR = likelihood_ratio(L1,L2)


p = chi2.sf(LR, 1) # L2 has 1 DoF more than L1

print 'p: %.30f' % p 

# p: 0.000000121315450836607258011741

L1
L2
可能性还是日志可能性?如果它们是日志可能性,你不应该在计算LR
L1
L2
时记录它们的日志。我明白你的意思,记录日志没有意义……chisqprob在scipy中不再存在,或者它是我一点也不导入。scipy中的所有其他功能都有效(使用verison scipy-1.0.0)。还有其他方法吗?我相信新的等效函数是
scipy.stats.chi2.sf()
——也许您可以更新您的答案?