Тест хи-квадрат для групп неравных размеров - PullRequest
0 голосов
/ 21 января 2020

Я бы хотел применить критерий хи-квадрат scipy.stats.chisquare. И общее количество наблюдений отличается в моих группах.

import pandas as pd

data={'expected':[20,13,18,21,21,29,45,37,35,32,53,38,25,21,50,62],
      'observed':[19,10,15,14,15,25,25,20,26,38,50,36,30,28,59,49]}

data=pd.DataFrame(data)
print(data.expected.sum())
print(data.observed.sum())

Чтобы игнорировать это неверно - верно?

Требуется ли поведение по умолчанию scipy.stats.chisquare это во внимание? Я проверил ручкой и бумагой, и похоже, что нет. Есть ли параметр для этого?

from scipy.stats import chisquare
# incorrect since the number of observations is unequal 
chisquare(f_obs=data.observed, f_exp=data.expected)

Когда я выполняю ручную регулировку, я получаю немного другой результат.

# adjust actual number of observations
data['obs_prop']=data['observed'].apply(lambda x: x/data['observed'].sum())
data['observed_new']=data['obs_prop']*data['expected'].sum()

# proper way
chisquare(f_obs=data.observed_new, f_exp=data.expected)

Пожалуйста, исправьте меня, если я ошибаюсь в какой-то момент. Спасибо.

ps: я пометил R для дополнительной статистической экспертизы

Ответы [ 2 ]

1 голос
/ 24 января 2020

По сути, это была другая статистическая проблема - критерий хи-квадрат независимости переменных в таблице сопряженности.

from scipy.stats import contingency as cont
chi2, p, dof, exp=cont.chi2_contingency(data)
p
0 голосов
/ 14 февраля 2020

Я не очень хорошо понял вопрос. Тем не менее, я вижу, что вы можете использовать scipy.stats.chi2_contingency , если вы хотите вычислить тест независимости двух категориальных переменных. Также scipy.stats.chi2_sqaure можно использовать для сравнения наблюдаемого с ожидаемым. Здесь количество категорий должно быть одинаковым. По логике вещей категория получит 0-частоту, если наблюдаемая частота будет, но ожидаемая частота не существует, и наоборот.

Надеюсь, это поможет

...