卡方分析 – 期望频数表在(0,)处有一个零元素

我正在处理一些数据,试图了解两个变量之间的关联,并使用了Python中的Scipy包进行卡方分析。

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

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

结果:

   id_proofs    2   3   4   5  loan_default                  0   167035  15232   273 3    1   46354   4202    54  1

当我对相同的数据应用卡方分析时,出现了错误,提示ValueError: The internally computed table of expected frequencies has a zero element at (0,).

代码:

from scipy.stats import chi2_contingencystat,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 freedomValueError: The internally computed table of expected frequencies has a zero element at (0,).

这个问题的原因可能是什么?我该如何解决这个问题?


回答:

请重新查看chi2_contingency的文档字符串。第一个参数observed必须是列联表。你需要计算列联表(就像你用pd.crosstab(data['loan_default'],data['id_proofs'])做的那样),然后将其传递给chi2_contingency

Related Posts

为什么我们在K-means聚类方法中使用kmeans.fit函数?

我在一个视频中使用K-means聚类技术,但我不明白为…

如何获取Keras中ImageDataGenerator的.flow_from_directory函数扫描的类名?

我想制作一个用户友好的GUI图像分类器,用户只需指向数…

如何查看每个词的tf-idf得分

我试图了解文档中每个词的tf-idf得分。然而,它只返…

如何修复 ‘ValueError: Found input variables with inconsistent numbers of samples: [32979, 21602]’?

我在制作一个用于情感分析的逻辑回归模型时遇到了这个问题…

如何向神经网络输入两个不同大小的输入?

我想向神经网络输入两个数据集。第一个数据集(元素)具有…

逻辑回归与机器学习有何关联

我们正在开会讨论聘请一位我们信任的顾问来做机器学习。一…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注