单因素方差分析(One-Way Analysis of Variance)
判断控制变量是否对观测变量产生了显著影响

分析步骤

  1. 建立检验假设

- H0:不同因子水平间的均值无差异
  - H1:不同因子水平间的均值有显著差异
  - 【注意】有差异,有可能是所有因子水平间都存在差异,也有可能只有两个因子水平间的均值存在差异

  1. 计算检验统计量F值

F = MSA / MSE
  MSA = SSA / ( k - 1 ) MSA:组间均方, 对总体方差的一个估计
  MSE = SSE / ( n - k ) MSE:组内均方,不论H0是否为真,MSE都是总体方差的一个无偏估计
  SST = SSA + SSE SST:总误差平方和,反映全部观测值的离散情况
SSA:组间误差平方和,也称水平项误差平方和,反映各因子水平(总体)的样本均值之间的差异程度
SSE: 组内误差平方和

  1. 确定P值

  2. 方差分析表

  3. 根据给定的显著性水平,并作出决策

根据F值进行假设检验
  根据选定的显著性水平,F值大于临界值时,将拒绝原假设
  根据P值进行假设检验

  1. 进一步分析

    方差齐性检验

    多重比较检验

- 确定控制变量的不同水平对观测变量的影响程度
  - 哪个水平的作用明显区别于其他水平
  - 哪个水平的作用是不显著
  - 等等

【python分析:用ols模块进行计算】

# 引入数据
import pandas as pd
data_value = { '无促销':[23,19,17,26,28,23,24,30],'被动促销':[26,22,20,30,36,28,30,32],'主动促销':[30,23,25,32,48,40,41,46]}# 因变量
da = pd.DataFrame( data_value ).stack()
da.columns = ['水平','观测值']# ols模块进行分析from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm formula = '{} ~ {}'.format(da.columns[1], da.columns[0])
model = ols( formula, da ).fit()
anovat = anova_lm(model)
print(anovat)

输出结果:

