卡方分析期望频率在(0,)处有一个零元素。

2024-06-13 10:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理数据,在那里我试图看到两个变量之间的关联,并且我在Python的Scipy包中使用了卡方分析。在

以下是两个变量的交叉表结果:

pd.crosstab(data['loan_default'],data['id_proofs'])

结果:

^{pr2}$

如果我在相同的数据上应用卡方,我会看到一个错误,说ValueError:内部计算的预期频率表在(0,)处有一个零元素。在

代码:

from scipy.stats import chi2_contingency
stat,p,dof,expec = chi2_contingency(data['loan_default'],data['id_proofs'])
print(stat,p,dof,expec)

错误报告:

    ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-154-63c6f49aec48> in <module>()
      1 from scipy.stats import chi2_contingency
----> 2 stat,p,dof,expec = chi2_contingency(data['loan_default'],data['id_proofs'])
      3 print(stat,p,dof,expec)

~/anaconda3/lib/python3.6/site-packages/scipy/stats/contingency.py in chi2_contingency(observed, correction, lambda_)
    251         zeropos = list(zip(*np.where(expected == 0)))[0]
    252         raise ValueError("The internally computed table of expected "
--> 253                          "frequencies has a zero element at %s." % (zeropos,))
    254 
    255     # The degrees of freedom

ValueError: The internally computed table of expected frequencies has a zero element at (0,).

产生这个问题的原因是什么?我怎样才能克服这个问题?在


Tags: theiddefaultdatastatsscipystatexpected
1条回答
网友
1楼 · 发布于 2024-06-13 10:24:41

再看一下^{}的docstring。第一个参数observed,必须是列联表。您必须计算列联表(就像您对pd.crosstab(data['loan_default'],data['id_proofs'])所做的那样)并将其传递给chi2_contingency。在

相关问题 更多 >