亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 pandas 數據幀的單向 Anova 循環 - 生成一個表

通過 pandas 數據幀的單向 Anova 循環 - 生成一個表

偶然的你 2022-05-19 18:48:47
我有一個包含 16 列的 pandas 數據框,其中 14 列代表我使用statsmodels. 我的數據框看起來像這樣(簡化):ID    Cycle_duration    Average_support_phase    Average_swing_phase    Label1               23.1                     34.3                   47.2        12               27.3                     38.4                   49.5        13               25.8                     31.1                   45.7        14               24.5                     35.6                   41.9        1...到目前為止,這就是我正在做的事情:import pandas as pdimport statsmodels.api as smfrom statsmodels.formula.api import olsdf = pd.read_csv('features_total.csv')for variable in df.columns:    model = ols('{} ~ Label'.format(variable), data=df).fit()    anova_table = sm.stats.anova_lm(model, typ=2)    print(anova_table)產生:    sum_sq    df         F    PR(>F)Label     0.124927   2.0  2.561424  0.084312Residual  1.731424  71.0       NaN       NaN              sum_sq    df         F    PR(>F)Label      62.626057   2.0  4.969491  0.009552Residual  447.374788  71.0       NaN       NaN              sum_sq    df         F    PR(>F)Label      62.626057   2.0  4.969491  0.009552Residual  447.374788  71.0       NaN       NaN我正在為執行 Anova 的每個變量獲取單獨的表格打印?;旧衔蚁胍氖谴蛴∫粋€帶有匯總結果的表格,或者是這樣的:                             sum_sq     df         F    PR(>F)          Cycle_duration   0.1249270   2.0  2.561424  0.084312                Residual   1.7314240  71.0       NaN       NaN   Average_support_phase   62.626057   2.0  4.969491  0.009552                Residual  447.374788  71.0       NaN       NaN     Average_swing_phase   62.626057   2.0  4.969491  0.009552                Residual  447.374788  71.0       NaN       NaN我已經看到了一個問題,因為這種方法總是在實際值之前輸出“標簽”命名法,而不是有問題的變量名(就像我上面顯示的那樣,我希望在每個“殘差”上方都有變量名) . 這種statsmodels方法甚至可能嗎?我對python相當陌生,如果這與statsmodels無關,請原諒 - 在這種情況下,請向我說明我應該嘗試什么。
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

您可以收集表格并在循環結束時將它們連接起來。這種方法將創建一個分層索引,但我認為這樣會更清楚一點。像這樣的東西:


keys = []

tables = []

for variable in df.columns:

    model = ols('{} ~ Label'.format(variable), data=df).fit()

    anova_table = sm.stats.anova_lm(model, typ=2)


    keys.append(variable)

    tables.append(anova_table)


df_anova = pd.concat(tables, keys=keys, axis=0)

有點相關,我還建議糾正多重比較。這更像是一個統計建議而不是編碼建議,但考慮到您正在執行大量統計測試,考慮其中一項測試導致誤報的概率是有意義的。


查看完整回答
反對 回復 2022-05-19
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號