Анализ хи-квадрат - ожидаемые частоты имеют нулевой элемент в (0,).ошибка - PullRequest
0 голосов
/ 15 апреля 2019

Я работаю с данными, в которых пытаюсь увидеть связь между двумя переменными, и я использовал анализ хи-квадрат в пакете Scipy в Python.

Вот результат кросс-таблицы двух переменных:

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: во внутренней вычисляемой таблице ожидаемых частот нулевой элемент равен(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,).

В чем могут быть причины проблемы?Как я могу преодолеть это?

1 Ответ

1 голос
/ 15 апреля 2019

Посмотрите еще раз на строку документации для chi2_contingency.Первый аргумент observed должен быть таблицей сопряженности.Вы должны вычислить таблицу сопряженности (как вы это сделали с pd.crosstab(data['loan_default'],data['id_proofs'])) и передать ее в chi2_contingency.

...