В комметарии поступил вопрос: «А правда ли, что если наблюдений больше ста, можно забить?»
Нет, не правда. ошибка сильно зависит от величины эффекта и дисперсий. Маловероятно, что они одинаковые, да ещё и единичные, а величина эффекта, которую вы ищите такая большая, как в моей симуляции. Для каждого конкретного случая картинка будет своей.
Чем больше дисперсии и чем меньше эффект, который вы детектируете, тем позже наступает сходимость. Мой небольшой говнокод для картинки можно найти ниже. Он по мотивам pdf-ки, и дисперсии там совпадают, но вы можете получить ровно такие же формулы для разных дисперсий, либо сделать цикл из симуляций.
Нет, не правда. ошибка сильно зависит от величины эффекта и дисперсий. Маловероятно, что они одинаковые, да ещё и единичные, а величина эффекта, которую вы ищите такая большая, как в моей симуляции. Для каждого конкретного случая картинка будет своей.
Чем больше дисперсии и чем меньше эффект, который вы детектируете, тем позже наступает сходимость. Мой небольшой говнокод для картинки можно найти ниже. Он по мотивам pdf-ки, и дисперсии там совпадают, но вы можете получить ровно такие же формулы для разных дисперсий, либо сделать цикл из симуляций.
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
plt.style.use('ggplot')
def power_1(n_obs, alpha=0.05, mu1=4, mu2=5, sigma=1):
z_crit = stats.norm().ppf(1 - alpha)
a = z_crit - (mu2 - mu1)/np.sqrt(2 * sigma/n_obs)
return 1 - stats.norm().cdf(a)
def power_2(n_obs, alpha=0.05, mu1=4, mu2=5, sigma=1):
z_crit = stats.norm().ppf(1 - alpha)
a = np.sqrt(2)*z_crit - (mu2 - mu1)/np.sqrt(2 * sigma**2/n_obs)
return 1 - stats.norm().cdf(a)
obs = np.arange(1, 100)
plt.plot(obs, power_1(obs), label='процедура 1')
plt.plot(obs, power_2(obs), label='процедура 2')
plt.title("Гипотеза о равенстве средних")
plt.ylabel("Мощность критерия")
plt.xlabel("Число наблюдений")
plt.legend( );