Python 实现双因素方差分析

3

我正在尝试进行双向方差分析,以确定两个变量B和M对样本分类(由参数C给出)的重要性。

我正在尝试重塑数据框,以使其适用于statsmodels软件包。但是,我只能使用pd.melt一次包含一个变量(B或M)。

请问如何使用两个变量的值执行双向方差分析(类似于下面代码的最后两行)将是一个很大的帮助。

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)

为什么要将B和M转换为分类变量?C到底是什么? - StupidWolf
1个回答

0

你离答案很近了:

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)

你创建一个数据框架,设置你的模型,执行方差分析。

这将把 BM 视为数值而不是分类变量。 - Josef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接