You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Statsmodels FTestAnovaPower继承异常:参数报错与返回内存地址问题

解决Statsmodels FTestAnovaPower继承与样本量计算问题

问题1:「意外关键字参数」错误的修复

错误根源:

  • 未正确调用父类__init__方法,导致继承的类未初始化父类核心属性
  • 调用solve_power时错误传入self作为参数,且未使用关键字参数传递参数
  • X_func是__init__内的局部变量,new_lst方法无法访问

问题2:仅返回内存地址的修复

错误根源:

  • new_lst中直接使用vals,未通过self.vals访问实例属性,变量作用域错误
  • 调用solve_power时未明确指定要计算的参数(需将目标参数设为None)

修正后的完整代码

import statsmodels.stats.power as smp

class smpl_pwr(smp.FTestAnovaPower):
    def __init__(self, effect_size=None, nobs=None, alpha=None, power=None, k_groups=None, vals=None):
        # 正确调用父类初始化,继承父类所有属性与方法
        super().__init__(
            effect_size=effect_size,
            nobs=nobs,
            alpha=alpha,
            power=power,
            k_groups=k_groups
        )
        self.vals = vals  # 存储待迭代的power值列表

    def new_lst(self):
        smpl_size = []
        # 遍历每个power值,计算对应样本量
        for power_val in self.vals:
            sample_n = self.solve_power(
                effect_size=self.effect_size,
                alpha=self.alpha,
                k_groups=self.k_groups,
                power=power_val,
                nobs=None  # 指定计算样本量,必须设为None
            )
            smpl_size.append(sample_n)
        return smpl_size

使用示例

# 实例化计算器,固定已知参数,传入待迭代的power列表
calculator = smpl_pwr(
    effect_size=0.5,
    alpha=0.05,
    k_groups=3,
    vals=[0.7, 0.8, 0.9]
)

# 生成对应样本量列表
sample_sizes = calculator.new_lst()
print(sample_sizes)

关键修复说明

  1. 用super().__init__正确初始化父类,避免重复创建FTestAnovaPower实例
  2. 直接调用继承的solve_power方法,无需额外实例化父类
  3. 所有参数传递使用关键字参数,避免位置参数匹配错误
  4. 访问实例属性时统一使用self.xxx,确保变量作用域正确
  5. 计算样本量时必须将nobs设为None,明确告知函数需计算该参数

内容的提问来源于stack exchange,提问作者Hasben0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 10:25:15