如何在 python 中从对象中获取/隔离 p 值'AnovaResults'?



我想在我的数据集中使用单向重复测量方差分析来测试5名患者的值在测量的3天内是否不同。

我从statmodels .stats.anova使用AnovaRM,结果是一个' anovareresults '对象。我可以看到print()函数的p值,但我不知道如何将它从这个对象中分离出来。

你知道吗?我的代码是否正确,我想测试什么?

Thanks in advance

day1 = [1,2,3,4,5]
day2 = [2,4,6,8,10]
day3 = [1.5,2.5,3.5,4.5,5.5]
days_list = [day1,day2,day3]
df = pd.DataFrame({'patient': np.repeat(range(1, len(days_list[0])+1), len(days_list)),
'group': np.tile(range(1, len(days_list)+1), len(days_list[0])),
'score': [x[y] for y in range(len(days_list[0])) for x in days_list]})
print(AnovaRM(data=df, depvar='score', subject='patient', within=['group']).fit())

我假设您正在寻找的p值是当您在问题中运行代码时Pr > F列中显示的数字。如果您将测试结果分配给一个变量,则可以通过anova_table属性访问底层数据框:

results = AnovaRM(data=df, depvar='score', subject='patient', within=['group']).fit()
print(results.anova_table)

给了:

F Value  Num DF  Den DF  Pr > F 
group  15.5     2.0     8.0     0.00177

只要访问Pr > F列的第0个成员,就可以了:

print(results.anova_table["Pr > F"][0])

得到答案:

0.0017705227840260451

我想我找到办法了!

a=AnovaRM(data=df, depvar='score', subject='patient', within=['group']).fit().summary().as_html()
pd.read_html(a, header=0, index_col=0)[0]['Pr > F'][0]

希望能帮到别人!

相关内容

  • 没有找到相关文章

最新更新