我在数据集中删除了完整的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值?
1条答案
按热度按时间ecbunoof1#
我认为有两个问题:
pandas.crosstab
计算了一个频率表(也称为contingency table),但是您随后将该表传递给scipy.stats.chisquare
,后者对一维数据集进行操作。当给定一个二维表时,scipy.stats.chisquare
对表的每一列应用卡方检验,这不是您想要的。你说你想检查两个特征的独立性,所以你应该使用的函数是scipy.stats.chi2_contingency
。ddof=7084
,但是ddof
是 delta 自由度;即,它是对默认值的递增或递减。7084不太可能是这里使用的正确值。(对于chi_contingency
,将为您计算自由度。)所以你的代码应该是