【python分析:用自定义函数进行计算】

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,
群里还有不错的视频学习教程和PDF电子书!
'''
def ANOVA_oneway( df, a = 0.05 ):from scipy.stats import f'''进行单因素方差分析输入值:df - pd.DataFrame,第一列为水平,第二列为观测值;a - 显著性水平,默认为0.05返回类型:字典返回值:方差分析相关数据'''res = { 'SSA':0, 'SST':0 }mu = df[df.columns[1]].mean()da = df.groupby( df.columns[0] ).agg( {df.columns[1]:['mean','count']})da.columns = ['mean','count']res['df_A'] = len(list(da.index)) - 1        # 自由度# 组间误差平方和for row in da.index:res['SSA'] += (da.loc[row,'mean'] - mu )**2 * da.loc[row,'count']# 总误差平方和for e in df[df.columns[1]].values:res['SST'] += (e - mu )**2         res['SSE'] = res['SST'] - res['SSA']         # 组内误差平方和res['df_E'] = len(df) - res['df_A'] - 1      # 残差自由度res['df_T'] = len(df) - 1                    # 总和自由度res['MSA'] = res['SSA'] / res['df_A']        # 组间均方res['MSE'] = res['SSE'] / res['df_E']        # 组内均方res['F'] = res['MSA'] / res['MSE']           # F值res['p_value'] = 1 - f(res['df_A'],res['df_E'] ).cdf( res['F'])  #p值res['a'] = ares['F_alpha'] = f(res['df_A'],res['df_E'] ).ppf( 1-a ) # 基于显著性水平a的F临界值 return resdef print_ANOVA_oneway( d, maxedg = 90 ):'''打印单因素方差分析表输入值:d - dict字典,包含分析表所需要的数据; maxedg - 打印输出时装饰分隔符的最大长度'''title = '【单因素方差分析表】'print( title.center( maxedg ))print( '=' *  maxedg )print( '{:^12s}|{:^16s}|{:^6s}|{:^16s}|{:^12s}|{:^10s}|'.format('误差来源','平方和','自由度','均方和','F','p值'))print( '-' *  maxedg )print( '{:8s}|{:>18,.4f} |{:>8d} |{:>18,.4f} |{:>11.6f} |{:>10.3%} |'.format( '组间(因子影响)',d['SSA'],d['df_A'],d['MSA'],d['F'],d['p_value']))print( '{:10s}|{:>18,.4f} |{:>8d} |{:>18,.4f} |'.format( '组内(误差)',d['SSE'],d['df_E'],d['MSE']))print( '{:14s}|{:>18,.4f} |{:>8d} |'.format( '总和',d['SST'],d['df_T']))print( '-' *  maxedg )print('备注:显著性水平为 {:.2%} 时,F的临界值是 {:.6f}。'.format(d['a'],d['F_alpha']))p = 0.95 # 设定置信度水平
maxedg = 93 # 设定输出时装饰分隔符的最大长度
# 计算并输出单因素方差分析表
res = ANOVA_oneway( da, a = 1-p )
print_ANOVA_oneway( res, maxedg = maxedg )

用Python学分析 - 单因素方差分析相关推荐

  1. python 方差分析_用Python学分析 - 单因素方差分析

    单因素方差分析(one-way analysis of variance) 判断控制变量是否对观测变量产生了显著影响 分析步骤 1. 建立检验假设 - h0:不同因子水平间的均值无差异 - h1:不同 ...

  2. 【C# 单因素方差分析(One Way ANOVA)】

    C# 单因素方差分析(One Way ANOVA) 什么是单因素方差分析 示例 计算步骤 C#实现代码 什么是单因素方差分析 单因素方差分析是指对单因素试验结果进行分析,检验因素对试验结果有无显著性影 ...

  3. 单因素方差分析(ANOVA)及其Python库

    文章目录 模型描述 利用`python`求解 单因素方差分析(one-way analysis of variance, ANOVA)用于确定3个及其以上的数据组之间的均值是否具有统计差异,此外,单因 ...

  4. hr有必要学python吗_人力资源分析思维以及有必要学习数据分析吗?

    "人才分析"的重要性在"2018年的10个人力资本趋势"中更是高居第二位,可见分析多么重要!德勤在2018年<全球人力资本趋势>调查中,受访者中,认 ...

  5. python做pca图_【教程】组学研究,用python快速实现PCA分析和绘图

    什么是PCA 主成分分析(Principal Component Analysis,PCA)是一种无监督的多元统计分析方法.在蛋白组学和代谢组学研究中能从总体上反应各组样本之间的总体差异和组内样本之间 ...

  6. Python玩转数据分析——单因素方差分析

    概念 方差分析(Analysis of Variance,简称ANOVA),又称"变异数分析"或"F检验",用于两个及两个以上样本均数差别的显著性检验.单因素方 ...

  7. python怎么做方差分析_Python进行单因素方差分析

    1.方差分析 方差分析就是通过检验各总体的均值是否相等来判断分类型自变量对数值型因变量是否有显著影响. 根据分类型自变量多少,分为: 单因素方差分析 双因素方差分析 多因素方差分析 名词解释: 因素: ...

  8. python 实现单因素方差分析(1)

    案例: 分析行业对被投诉次数是否有显著影响() 提出假设: 由于变量行业有4个水平,分别是零售业.旅游业.航空公司和家电制造业,那么为了检验这4个水平(每个水平代表一个总体)的均值是否相等,需要提出如 ...

  9. 方差分析之单因素方差分析

         作者:DD      来源:数据科学家联盟 方差分析是一种能使多因素(多组间)检验变得简洁的一种检验方式,它能同时考虑所有的样本,不仅能使检验过程变得简洁还能排除因两两检验可能造成的错误累积 ...

最新文章

  1. libQtCore.so.4相关错误
  2. 利润表和资产负债表开发小结
  3. 用python编21点游戏_【Python3】21点游戏
  4. 【Win 10 应用开发】分析 URI 中的查询字符串
  5. oracle sql 基础(六):数据控制语言(用户及权限管理)
  6. (216)滤波器介绍
  7. Kali Linux 秘籍 翻译完成!
  8. 从零开始学架构3 - 高可用篇
  9. 巴菲特:比特币纯粹是FOMO(害怕错过)
  10. 真狠!10000mAh超大电池手机发布,真的神机...
  11. semaphore性能问题_SQL Server性能调整– RESOURCE_SEMAPHORE等待
  12. 应用大数据开发环境监测全球标准
  13. Ubuntu18突然卡死解决方法
  14. oracle 删除老存档,【转】oracle存档日志删除
  15. 时间表达式java定时器_java--定时器
  16. 用域代码任何带圈字符都能做出来
  17. 数据库系统的三大范式以及BCNF范式详细讲解 (很详细,很详细,很详细)
  18. 无人机土方算量-Civil3D版
  19. Oriented R-CNN完整复现HRSC2016以及训练自己的HBB数据集(DIOR)
  20. 入行 AI,如何选个脚踏实地的岗位

热门文章

  1. 【solr5.5环境搭建】在tomcat8里面部署solr5.5
  2. java 的对象强制转换后的调用
  3. 在Linux上挂载Windows共享文件夹,如何开机自动挂载(mount)
  4. [新功能]定制Blog页面导航区中的链接
  5. 【PP】长交期计划(LTP)简介
  6. SAP物料管理自动记帐详解
  7. 冬天到了:你检查过你的防冻液了吗!
  8. abap 调用外部web service 使用小结
  9. 汇总内表数据:at end of方法和collect方法
  10. Super BOM应用步骤总结