我使用python进行双向方差分析,包括两个变量(var_A
和var_B
)及其交互(var_A:var_B
)。变量A是三级变量,变量B是三级有序分类变量。我想得到变量B的正交多项式对比度的F统计量
我通常会在R中进行这种类型的分析,但我正在与其他更喜欢Python的人一起工作。你知道吗
在R中,在建立了具有正确对比度的aov
模型之后,我将执行如下操作来分割var_B
的平方和,以得到一个方差分析表,其中为每个对比度报告了单独的F统计数据。有关使用Rsummary.aov
函数的更多详细信息和示例,请参见here。你知道吗
# Create data
df <- data.frame(target = c(449, 413, 326, 409, 358, 291, 341, 278, 312),
var_A = rep(c(1, 2, 3), each = 3),
var_B = rep(c(1, 2, 3), 3))
# Make var_B an ordered factor
df$var_B <- factor(df$var_B, ordered = TRUE)
# Set contrasts
options(contrasts=c('contr.sum','contr.poly'))
# Create model
aov_model <- aov(target ~ var_A * var_B, data = df)
# Run summary with the F-test shown for the orthogonal polynomial contrasts
summary(aov_model,
split = list(var_B = list(linear = 1, quadratic = 2)))
有人知道在Python中是否可以做同样的事情吗?你知道吗
现在,我可以使用patsy
包中的Poly()
函数为var_B
添加正确的对比度。我在我的线性模型的摘要中看到了对比,并且我能够生成具有var_B
总体效果的方差分析表。你知道吗
然而,我不确定如何“分割”方差分析表中var_B
的平方和,以查看每个对比度的F统计。你知道吗
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
from patsy.contrasts import Poly
# Create data frame
df = pd.DataFrame({'target': [449, 413, 326, 409, 358, 291, 341, 278, 312],
'var_A': [1, 1, 1, 2, 2, 2, 3, 3, 3],
'var_B': [1, 2, 3, 1, 2, 3, 1, 2, 3]})
# Fit the linear model
overall_model = smf.ols(formula= "target ~ var_A * C(var_B, Poly())",
data=df).fit()
# Conduct an ANOVA on the model
overall_anova = sm.stats.anova_lm(overall_model, type=3, robust="hc3")
有没有一个参数可以传递给sm.stats.anova_lm()
函数来拆分平方和?或者有没有其他方法可以将效果分解成正交对比?你知道吗
任何帮助都将不胜感激!你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