我有一個(gè)包含 16 列的 pandas 數(shù)據(jù)框,其中 14 列代表我使用statsmodels. 我的數(shù)據(jù)框看起來像這樣(簡化):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)產(chǎn)生: 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我正在為執(zhí)行 Anova 的每個(gè)變量獲取單獨(dú)的表格打印?;旧衔蚁胍氖谴蛴∫粋€(gè)帶有匯總結(jié)果的表格,或者是這樣的: 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我已經(jīng)看到了一個(gè)問題,因?yàn)檫@種方法總是在實(shí)際值之前輸出“標(biāo)簽”命名法,而不是有問題的變量名(就像我上面顯示的那樣,我希望在每個(gè)“殘差”上方都有變量名) . 這種statsmodels方法甚至可能嗎?我對python相當(dāng)陌生,如果這與statsmodels無關(guān),請?jiān)?- 在這種情況下,請向我說明我應(yīng)該嘗試什么。
1 回答

森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以收集表格并在循環(huán)結(jié)束時(shí)將它們連接起來。這種方法將創(chuàng)建一個(gè)分層索引,但我認(rèn)為這樣會(huì)更清楚一點(diǎn)。像這樣的東西:
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)
有點(diǎn)相關(guān),我還建議糾正多重比較。這更像是一個(gè)統(tǒng)計(jì)建議而不是編碼建議,但考慮到您正在執(zhí)行大量統(tǒng)計(jì)測試,考慮其中一項(xiàng)測試導(dǎo)致誤報(bào)的概率是有意義的。
添加回答
舉報(bào)
0/150
提交
取消