簡體   English   中英

如何從 python 中的“AnovaResults”object 中獲取/分離 p 值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM