继承FTestAnovaPower后调用solve_power出现self参数缺失错误的问题
问题解决:statsmodels功率分析类继承中的self参数错误
错误原因
- 调用方式错误:
solve_power是实例方法,必须通过类的实例调用,而非直接用类名调用。直接用PwrAnalysis.solve_power()调用时,Python不会自动传入self参数,因此报错缺少该参数。 - 初始化方法错误:你给父类
FTestAnovaPower的构造函数传入了effect_size等参数,但实际上该类的构造函数不需要这些参数——这些参数是solve_power方法的入参,而非实例初始化参数。
修正后的代码
自定义类定义
import statsmodels.stats.power class PwrAnalysis(statsmodels.stats.power.FTestAnovaPower): def solve_power(self, **kwargs): # 调用父类的solve_power方法获取计算结果 result = super().solve_power(**kwargs) # 在这里添加你的额外评估逻辑 print(f"额外评估:计算得出的每组样本量为{result:.2f}") # 返回原结果(如果需要) return result
正确调用方式
# 先实例化自定义类,再调用solve_power方法 c = PwrAnalysis().solve_power(effect_size=0.33, nobs=None, alpha=0.04, power=0.8, k_groups=3)
关键说明
- 省略了多余的
__init__方法,因为父类FTestAnovaPower的初始化不需要额外参数,默认继承即可。 - 重写
solve_power方法后,先复用父类的计算逻辑,再添加自定义的额外评估步骤。 - 调用时必须先创建类的实例(
PwrAnalysis()),Python会自动将该实例作为self参数传入方法。
内容的提问来源于stack exchange,提问作者hghebrem
相关产品推荐
相关产品推荐

