我有一個包含 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)
有點相關,我還建議糾正多重比較。這更像是一個統計建議而不是編碼建議,但考慮到您正在執行大量統計測試,考慮其中一項測試導致誤報的概率是有意義的。
添加回答
舉報
0/150
提交
取消