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

使用STATSMODELS的单向Anova
EN

Stack Overflow用户
提问于 2020-08-30 21:14:44
回答 1查看 1.4K关注 0票数 1

我试着在三组之间进行单向方差分析。我已经能够用SCIPY.STATS得到F-分布的F-统计量和p-值,但是我更喜欢用平方和作为R型输出的ANOVA表。下面给出了我的SCIPY.STATS单向方差的代码。所有的文件为STATSMODELS ANOVA是使用熊猫的数据。任何帮助,我可以如何调整我的现有代码的STATSMODELS将非常感谢。

代码语言:javascript
复制
import numpy as np
import pandas as pd
import scipy.stats as stats
from scipy.stats import f_oneway
data1= pd.read_table('/Users/Hrihaan/Desktop/Sample_A.txt', dtype=float, header=None, sep='\s+').values
data2= pd.read_table('/Users/Hrihaan/Desktop/Sample_B.txt', dtype=float, header=None, sep='\s+').values
data3= pd.read_table('/Users/Hrihaan/Desktop/Sample_C.txt', dtype=float, header=None, sep='\s+').values
Param_1=data1[:,0]
Param_2=data2[:,0]
Param_3=data3[:,0]
f_oneway(Param_1, Param_2, Param_3) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-30 23:06:47

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

代码语言:javascript
复制
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,1,40)
Param_3=np.random.normal(0,1,30)

f_oneway(Param_1, Param_2, Param_3) 

F_onewayResult(statistic=0.43761348608371037, pvalue=0.6466275522246159)

您可以让长的data.frame像下面这样,或者在读取文件之后基本上可以这样做,然后执行一个pd.concat:

代码语言:javascript
复制
df = pd.DataFrame({'val':np.concatenate([Param_1,Param_2,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

现在我们拟合一个线性模型,anova在它上:

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63662215

复制
相关文章

相似问题

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