如何计算 Python 中的可检测效应大小(statsmodels 或其他)
How to calculate detectable effect size in Python (statsmodels or other)
我有一个不同于往常的问题。它涉及 Python(或 Excel 等)中的功效和样本量计算。在 Python 中,Statsmodels 可用于执行此操作。例如,下面的代码将输出提供 alpha、功效和效应大小的样本量。
但是,我想解决这个方程的影响大小。意思是,我需要计算最大可检测效应大小,提供一组 alpha、功率和 n。
如果statsmodels可以做到,我还没想好怎么做。或者我很乐意解方程,但我做不到。不确定这种问题是否适合这里,但如果有人能提供帮助,我很高兴!
from statsmodels.stats.power import TTestIndPower
#parameters for the analysis
effect_size = 0.2
alpha = 0.05 # significance level
power = 0.3
power_analysis = TTestIndPower()
sample_size = power_analysis.solve_power(effect_size = effect_size,
power = power,
alpha = alpha)
print('Required sample size: {0:.2f}'.format(sample_size))
您可以使用例如数值求解 effect_size
的方程式root_scalar
:
from statsmodels.stats.power import TTestIndPower
from scipy import optimize
sample_size = 100
alpha = 0.05
power = 0.3
power_analysis = TTestIndPower()
def f(effect_size):
return power_analysis.solve_power(effect_size=effect_size, power=power, alpha = alpha) - sample_size
print('Maximum detectable effect size: {0:.2f}'.format(optimize.root_scalar(f, bracket=[0.01, 1.0]).root))
结果:
Maximum detectable effect size: 0.20
solve_power
可以解决给定其他变量中的任何一个变量。求解幂使用基于非中心 t 分布的显式公式。所有其他的都涉及寻根。
在给定功效、alpha 和观察次数的情况下查找效果大小可以使用
power_analysis = TTestIndPower()
effect_size = power_analysis.solve_power(effect_size = None,
power = 0.8,
alpha = 0.05,
nobs1 = 100)
TTestIndPower 用于比较 2 个独立样本的测试。样本大小由第一个样本中的观察数 nobs1
和样本之间样本大小的比率 ratio
指定,默认为 1,即两个样本中的样本大小相等。
我有一个不同于往常的问题。它涉及 Python(或 Excel 等)中的功效和样本量计算。在 Python 中,Statsmodels 可用于执行此操作。例如,下面的代码将输出提供 alpha、功效和效应大小的样本量。
但是,我想解决这个方程的影响大小。意思是,我需要计算最大可检测效应大小,提供一组 alpha、功率和 n。
如果statsmodels可以做到,我还没想好怎么做。或者我很乐意解方程,但我做不到。不确定这种问题是否适合这里,但如果有人能提供帮助,我很高兴!
from statsmodels.stats.power import TTestIndPower
#parameters for the analysis
effect_size = 0.2
alpha = 0.05 # significance level
power = 0.3
power_analysis = TTestIndPower()
sample_size = power_analysis.solve_power(effect_size = effect_size,
power = power,
alpha = alpha)
print('Required sample size: {0:.2f}'.format(sample_size))
您可以使用例如数值求解 effect_size
的方程式root_scalar
:
from statsmodels.stats.power import TTestIndPower
from scipy import optimize
sample_size = 100
alpha = 0.05
power = 0.3
power_analysis = TTestIndPower()
def f(effect_size):
return power_analysis.solve_power(effect_size=effect_size, power=power, alpha = alpha) - sample_size
print('Maximum detectable effect size: {0:.2f}'.format(optimize.root_scalar(f, bracket=[0.01, 1.0]).root))
结果:
Maximum detectable effect size: 0.20
solve_power
可以解决给定其他变量中的任何一个变量。求解幂使用基于非中心 t 分布的显式公式。所有其他的都涉及寻根。
在给定功效、alpha 和观察次数的情况下查找效果大小可以使用
power_analysis = TTestIndPower()
effect_size = power_analysis.solve_power(effect_size = None,
power = 0.8,
alpha = 0.05,
nobs1 = 100)
TTestIndPower 用于比较 2 个独立样本的测试。样本大小由第一个样本中的观察数 nobs1
和样本之间样本大小的比率 ratio
指定,默认为 1,即两个样本中的样本大小相等。