我试图做一个双向的方差分析,在这里我试图找出两个变量(B和M)在样本分类中的重要性(由参数C给出)。
我试图重塑数据框架,使其适合于statsmodels包。但是,我只能使用pd.melt一次包含一个变量(B或M)。
任何关于如何使用两个变量的值来执行双向ANOVA (类似于下面给出的代码的最后两行)的建议都会有很大的帮助。
B、M和C的值:
B : [10.,4.,4.,6.,5.]
M : [9.,6.,8.,4.,6.]
C : [1.,2.,2.,3.,1.]
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
d = pd.read_csv("/Users/Hrihaan/Desktop/Data.txt", sep="\s+")
d_melt = pd.melt(d, id_vars=['C'], value_vars=['B'])
#model = ols('C ~ C(B) + C(M) + C(B):C(M)', data=d_melt).fit()
#anova_table = sm.stats.anova_lm(model, typ=2)发布于 2021-12-14 15:15:06
你很接近答案:
B = [10.,4.,4.,6.,5.]
M = [9.,6.,8.,4.,6.]
C = [1.,2.,2.,3.,1.]
import numpy as np
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
d = pd.DataFrame()
d["B"]=B
d["M"]=M
d["C"]=C
model = ols("C ~ B + M + B:M",data = d).fit()
anova_table = sm.stats.anova_lm(model, typ=2)创建一个dataframe,设置模型,执行Anova
https://stackoverflow.com/questions/63878250
复制相似问题