Биномиальный критерий для доли


In [1]:
import numpy as np
from scipy import stats

In [2]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

Shaken, not stirred

Джеймс Бонд говорит, что предпочитает мартини смешанным, но не взболтанным. Проведём слепой тест (blind test): n раз предложим ему пару напитков и выясним, какой из двух он предпочитает:

  • выборка - бинарный вектор длины $n$, где 1 - Джеймс Бонд предпочел смешанный напиток, 0 - взболтанный;
  • гипотеза $H_0$ - Джеймс Бонд не различает 2 вида напитков и выбирает наугад;
  • статистика $t$ - количество единиц в выборке.

In [3]:
n = 16
n_samples = 1000
samples = np.random.randint(2, size = (n_samples, n))

In [12]:
t_stat = map(sum, samples)
values = list(t_stat)

In [14]:
pylab.hist(values, bins = 16, color = 'b', range = (0, 16), label = 't_stat')
pylab.legend()


Out[14]:
<matplotlib.legend.Legend at 0x7fcebd7bd278>

Нулевое распределение статистики — биномиальное $Bin(n, 0.5)$

Двусторонняя альтернатива

гипотеза $H_1$ - Джеймс Бонд предпочитает какой-то определённый вид мартини.


In [6]:
stats.binom_test(12, 16, 0.5, alternative = 'two-sided')


Out[6]:
0.076812744140625

In [7]:
stats.binom_test(13, 16, 0.5, alternative = 'two-sided')


Out[7]:
0.021270751953125

Односторонняя альтернатива

гипотеза $H_1$ - Джеймс Бонд предпочитает смешанный напиток.


In [8]:
stats.binom_test(12, 16, 0.5, alternative = 'greater')


Out[8]:
0.0384063720703125

In [9]:
stats.binom_test(11, 16, 0.5, alternative = 'greater')


Out[9]:
0.10505676269531246

In [ ]: