import numpy as np
import random
df = pd.DataFrame(np.random.randn(100, 4), columns=list('ABCD'))
df['group'] = pd.cut(df['A'], 3)
Я хочу запустить серию ANOVA, используя «группу» в качестве моей категориальной переменной и проходя по циклу «ABCD».(итого 4 ANOVAs).
Я построил функцию для своих ANOVA:
def anovas(Group, Metric, Data):
formula = Metric + "~" + Group
mod = ols(formula, data=Data).fit()
aov_table = sm.stats.anova_lm(mod, typ=2)
mc = MultiComparison(Data[Metric], Data[Group])
result = mc.tukeyhsd()
df = pd.DataFrame(data=result._results_table.data[1:],
columns=result._results_table.data[0])
return(df, aov_table)
Я хотел бы применить эту функцию к каждому столбцу (он же Метрика), сохраняя при этом группу неизменной.
теоретически это будет что-то вроде:
df.apply (anovas ('group', column, df))
, но это не работает, ия не уверен почему.У кого-нибудь есть предложения?Спасибо!