首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python的双向Anova

使用Python的双向Anova
EN

Stack Overflow用户
提问于 2020-09-14 04:50:04
回答 1查看 1.8K关注 0票数 3

我试图做一个双向的方差分析,在这里我试图找出两个变量(B和M)在样本分类中的重要性(由参数C给出)。

我试图重塑数据框架,使其适合于statsmodels包。但是,我只能使用pd.melt一次包含一个变量(B或M)。

任何关于如何使用两个变量的值来执行双向ANOVA (类似于下面给出的代码的最后两行)的建议都会有很大的帮助。

B、M和C的值:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2021-12-14 15:15:06

你很接近答案:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63878250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档