scipy 我在卡方检验中得到nan值

n53p2ov0  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(119)

我在数据集中删除了完整的nan值,并使用卡方检验检查两个要素是独立的还是依赖的。

t1=pd.crosstab(df['Scheduled Delivery Date'],df['Product Group']).values
stats.chisquare(f_obs=t1,ddof=7084)

测试结果:

Power_divergenceResult(statistic=array([ 3306.5       ,  2394.36363636, 13689.2797075 ,  4967.26974144,        1767.        ]), pvalue=array([nan, nan, nan, nan, nan]))

如何使用scipy.stats.chisquare在没有nan的情况下获得p值?

ecbunoof

ecbunoof1#

我认为有两个问题:

  • 您已经使用pandas.crosstab计算了一个频率表(也称为contingency table),但是您随后将该表传递给scipy.stats.chisquare,后者对一维数据集进行操作。当给定一个二维表时,scipy.stats.chisquare对表的每一列应用卡方检验,这不是您想要的。你说你想检查两个特征的独立性,所以你应该使用的函数是scipy.stats.chi2_contingency
  • 你使用了ddof=7084,但是ddofdelta 自由度;即,它是对默认值的递增或递减。7084不太可能是这里使用的正确值。(对于chi_contingency,将为您计算自由度。)

所以你的代码应该是

t1 = pd.crosstab(df['Scheduled Delivery Date'], df['Product Group']).values
result = stats.chi2_contingency(t1)

相关问题