使用python chisquare和使用卡方值表的不同结果

时间:2017-03-29 06:38:53

标签: python statistics chi-squared

我需要通过卡方获得p值。 我的程序是:

from scipy.stats import chisquare

c = chisquare([10,4,7,5],ddof=[0,1,2,3])

print(c)

结果是:

Power_divergenceResult(statistic=3.2307692307692308, pvalue=array([ 0.35739509,  0.19881419,  0.07226674,         nan]))

当我尝试使用卡方值表(例如来自此网站https://www.medcalc.org/manual/chi-square-table.php)获取p值时,结果会有所不同。 在此示例中,使用自由度= 1(ddof = 0)的python p值为0.35739509,但使用表p值为0.01。 你能解释为什么结果不同吗?

1 个答案:

答案 0 :(得分:2)

函数chisquare执行Chi-squared hypothesis test但该表与Chi-square distribution有关。

如果您要使用发布,则需要使用scipy.stats.chi2。特别是,要从表中复制值:

import scipy as sp

p = 0.1
df = 5

x = sp.stats.chi2.ppf(1-p, df=df)
print(x)  # 9.23635689978

获得给定x和自由度的p值:

p = 1 - sp.stats.chi2.cdf([10,4,7,5], df=[0,1,2,3])
print(p)  
# [        nan  0.04550026  0.03019738  0.17179714]

请注意,该表将 p 定义为从x到无穷大的概率密度函数的积分。 scipy中的累积密度函数是从0到x的积分。因此,p = 1 - cdf