[英]How to get/isolate the p-value from 'AnovaResults' object in python?
我想在我的數據集中使用一種重復測量方差分析的方法來測試 5 名患者的值在測量的 3 天內是否不同。
我使用來自 statsmodels.stats.anova 的 AnovaRM,結果是“AnovaResults”object。我可以使用print()
看到 p 值 function,但我不知道如何將它與這個 object 隔離。
你有什么主意嗎? 我的代碼是否適合我要測試的內容?
提前致謝
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
屬性訪問底層 dataframe:
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]
希望它能幫助別人!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.