python - 使用 STATSMODELS 的一种方法 Anova
问题描述
我正在尝试在三组之间执行单向方差分析。我已经能够使用 SCIPY.STATS 获得 F 统计量和 F 分布的 p 值。但是,我的偏好是将 ANOVA 表作为具有平方和的 R 类输出。下面给出了我的 SCIPY.STATS 单向方差分析代码。STATSMODELS ANOVA 的所有文档都使用 pandas 数据框。任何有关如何调整我现有的 STATSMODELS 代码的帮助将不胜感激。
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)
解决方案
您可以拥有长格式的数据,首先我生成一些看起来像您的数据的东西:
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:
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
现在我们拟合一个线性模型,并对其进行方差分析:
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
推荐阅读
- elasticsearch - 当我在 elasticsearch 中的查询字符串太长并且搜索不起作用时,我该怎么办?
- c# - 将项目附加到字典中,其中包含列表
- java - 是否可以从 Java 的控制台中删除新行?
- c++ - C++ (14) - googletest 未定义标识符
- c++ - 400+/Visual Studio Enterprise 2019 中的“无法打开源文件”
- javascript - 在脚本标签中添加延迟时,物化 js 不工作
- python-3.x - 如何通过python3从Mac或Windows框的远程Windows框获取版本字符串
- tinymce - 是否可以在运行时更改 TinyMCE 中的按钮文本?
- c# - 用c#在Unity中查找文本框的值
- spss - 构建交互项与创建交互变量时,预测变量的 SPSS GLM 显着性不同