Graphpad _方差分析

柱状图通常表示均值 ± 标准差的数据,数据要求符合正态分布,描述数据的特点或者比较各组数据间的差异,多数情况下采用方差分析和 T 检验。

举个例子:现有三个年级学生身高的数据,分别为一年级、二年级和三年级。

1. 打开 graphpad 软件,选择 column 模块,按下图进行选择。

Graphpad _方差分析

2. 键入数据,完善表格。

Graphpad _方差分析

3. 点击 Results 下的 New Analysis 或者 Analyze,按下图选择「One-way ANOVA(单方向方差分析)」并勾选三个分组。进入下一步。

Graphpad _方差分析

4. 进行下一步选择

4.1 Experimental Design 下按下图进行选择

Graphpad _方差分析

4.2 Multiple comparisons 下选择

Graphpad _方差分析

4.3 Options 下选择(默认)

Graphpad _方差分析

5. 统计分析结果

5.1 单方向方差分析的 P 值和 F 值

Graphpad _方差分析

5.2 三组中两两分析结果

Graphpad _方差分析

6. 作图:点击 Graphs 模块中的 DATA 1,按下图进行选择,并生成草图。

6.1 双击图片进入 format graph 对话框,进一步修饰柱形的颜色、填充、边框等。值得一提的是,在 format graph 的 graph settings 模块下可以调整各柱形间距:建议调整为 70%。进入Annotations,把数值体现在图上。

7. 不同的数据形式需要用不同的柱形图表示

Graphpad _方差分析
Graphpad _方差分析

于是我又想用python来实现以下,单纯使用单因素方差分析,则

from scipy import stats
a = [121,110,109,120,121,110,108,111,120,116]  # 一年级
b = [130,131,132,131,120,125,134,133,122,129]  # 二年级
c = [141,144,130,120,136,142,135,146,129,135]  # 三年级
f,p=stats.f_oneway(a,b,c)
print(f,p)

结果:30.1117709031702 1.3330782027096544e-07,但是在这里,两两之间的比较的结果是无法得到。于是换种方法。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import seaborn as sns
#数据的录入
a = [121,110,109,120,121,110,108,111,120,116]  # 一年级
b = [130,131,132,131,120,125,134,133,122,129]  # 二年级
c = [141,144,130,120,136,142,135,146,129,135]  # 三年级
f,p=stats.f_oneway(a,b,c)  #使用单因素卡方检验
print(f,p)
df={'class1':a,
    'class2':b,
    'class3':c}
df=pd.DataFrame(df)  #创建DataFrame表格
df_melt = df.melt()
df_melt.columns = ['Class','Value']
sns.boxplot(x='Class',y='Value',data = df_melt) #使用seaborn模块绘制箱线图
plt.show()
#使用方差分析
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
model = ols('Value~C(Class)',data=df_melt).fit()
table1 = anova_lm(model, typ = 2)
print(table1)
#方差分析的结果我们需要看P值,本例中P值等于 1.333078e-07小于0.05,说明处理间存在显著差异,具体哪个处理间存在差异还需要通过多重检验来看。与前一种方法也相同。
#多重分析 比较常用的检验方法是邓肯多重检验(Tukey HSD test)
from statsmodels.stats.multicomp import MultiComparison
mc = MultiComparison(df_melt['Value'],df_melt['Class'])
tukey_result = mc.tukeyhsd(alpha = 0.5)
print(tukey_result)
Graphpad _方差分析
Graphpad _方差分析

两者分析的结果是一致的。

原创文章(本站视频密码:66668888),作者:xujunzju,如若转载,请注明出处:http://www.zyicu.cn:66/?p=3290

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们
捐赠本站