Я вычисляю тестовую статистику c, которая распределена в виде квадрата хи с 1 степенью свободы. Я также вычисляю P-значение, соответствующее этому, используя два различных метода из scipy.stats
.
У меня есть наблюдения и ожидаемые значения в виде numpy массивов.
observation = np.array([ 9.21899399e-04, 4.04363991e-01, 3.51713820e-02,
3.00816946e-03, 1.80976731e-03, 6.46172153e-02,
8.61549065e-05, 9.41395390e-03, 1.00946008e-03,
1.25621846e-02, 1.06806251e-02, 6.66856795e-03,
2.67380732e-01, 0.00000000e+00, 1.60859798e-02,
3.63681803e-01, 1.06230978e-05])
expectation = np.array([ 0.07043956, 0.07043956, 0.07043956, 0.07043956, 0.07043956,
0.07043956, 0.07043956, 0.07043956, 0.07043956, 0.07043956,
0.07043956, 0.07043956, 0.07043956, 0.07043956, 0.07043956,
0.07043956, 0.07043956])
Для первого подхода я сослался на эту публикацию stackoverflow. Вот что я делаю в первом подходе:
from scipy import stats
chi_sq = np.sum(np.divide(np.square(observation - expectation), expectation))
p_value = 1 - stats.chi2.cdf(chi_sq, 1)
print(chi_sq, p_value)
>> (4.1029225303927959, 0.042809154353783851)
Во втором подходе я использую метод chi-square
из spicy.stats
. В частности, я использую эту ссылку. Вот как я реализую второй метод.
from scipy import stats
print( stats.chisquare(f_obs=observation, f_exp=expectation, ddof=0) )
>> Power_divergenceResult(statistic=4.1029225303927959, pvalue=0.99871467077385223)
Я получаю одинаковое значение хи-квадрат statisti c в обоих методах (то есть статистика = 4.1029225303927959), но разные значения р. При первом подходе я получаю p_value=0.042809154353783851
. Во втором подходе я получаю pvalue=0.99871467077385223
.
Почему я не получаю одинаковые p-значения в обоих подходах? Спасибо.