文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Python进行数据分析——方差分析

2023-09-12 15:48

关注

大家好,方差分析可以用来判断几组观察到的数据或者处理的结果是否存在显著差异。本文介绍的方差分析(Analysis of Variance,简称ANOVA)就是用于检验两组或者两组以上样本的均值是否具备显著性差异的一种数理统计方法。

根据影响试验条件的因素个数可以将方差分析分为:单因素方差分析、双因素方差分析、多因素方差分析;双因素方差分析则是分析两个因素对试验指标的影响;多因素方差分析则是分析更多因素指标的分析方法。本文是以不同城市的月薪收入在每个月的水平上是否存在差异就是多组数据是否存在差异的示例:

一、单因素方差分析

单因素方差分析只考虑单一因素对试验指标的影响是否显著:

import pandas as pdfrom statsmodels.formula.api import olsfrom statsmodels.stats.anova import anova_lmdata= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)# 先来看下从城市因素开始分析,df_city=data.melt(var_name='城市',value_name='月薪')#使用melt()函数将读取数据进行结构转换,以满足ols()函数对数据格式的要求,melt()函数能将列标签转换为列数据

使用melt()函数对数据结构,并可视化,我们可以以肉眼观察出差异性明显:

import matplotlib.pyplot  as pltplt.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong']  # 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体plt.rcParams['font.size'] = 12  # 字体大小plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号import pandas as pdimport seaborn as snsdata= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)data_melt = data.melt()data_melt.columns = ['城市', '月薪']sns.boxplot(x = '城市', y = '月薪', data = data_melt)plt.show()

进行方差分析:

import pandas as pdfrom statsmodels.stats.multicomp import pairwise_tukeyhsdfrom statsmodels.formula.api import olsfrom statsmodels.stats.anova import anova_lmdata= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)# 先来看下从城市因素开始分析,df_city=data.melt(var_name='城市',value_name='月薪')#使用melt()函数将读取数据进行结构转换,以满足ols()函数对数据格式的要求,melt()函数能将列标签转换为列数据model_city=ols('月薪~C(城市)',df_city).fit()# ols()创建一线性回归分析模型anova_table=anova_lm(model_city)# anova_lm()函数创建模型生成方差分析表print(anova_table)# 进行事后比较分析print(pairwise_tukeyhsd(df_city['月薪'], df_city['城市']))

在结果图上半部分中df为自由度,sum_sq为误差平方和,mean_sq为平均平方,F代表统计量F值,PR(>F)代表显著性水平P值;下半部分为多重比较,进行事后分析,group1以及group2表示的是因子的不同水平,然后分析他们两个组是否有显著性差异,最后面的reject表示是否拒绝原假设,True表示的是拒绝原假设,说明两组均值有显著性差异。

二、双因素方差分析

双因素方差分析对数据结构的要求和单因素方差分析不同,代码如下:

import pandas as pdfrom statsmodels.stats.multicomp import pairwise_tukeyhsdfrom statsmodels.formula.api import olsfrom statsmodels.stats.anova import anova_lmdata= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)df_twoway=data.stack().reset_index()df_twoway.columns=['月份','城市','月薪']model_twoway=ols('月薪~C(月份)+C(城市)',df_twoway).fit()anova_table=anova_lm(model_twoway)print(anova_table

来源地址:https://blog.csdn.net/csdn1561168266/article/details/129216380

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