在《如何計算假設檢驗的功效(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,把其他想要達到的數值填上即可。
參考: