在《如何计算假设检验的功效(power)和效应量(effect size)?》一文中,我们讲述了如何根据显著性水平α,效应量和样本容量n,计算功效,以及如何根据显著性水平α,功效和样本容量n,计算效应量。但这两个应用都属于事后检验,也就是说,就算假设检验之后计算出的功效或效应量不理想,我们也没有办法改变。因此,我们最好事先就把我们想要达到的功效和效应量确定好,然后根据显著性水平α,功效和效应量,计算样本容量n。这种事前检验的应用用得比较多。
此外,我们都知道,如果假设检验选取的样本量很小,那么检验结果的可信度就不高,因为每次抽取的样本波动会很大。但是也不是说样本量越大越好,因为如果样本量很大的话,会增加检验的成本。比如说做A/B测试,一个公司的流量是有限的,此外,如果用很多用户来做实验,试错成本会很大。因此,在假设检验之前确定好一个“最小”的样本量非常重要。
样本量(sample size):每次抽取的样本中所含的观测值的数量。
z检验(单样本,样本和总体均值)中计算样本量的公式如下:
(单尾)
(双尾)
注:μa为第二类错误中所采用的总体均值的值。
双样本(两总体均值)的假设检验中,计算样本量的公式如下:(下图摘自:https://www.datasciencecentral.com/profiles/blogs/determining-sample-size-in-one-picture)
应用:根据显著性水平α,功效和效应量,计算样本容量n。
(可用G*Power或Statsmodels计算)
如何使用G*Power:https://zhuanlan.zhihu.com/p/62560195
线上计算:https://www.stat.ubc.ca/~rollin/stats/ssize/n2.html
单样本t检验:statsmodels.stats.power.
tt_solve_power
(effect_size=None, nobs=None, alpha=None, power=None, alternative='two-sided')
独立样本t检验:statsmodels.stats.power.
tt_ind_solve_power
(effect_size=None, nobs1=None, alpha=None, power=None, ratio=1.0, alternative='two-sided')
卡方拟合优度检验:statsmodels.stats.power.GofChisquarePower.
solve_power
(effect_size=None, nobs=None, alpha=None, power=None, n_bins=2)
F方差齐性检验:statsmodels.stats.power.FTestPower.
solve_power
(effect_size=None, df_num=None, df_denom=None, nobs=None, alpha=None, power=None, ncc=1)
方差分析:statsmodels.stats.power.FTestAnovaPower.
solve_power
(effect_size=None, nobs=None, alpha=None, power=None, k_groups=2)
可以看到,用Statsmodels库计算功效,效应量和样本量的函数都是同一个,只要把需要计算的那个值仍然设为None,把其他想要达到的数值填上即可。
参考: