Введение в медицинскую статистику
Автор: old.medach.pro
Публикация: 18.02.2018

Выборка и генеральная совокупность
Должен ли повар, который варит кашу, съесть всю кастрюлю, чтобы оценить плод своих кулинарных усилий? Вероятно, нет: он может попробовать чуть-чуть, исходя из того простого соображения, что остальная каша в кастрюле похожа на ту, что оказалась в его ложке. В повседневной жизни мы постоянно экстраполируем представление о части на целое. Возможно, вы любите мандарины, но чтобы это понять, вам не пришлось съесть все мандарины на свете.
Множество объектов, о котором исследователь собирается делать выводы, называется генеральной совокупностью. Например, это могут быть все люди, страдающие диабетом. Или все женщины старше 65, перенесшие инсульт. Или все мандарины на свете. Собрать информацию обо всех объектах обычно невозможно, так что используются выборки. Выборка — это та часть генеральной совокупности, с которой работает исследователь. Если выборка отражает изучаемые свойства генеральной совокупности, она называется репрезентативной, а если не отражает, то нерепрезентативной (вряд ли пакет гнилых мандаринов убедит вас, что все мандарины на свете плохи на вкус; впрочем, не всегда нерепрезентативность выборки так очевидна).
Эталонный пример работы с нерепрезентативной выборкой — опрос, проведенный в 1936 году журналом "The Literary Digest": были разосланы бюллетени десяти миллионам человек, среди которых были подписчики журнала и люди, случайным образом выбранные из телефонных справочников и реестров владельцев автомобилей. Два с половиной миллиона человек вернули их заполненными, и большинство из них — 57% — в этом опросе поддерживали республиканца Альфа Лэндона. Демократ Франклин Рузвельт набрал 40%, но когда дело дошло до выборов, — победил. Позже стало понятно, почему так произошло: во-первых, большая часть подписчиков журнала были республиканцами, а во-вторых, телефонами и автомобилями владели главным образом состоятельные люди, которые тоже в основном были республиканцами.
Описательная статистика
Гистограмма
Первым делом нужно составить представление о выборке и описать ее. Наиболее удобное графическое представление выборки — гистограмма. Чтобы понять, как устроена гистограмма, возьмем для примера таблицу с данными из знаменитого исследования 1885 года английского ученого Френсиса Гальтона, в котором он изучал взаимосвязь между ростом взрослых людей и ростом их родителей. В таблицу вошли данные о росте детей (то есть уже взрослых людей) и их родителей из 197 семей. Давайте разберемся с ростом детей.
#Загружаем данные:
galton = pd.read_csv('Galton.csv')
#Выводим первые пять строк:
galton.head()
Family | Father | Mother | Gender | Height | Kids | |
0 | 1 | 78.5 | 67.0 | M | 73.2 | 4 |
1 | 1 | 78.5 | 67.0 | F | 69.2 | 4 |
2 | 1 | 78.5 | 67.0 | F | 69.0 | 4 |
3 | 1 | 78.5 | 67.0 | F | 69.0 | 4 |
4 | 2 | 75.5 | 66.5 | M | 73.5 | 4 |








