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

如何从Python的AnovaResults对象提取p值及验证重复测量ANOVA代码

问题解答

一、代码是否符合测试需求

你的代码基本符合单因素重复测量ANOVA的要求,数据结构完全满足AnovaRM的输入规范:

  • 正确定义了patient(重复测量的主体,5名患者)、group(重复测量的水平,即3天)、score(因变量)三个核心字段;
  • 每个患者对应3天的测量值,符合重复测量设计的逻辑。

可以做个小优化:把group列改名为day更直观,避免和“分组”概念混淆,优化后的DataFrame构建代码:

import pandas as pd
import numpy as np
from statsmodels.stats.anova import AnovaRM

day1 = [1,2,3,4,5]
day2 = [2,4,6,8,10]
day3 = [1.5,2.5,3.5,4.5,5.5]

df = pd.DataFrame({
    'patient': np.repeat(range(1, 6), 3),  # 5名患者,每人对应3条记录
    'day': np.tile([1,2,3], 5),            # 3天的标签,重复5次匹配所有患者
    'score': np.concatenate([[day1[i], day2[i], day3[i]] for i in range(5)])
})

二、提取AnovaResults中的p值

AnovaRM.fit()返回的AnovaResults对象自带anova_table属性,这是一个存储完整统计结果的DataFrame,直接从中提取p值即可:

# 拟合模型并保存结果
results = AnovaRM(data=df, depvar='score', subject='patient', within=['day']).fit()

# 单因素场景下,结果只有一行,提取第一行的Pr > F列即为p值
p_value = results.anova_table['Pr > F'].iloc[0]
print(f"重复测量ANOVA的p值: {p_value}")

如果需要查看完整的ANOVA统计表格,直接打印results.anova_table即可:

print(results.anova_table)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:15:31