Anova使用STATSMODELS的一种方法

问题描述

我正在尝试在三个小组之间执行一种方差分析。我已经能够使用SCIPY.STATS获得F统计量和F分布的p值。但是,我更喜欢将ANOVA表作为具有平方和的R型输出。我的SCIPY.STATS方差分析一种方法的代码如下。 STATSMODELS ANOVA的所有文档都使用pandas数据框。对于如何调整STATSMODELS现有代码的任何帮助将不胜感激。

min_samples

解决方法

您可以使用长格式的数据,首先我生成类似于您的数据的内容:

import numpy as np
import pandas as pd
import scipy.stats as stats
from scipy.stats import f_oneway

np.random.seed(111)

Param_1=np.random.normal(0,1,50)
Param_2=np.random.normal(0,40)
Param_3=np.random.normal(0,30)

f_oneway(Param_1,Param_2,Param_3) 

F_onewayResult(statistic=0.43761348608371037,pvalue=0.6466275522246159)

您可以像下面那样制作长的data.frame,或者基本上在阅读文件后制作它,然后执行pd.concat:

df = pd.DataFrame({'val':np.concatenate([Param_1,Param_3]),'data':np.repeat(['A','B','C'],[len(Param_1),len(Param_2),len(Param_3)])})

df.head()

    val data
0   -1.133838   A
1   0.384319    A
2   1.496554    A
3   -0.355382   A
4   -0.787534   A

现在,我们拟合线性模型,并在其上进行方差分析:

import statsmodels.api as sm
from statsmodels.formula.api import ols

mod = ols('val ~ data',data=df).fit()

sm.stats.anova_lm(mod,typ=1) 

          df    sum_sq  mean_sq F   PR(>F)
data    2.0 0.794858    0.397429    0.437613    0.646628
Residual    117.0   106.256352  0.908174    NaN NaN

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...