Смотрите, в первом случае правый склон гистограммы более пологий, и третий квартиль дальше от медианы, чем первый. Во втором случае первый квартиль дальше от медианы, чем третий, и у гистограммы более пологий левый склон.
Не всегда легко определить, что лучше использовать для описания рассеяния — стандартное отклонение или квартили. Я писал, что стандартное отклонение подходит для более-менее симметричных колоколообразных распределениях. Но что такое более-менее? И когда распределение становится слишком скошенным? На этот случай нет четкого правила, так что решайте сами. В статистике так бывает.
Ящик с усами
Есть один наигоднейший график, очень удобный для того, чтобы быстро оценить параметры выборки и сравнить их для нескольких выборок. Называется он ящиком с усами, или диаграммой размаха, или ящичковой диаграммой Тьюки.
Выглядят ящики с усами вот так:
plt.figure(figsize=(9, 6))
#Бокс-плоты из документации Seaborn -- каноничный датасет ирисов.
iris = sns.load_dataset("iris")
ax = sns.boxplot(data=iris, orient="v", palette="Set2")
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
Ориентированы ящики могут быть как горизонтально, так и вертикально, на усмотрение исследователя. Суть их при этом не меняется.
Устроены эти диаграммы довольно незатейливо. Границы самого ящика показывают первый и третий квартили, линия в центре — медиана. Максимальная длина каждого уса — полтора интерквартильных размаха. Если данные отстоят в меньшую сторону от первого квартиля или в большую от третьего на расстояние более полутора интерквартильных размахов (расстояние между 1-м и 3-м квартилями), то эти данные считаются выбросами и изображаются в виде точек. А если, например, единица наблюдения с наименьшим значением отстоит от первого квартиля только на половину интерквартильного размаха, то ус закончится на этой единице наблюдения (сравните оранжевый ящик на рисунке сверху и синий рядом с ним; длина усов оранжевого ящика максимальна — полтора интерквартильных размаха, а у синего ящика меньше, потому что данные так далеко не распростираются).
plt.figure(figsize=(15, 7))
plt.subplot(221)
i = 6
sample = stats.skewnorm.rvs(i, size=1000)
x = np.linspace(stats.skewnorm.ppf(0.01, i), stats.skewnorm.ppf(0.99, i), 100)
plt.plot(x, stats.skewnorm.pdf(x, i), 'r-', lw=4, alpha=0.6)
plt.hist(sample, 16, normed=True, alpha=0.7)
l1 = plt.axvline(np.percentile(sample, 25), c="#e74c3c", alpha=0.8, linestyle='dashed', label='1-й квартиль')
l2 = plt.axvline(np.percentile(sample, 50), c="#34495e", alpha=0.8, linestyle='dashed', label='Медиана')
l3 = plt.axvline(np.percentile(sample, 75), c="#2ecc71", alpha=0.8, linestyle='dashed', label='3-й квартиль')
plt.legend(handles=)
plt.subplot(223)
sns.boxplot(sample, width=0.5)
plt.subplot(222)
i = -6
sample = stats.skewnorm.rvs(i, size=1000)
x = np.linspace(stats.skewnorm.ppf(0.01, i), stats.skewnorm.ppf(0.99, i), 100)
plt.plot(x, stats.skewnorm.pdf(x, i), 'r-', lw=4, alpha=0.6)
plt.hist(sample, 16, normed=True, alpha=0.7)
l1 = plt.axvline(np.percentile(sample, 25), c="#e74c3c", alpha=0.8, linestyle='dashed', label='1-й квартиль')
l2 = plt.axvline(np.percentile(sample, 50), c="#34495e", alpha=0.8, linestyle='dashed', label='Медиана')
l3 = plt.axvline(np.percentile(sample, 75), c="#2ecc71", alpha=0.8, linestyle='dashed', label='3-й квартиль')
plt.legend(handles=)
plt.subplot(224)
sns.boxplot(sample, width=0.5)
plt.show()
Важно помнить, что не каждую выборку можно описать с помощью перечисленных показателей или отразить ящичковой диаграммой. Хороший тому пример — бимодальные распределения. Смотрите на картинку.
#Это функция для получения бимодально распределенной величины.
def bimodal( low1, high1, mode1, low2, high2, mode2 ):
toss = np.random.choice((1, 2))
if toss == 1:
return np.random.triangular( low1, high1, mode1 )
else:
return np.random.triangular( low2, high2, mode2 )
a =
for x in range(1000):
a.append(bimodal(1, 4, 4, 3, 6, 8))
fig = plt.figure(figsize=(12, 5))
ax1 = plt.subplot(211)
sns.distplot(a)
ax2 = plt.subplot(212, sharex=ax1)
sns.boxplot(a)
plt.show()
В подобных случаях разумным выходом будет просто показать гистограмму.
Пример описания выборки
Давайте для примера опишем мужчин и женщин из таблицы Гальтона, о которой мы говорили при обсуждении гистограмм.
fig = plt.figure(figsize=(12, 4))
fig.text(0.5, 0.04, "Рост", ha='center')
fig.text(0.08, 0.5, "Число людей", va='center', rotation='vertical')
ax1 = plt.subplot(121)
galton.Height.hist(bins=14, alpha=0.8)
plt.title('Рост женщин')
ax2 = plt.subplot(122)
galton.Height.hist(bins=12, alpha=0.8)
plt.title('Рост мужчин')
plt.show()
Гистограмма роста женщин достаточно похожа на нормальное распределение, так что для иллюстрации опишем первую группу с помощью среднего арифметического и стандартного отклонения. Вторую группу опишем с помощью медианы и квартилей.
df = pd.DataFrame(columns=, index=galton.describe().index)
df = galton.describe().Height
df = galton.describe().Height
df.ix
Рост испытуемых женского пола варьирует в пределах от 56 до 70 дюймов, среднее арифметическое составляет 64.1 дюйма (стандартное отклонение 2.4 дюйма).
Рост испытуемых мужского пола варьирует в пределах от 60 до 79 дюймов с медианой, равной 69.2 дюйма (интерквартильная широта от 67.5 до 71 дюйма).
sns.boxplot(x=galton.Gender, y=galton.Height, data=galton, width=0.4)
plt.ylabel('Рост')
plt.xlabel('Пол')
plt.show()
Многие исследователи, чтобы обозначить среднее арифметическое и стандартное отклонение, пишут так: 64.1±2.4, но делать этого не стоит, потому что при таком оформлении возникает путаница между стандартным отклонением и доверительными интервалами (о доверительных интервалах скоро тоже поговорим). Лучше вообще не используйте символ "±".
Кажется, вьетнамец победил, он находится ближе к правому краю колокола, чем серб. Как в этом убедиться?
Можно посчитать, на сколько стандартных отклонений рост серба и рост вьетнамца отличаются от средних значений. Это самое количество стандартных отклонений называется z-оценкой и вычисляется по такой формуле:
z=\frac{x-\mu}{\sigma}
То есть все, что надо сделать в случае с вьетнамцем — это вычесть 162 из 174 и поделить результат на 5,39.
Итак, рост вьетнамца отклоняется на 2,23 стандартного отклонения от среднего, а рост серба — на 1,78 стандартного отклонения от среднего, то есть вьетнамец у себя на родине воспринимается более высоким, чем серб у себя.
Таким образом можно стандартизировать любую нормально распределенную величину. По сути, мы наносим ее на график нормального распределения со средним, равным нулю и стандартным отклонением, равным единице.
x = np.linspace(-6,5,100)
pdf = norm_rv.pdf(x)
xticks =
plt.xticks(xticks)
plt.plot(x, pdf)
l1=plt.axvline(viet, color='g', ls='dashed', label='z-оценка\nроста вьетнамца')
l2=plt.axvline(serb, color='b', ls='dashed', label='z-оценка\nроста серба')
plt.legend(handles=)
plt.show()
Такое нормальное распределение со средним, равным 0, и среднеквадратическим отклонением, равным 1, называется стандартным нормальным распределением, или z-распределением.
У него есть одна любопытная и важная особенность. Зная z-оценку единицы наблюдения, мы можем также узнать, какой процент наблюдений превосходит значение этой единицы наблюдения. То есть мы можем прямо сейчас оценить, какая доля вьетнамцев выше или ниже ростом, чем наш вьетнамец. Для этого существует специальная таблица z-значений.
Z-оценка роста нашего вьетнамского приятеля составила 2,23 (с округлением до второго знака после запятой). В вертикальном столбце под буквой z находим 2,2, а в горизонтальном 0,03 (потому что 2,2 + 0,03 = 2,23), на пересечении стоит 0,9871. Это означает, что он выше 98,7% единиц наблюдения.
То есть если согнать всех-всех вьетнамцев на поляну и сделать из них гистограмму таким образом:
#International Statistical Review
#1975 vol: 43 (3) pp: 339
— только 2,2% людей справа будут выше него.
Для вычисления z-значения не обязательно использовать таблицу, можно получить более точную оценку с использованием специальных инструментов для работы с данными (это не обязательно должны быть R, SPSS или что-то подобное, можно поставить превосходное приложение "Probability Distributions" на телефон).
Зная про z-оценку, нетрудно догадаться, откуда взялось правило 68-95-99,7. Давайте посмотрим по таблице, какая доля единиц наблюдения лежит в интервале от -1 до 1.
Левее z=1 лежит 84,13% единиц наблюдения, левее z=-1 лежит 15,87% единиц наблюдения. Между ними, соответственно, 84,13-15,87 = 68,26%.
Можете проверить для 95 и 99,7, ну или попробовать для любых других точек.
#Этот график я уже строил выше, так что не буду копировать тонну кода и просто перетащу сам график.
fig_rule
Подведу итог. Z-оценка — это количество стандартных отклонений, на которое единица наблюдения отклоняется от среднего арифметического. С помощью таблицы z-оценок можно определить, какая доля единиц наблюдения лежит выше или ниже произвольного значения. Применима z-оценка только для нормально распределенных величин.
Что будет, если я извлеку много-много выборок из генеральной совокупности и посчитаю для каждой из этих выборок среднее арифметическое? Видимо, получится выборка из средних арифметических. Но как будет выглядеть гистограмма такой выборки?
Давайте проделаем этот трюк для каждой из наших генеральных совокупностей. Вытащим из каждой по десять тысяч выборок по 3 единицы наблюдения, посчитаем средние арифметические для всех них и получим две гистограммы, показывающие распределения средних арифметических.
#Вот так вытаскиваю выборки:
mean_list_norm = np.array()
mean_list_skewed = np.array()
fig = plt.figure(figsize=(12, 5))
fig.add_subplot(121)
plt.axvline(mean_list_norm.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.hist(mean_list_norm, bins = 20)
fig.add_subplot(122)
plt.hist(mean_list_skewed, bins = 20)
plt.axvline(mean_list_skewed.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.show()
Как видите, распределения выборочных средних похожи на распределения величин в генеральных совокупностях (хотя правое скошено несколько меньше). Средние арифметические примерно совпадают с истинными средними арифметическими, что неудивительно. Бросается в глаза, что эти гистограммы получились уже, чем гистограммы генеральных совокупностей (обратите внимание на ось x. Это тоже неудивительно, ведь, понятное дело, выборочные средние не так сильно варьируют, как единицы наблюдения во всей генеральной совокупности.
Давайте провернем этот трюк еще раз, но теперь будет извлекать выборки объемом 15.
mean_list_norm = np.array()
mean_list_skewed = np.array()
fig = plt.figure(figsize=(12, 5))
fig.add_subplot(121)
plt.axvline(mean_list_norm.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.hist(mean_list_norm, bins = 20)
fig.add_subplot(122)
plt.hist(mean_list_skewed, bins = 20)
plt.axvline(mean_list_skewed.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.show()
Гистограммы стали еще уже, а правая еще менее скошенной. Давайте еще раз. Извлечем из генеральных совокупностей по 10000 выборок, но теперь объемом 100.
mean_list_norm = np.array()
mean_list_skewed = np.array()
fig = plt.figure(figsize=(12, 5))
fig.add_subplot(121)
plt.axvline(mean_list_norm.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.hist(mean_list_norm, bins = 20)
fig.add_subplot(122)
plt.hist(mean_list_skewed, bins = 20)
plt.axvline(mean_list_skewed.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.show()
На вид две гистограммы нормально распределенной величины. Кстати, смотрите, они стали еще уже. Это абсолютно логично: чем больше размер выборки, тем более точную оценку среднего она может нам предоставить. Маленькие выборки хуже отражают параметры генеральной совокупности, чем большие.
И, как видите, чем больше выборка, тем сильнее распределение выборочных средних похоже на нормальное, и тем меньше будет рассеяние значений вокруг среднего (выше точность оценки среднего). Стало быть, чем больше объем выборки, тем меньше стандартное отклонение в выборке выборочных средних :)
Вот это стандартное отклонение в выборке, составленной из выборочных средних, называется стандартной ошибкой среднего. Приятная новость состоит в том, что для его определения не надо получать кучу выборок, есть простая маленькая формула:
SD_\overline{x} = \frac{\sigma}{\sqrt{n}} — истинная стандартная ошибка среднего.
Но, как вы понимаете, для оценки истинной стандартной ошибки среднего надо знать среднеквадратическое отклонение в генеральной совокупности, а это редкая роскошь, которой мы обычно не обладаем. Так что стандартную ошибку среднего мы оцениваем по выборочному стандартному отклонению:
\Huge SE_\overline{x} = \frac{s}{\sqrt{n}}
Некоторые исследователи используют стандартную ошибку среднего для описания выборки вместо стандартного отклонения (первая всегда меньше второй, поэтому иногда возникает такой соблазн). Этого делать не стоит, так как этот показатель нужен для оценки среднего в генеральной совокупности, он не является описательной статистикой.
Одной только стандартной ошибки для оценки среднего недостаточно. Но она позволит нам вычислять доверительные интервалы и проверять гипотезы, об этом мы сейчас поговорим.
Когда мы хотим найти среднее генеральной совокупности, нас почти всегда ждет горькое разочарование, ведь генеральные совокупности обычно огромны. Так что мы считаем выборочное среднее и надеемся, что оно не сильно отличается от генерального. Меру точности нашей оценки можно отразить с помощью доверительного интервала.
Мы знаем, что если извлечь из генеральной совокупности множество выборок и для каждой посчитать среднее арифметическое, полученные значения распределятся по нормальному закону со стандартным отклонением, равным \frac{\sigma}{\sqrt{n}}. Еще мы знаем, что, будь нам известно истинное среднее, то если бы мы отложили от него в обе стороны по три стандартных ошибки среднего, охватили бы примерно 99,7% всех возможных стандартных ошибок среднего (помните правило 68-95-99,7?).
Ну так вот, это работает и в другую сторону. Мы, конечно, не знаем истинного среднего, но запросто можем получить выборочное среднее. И можем от него в обе стороны отложить три стандартных ошибки среднего. И вот что интересно: если извлекать из генеральной совокупности выборки одну за другой много-много раз, а потом для каждой считать выборочное среднее и для него строить такой интервал: \overline{x} \pm 3SE_\overline{x}, то примерно 99,7% интервалов будут включать в себя истинное среднее.
Итак, когда вы находите выборочное среднее, а потом считаете, каким значениям соответствуют \overline{x} - 3SE_\overline{x} и \overline{x} + 3SE_\overline{x}, это и есть построение доверительного интервала. Совсем не обязательно откладывать именно по три стандартных ошибки среднего влево и вправо. Мы можем, например, захотеть построить 95%-й доверительный интервал. И мы знаем, что для этого надо отступать на две стандартных ошибки среднего, но это не вполне точное значение. Чтобы узнать более точное, надо заглянуть в таблицу z-оценок. Количество стандартных отклонений, которое нам требуется, добываем так: 1-(100-ДИ)/200, и полученное значение ищем в таблице, но не по индексам, а в куче z-значений.
Давайте со мной для 95%-го доверительного интервала. 1-(100-95)/200 = 1-0,025 = 0,975. Ищем 0,975 в таблице, и обнаруживаем это число на пересечении строки 1,9 и столбца 0,06. Чудно, это значит, что для построения нужного нам интервала надо отложить от выборочного среднего по 1,96 стандартного отклонения в обе стороны. Соответственно, формула 95%-го ДИ:
\overline{x} \pm 1,96SE_\overline{x}
Итак, 95% построенных таким образом интервалов будут содержать истинное среднее. В качестве иллюстрации я сгенерировал генеральную совокупность, извлек из нее 100 выборок и для каждой построил 95%-й доверительный интервал для среднего. Те интервалы, которые не включили в себя истинное среднее, отмечены жирным.
#Тут нужна специальная библиотека для статистики:
from statsmodels.stats.weightstats import zconfint
population = np.random.randn(100000)
plt.figure(figsize=(10, 10))
plt.xlim(xmin=-1)
for i in range(100):
sample = np.random.choice(population, size=60)
interval = zconfint(sample)
#Проверяю, включает ли интервал среднее, и если нет, то рисую его жирным.
if interval < 0 and interval > 0:
plt.plot((interval, interval), (i, i), color='#9A2EFE', alpha=0.4)
plt.scatter(x=, y=i, color='#9A2EFE', alpha=0.5, s=10)
else:
plt.plot((interval, interval), (i, i), color='#9A2EFE', alpha=1)
plt.scatter(x=, y=i, color='#9A2EFE', alpha=1, s=15)
plt.axvline(0, c='#04B45F', alpha=0.3, ls='dashed')
plt.show()




F | M | |
mean | 64.110162 | 69.228817 |
std | 2.370320 | 2.631594 |
min | 56.000000 | 60.000000 |
25% | 62.500000 | 67.500000 |
50% | 64.000000 | 69.200000 |
75% | 65.500000 | 71.000000 |
max | 70.500000 | 79.000000 |

Z-оценка
Встречаются как-то раз серб и вьетнамец. Рост серба 194 см, и у себя на родине он считается весьма высоким. Рост вьетнамца 174 см, и у себя на родине он тоже считается весьма высоким. Кто выше: серб среди сербов или вьетнамец среди вьетнамцев?
В Сербии средний рост мужчины 182 см. Так что рост нашего сербского господина на 12 см выше среднего.
Во Вьетнаме средний рост мужчины 162 см. Так что рост нашего вьетнамского господина тоже на 12 см выше среднего.
Стандартное отклонение для вьетнамцев — 5,39 см, а для сербов — 6,74 см (посчитаны по огромным выборкам, так что хорошо аппроксимируют среднеквадратические отклонения). Давайте посмотрим на график.
plt.figure(figsize=(10, 4))
norm_rv1 = stats.norm(loc=182, scale = 6.74)
norm_rv2 = stats.norm(loc=162, scale = 5.39)
x = np.linspace(140,210,100)
pdf1 = norm_rv1.pdf(x)
y = np.linspace(140,210,100)
pdf2 = norm_rv2.pdf(x)
plt.plot(x,pdf1)
plt.fill_between(y1=pdf1, x=x, alpha=0.4)
plt.plot(y,pdf2)
plt.fill_between(y1=pdf2, x=x, alpha=0.4)
l1=plt.axvline(174, color='g', ls='dashed', label='Наш вьетнамец')
l2=plt.axvline(194, color='b', ls='dashed', label='Наш серб')
plt.legend(handles=)
plt.show()





Центральная предельная теорема
Представьте: у меня есть две генеральные совокупности по миллиону объектов в каждой. В одной величина распределена нормально, в другой распределение скошенное.
#Делаю две совокупности по миллиону единиц наблюдения.
norm = norm_rv.rvs(size=1000000)
skewed = stats.skewnorm.rvs(5, size=1000000)
fig = plt.figure(figsize=(12, 5))
#Рисую их гистограммы вместе с графиками функций плотности вероятности.
ax = fig.add_subplot(121)
plt.hist(norm, normed=True, bins = 20)
x = np.linspace(-4,5,100)
pdf = norm_rv.pdf(x)
plt.axvline(norm.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.plot(x, pdf)
ax = fig.add_subplot(122)
plt.hist(skewed, normed=True, bins = 20)
y = np.linspace(-1,4,100)
pdf = stats.skewnorm(5).pdf(y)
plt.axvline(skewed.mean(), color='b', linestyle='dashed', linewidth=1)
plt.legend()
plt.plot(y, pdf)
plt.show()




Доверительные интервалы для среднего

Проверка гипотез
Концепция
В разделе про z-оценку мы говорили о вьетнамце и сербе, оба они были весьма высокими. На самом деле там был был и третий человек, малайзиец. "Вообще-то я тоже серб," — сказал он. Однако это было довольно подозрительно, ведь, помимо всего прочего, рост малайзийца был 167 см.
Впрочем, хорошо, давайте на секунду предположим, что перед нами и правда серб. Какова вероятность встретить столь низкого (или еще более низкого) серба? На этот вопрос ответить нетрудно, нужно лишь узнать, насколько характерен такой рост для сербских мужчин. Если вероятность встретить такого или более низкого человека менее 5% (то есть если имеющееся значение отличается от среднего очень сильно), будем считать, что подозреваемый, скорее всего, пытается нас обмануть.
Иными словами, надо посмотреть, какая доля генеральной совокупности попадает в этот интервал:
plt.figure(figsize=(10, 4))
norm_rv = stats.norm(loc=182, scale = 6.74)
x = np.linspace(140,210,71)
y = norm_rv.pdf(x)
lol = plt.plot(x,y)
l1=plt.axvline(167, color='g', ls='dashed', label='Псевдосерб')
plt.fill_between(x], \
y], color='r', alpha=0.5, label='1.3% сербов')
plt.legend(handles=)
plt.show()



- Формулируем нулевую гипотезу (H_0). Это обычно путь наименьшего сопротивления, самое унылое и серое утверждение: об отсутствии различия, отсутствии взаимосвязи, отсутствии изменений. В нашем случае мы предполагаем, что рост незнакомца относится к генеральной совокупности ростов сербов.
- Формулируем альтернативную гипотезу (H_1). Это уже более интересная гипотеза: есть различие, есть взаимосвязь, есть изменения, есть что-то любопытное. Ну или как в нашем случае: наш субъект слишком низкий, чтобы быть сербом.
- Решаем, что для нас такое "слишком низкий", "слишком большое различие" и т.п. То есть определяемся, в каком случае отвергнем нулевую гипотезу в пользу альтернативной. В нашем примере мы отвергаем H_0, если такие или еще более низкие сербы встречаются реже, чем в 5% случаев (то есть его слова неправдоподобны, и такой рост является редкостью). Выбранная нами вероятность называется уровнем α. В медицине, как правило, устанавливают пороговый уровень статистической значимости α = 0.05 (так мы ограничиваем вероятность ошибочно отвергнуть нулевую гипотезу; по исходному замыслу эта ошибка должна встречаться не чаще, чем в каждом 20 исследовании, — на практике, конечно, это не так, скоро это обсудим). Иными словами, величину считаем статистически значимой, если мала вероятность получить такое или еще более выдающееся ее значение (а что мы понимаем под "малой вероятностью" — как раз и есть α).
- Применяем статистический тест: рассчитываем некий показатель, который подчиняется своему закону распределения, в нашем случае это z-оценка, подчиняющаяся нормальному закону.
- Получаем уровень статистической значимости — p-значение. Если он меньше, чем выбранный нами уровень α (то есть вероятность получить такое значение меньше выбранного нами уровня), то мы отвергаем нулевую гипотезу. Если больше или равен, то мы не можем отвергнуть нулевую гипотезу. Потому что вы видите, что полученные вами данные плохо с ней уживаются.
- Низкое p-значение: ваши данные плохо уживаются с нулевой гипотезой.
- Высокое p-значение: ваши данные хорошо уживаются с нулевой гипотезой.
- Оно не показывает вероятность того, что имеющиеся результаты получены случайно.
- Оно не показывает вероятность того, что нулевая гипотеза верна. Или что альтернативная неверна.
- Если p-значение слишком велико, чтобы отвергнуть нулевую гипотезу, это не значит, что нулевая гипотеза верна.
- Маленькое p-значение не говорит о высокой эффективности лечения.
- Маленькое p-значение не означает, что наши результаты воспроизводимы.
- Маленькое p-значение не означает, что исследование автоматически имеет научную ценность.





- Мы должны знать генеральную дисперсию (или среднеквадратическое отклонение) или располагать ее оценкой с высокой точностью. Если этого нет, то лучше использовать t-статистику, о ней скоро поговорим. Это нужно потому, что в формуле фигурирует стандартная ошибка среднего \sigma/\sqrt{n}
- Тест подходит для работы с нормально распределенными величинами. И в вашей работе необходимо указать, что это было проверено (как проверить, поговорим в разделе про двухвыборочный t-тест). Если распределение немного отличается от нормального, но выборка очень большая, центральная предельная теорема все равно дает нам возможность использовать тест (ведь нас интересует распределение выборочных средних). Но будьте осторожны, стройте вначале гистограмму, бывают очень сильно скошенные распределения.



- В отличие от одновыборочного z-теста, тут генеральную дисперсию знать не требуется. Если так вышло, что вы ее откуда-то знаете или располагаете ее оценкой с высокой точностью, это тот редкий случай, когда z-статистика подходит лучше.
- Тест годится для работы с нормально распределенными величинами. Если распределение немного отличается от нормального, но выборка очень большая, центральная предельная теорема все равно дает нам возможность использовать тест (ведь нас интересует распределение выборочных средних). Но будьте осторожны, стройте вначале гистограмму, бывают и сильно скошенные распределения.


- Сравниваемые выборки должны быть извлечены из совокупностей с нормальным распределением интересующей нас величины. Всегда нужно проверять выборку на нормальность и сообщать об этом в своей работе (как это проверить, скоро обсудим; просто посмотреть на гистограммы недостаточно). Однако если распределение немного скошено, а выборки крупные (например, по 100 единиц наблюдения), центральная предельная теорема все равно позволяет использовать этот критерий. Но будьте осторожны. Если сомневаетесь, воспользуйтесь критериями, которые не требуют нормальности (непараметрические критерии, например U-тест Манна—Уитни).
- Стандартный вариант двухвыборочного t-теста требует равенства генеральных дисперсий для сравниваемых групп. Если дисперсии различаются значимо, критерий использовать нельзя. Поэтому следует непременно проверить это условие и упомянуть об этом в работе. Для проверки можно, например, использовать тест Левена. Нужно все это из-за одной досадной статистической проблемы (проблемы Беренса—Фишера): невозможно оценить разницу между средними арифметическими совокупностей, если у них разная дисперсия.
- Хорошая новость состоит в том, что у проблемы Беренса—Фишера есть приближенные решения, одним из которых является t-тест Уэлча, который мы и собираемся рассмотреть. Поэтому нам можно не переживать о неравенстве генеральных дисперсий. Не забудьте, в ваших работах обязательно нужно написать о проверке на равенство генеральных дисперсий, или же сообщить, что вы используете модифицированный t-критерий.



Проблема множественной проверки гипотез
Есть две игры. Правила их таковы:
- Игра №1. Я подкидываю монетку. Если выпадает орел, вы получаете тысячу рублей.
- Игра №2. Я подкидываю монетку 10 раз. Если хоть раз из этих десяти выпадет орел, вы получите тысячу рублей.

p-хакинг
Отчего-то исследования, в которых не удалось совершить открытие, многие авторы считают неудавшимися и не публикуют. Для науки отрицательный результат не менее ценен, но он не так здорово смотрится в публикации. Поэтому часто исследователи делают ужасную вещь.
Они берут свои данные и начинают искать что-нибудь интересное. Какие-нибудь шокирующие различия или закономерности. А когда найдут, проверяют их значимость прямо на этих же данных. Если p меньше 0,05 — прекрасно, научная работа готова. Если не меньше, — что ж, ищем дальше! Главное, потом не указывать в работе, сколько гипотез было проверено.
Собственно, это и называется p-хакингом. Манера мучить данные, пока они не разродятся чем-то подходящим.
На самом деле проверять все найденные интересные закономерности нужно на новых данных. Проблема, конечно, в том, что их еще нужно собирать.
Надо понимать, что к моменту, когда вы начинаете анализ собранных данных, вы должны уже определиться с гипотезами, которые намереваетесь проверить. Иначе ошибка множественных сравнений становится частью вашего исследования.
Столь же безответственно перебирать критерии один за другим, пока наконец какой-то не выдаст приемлемое p. Или выбирать тип альтернативы уже после того, как вы увидели данные.
Существует огромный простор для манипуляции результатами, и исследователи часто пользуются этим безо всякого стеснения. Одна моя умная знакомая как-то раз пошутила, что статистика — это набор грязных хаков. Возможно, в области проверки гипотез сегодня так и есть.
Что еще почитать и посмотреть
В статье я затронул только несколько базовых моментов. Но они должны помочь вам двигаться дальше. Чтобы понять некоторые вещи (p-значение, как мне кажется, одна из них), их нужно прочитать или услышать много раз. Поэтому посоветую вам несколько источников:
Основы статистики — прекрасный курс Анатолия Карпова на Stepic. Ссылка ведет к первой его части, всего их три.
"Медико-биологическая статистика" Стентона Гланца — всем известная книга, горячо рекомендую.
"Statistics for the Behavioral Sciences", Frederick J Gravetter, Larry B. Wallnau — еще одна хорошая книга. На русский, к сожалению, не переведена.
"100 Statistical Tests", Gopal K. Kanji — небольшой справочник, в котором собраны 100 основных статистических критериев.
Statistical Inference — красивые интерактивные графики нескольких основных концепций статистики.
Misunderstanding of p-values — статья в Википедии про заблуждения относительно p-значений.
Голова профессора Бамблдорфа — вводящая в ступор заметка о неверной интерпретации доверительных интервалов.
Автор: Михаил Берегов
Редакция: Елизавета Зайцева
Обложка: Никита Родионов
Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.