热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python数据科学:方差分析

之前已经介绍的变量分析:其中分类个数大于两个,分类变量也可以有多个。当分类变量为多个时,对分类个数不

之前已经介绍的变量分析:

  • ①相关分析:一个连续变量与一个连续变量间的关系。
  • ②双样本t检验:一个二分分类变量与一个连续变量间的关系。

本次介绍:

  • 方差分析:一个多分类分类变量与一个连续变量间的关系。

其中分类个数大于两个,分类变量也可以有多个。

当分类变量为多个时,对分类个数不做要求,即可以为二分分类变量。

一、数理统计技术

数理统计分为频率和贝叶斯两大学派。

描述性统计分析,描述性分析就是从总体数据中提炼变量的主要信息,即统计量。

描述性分析的难点在于对业务的了解和对数据的寻找。

统计推断和统计建模,建立解释变量与被解释变量之间可解释的、稳定的、最好是具有因果关系的表达式。

在模型运用时,将解释变量(自变量)带入表达式中,用于预测被解释变量(因变量)的值。

现阶段,我学习的就是统计推断与建模的知识...

二、方差分析

方差分析用于检验多个样本的均值是否有显著差异。

探索多于两个分类的分类变量与连续变量的关系。

比如说「浅谈数据分析岗」中薪水与教育程度之间的关系,教育程度为一个多分类的分类变量。

01 单因素方差分析

单因素方差分析的前提条件:

  • ①变量服从正态分布(薪水符合)。
  • ②观测之间独立(教育程度符合)。
  • ③需验证组间的方差是否相同,即方差齐性检验。

组间误差与组内误差、组间变异与组内变异、组间均方与组内均方都是方差分析中的衡量标准。

如果组间均方明显大于组内均方,则说明教育程度对薪水的影响显著。

那么需要大多少才能确定结论呢?

这里组间均方与组内均方的比值是服从F分布,下面贴出F分布曲线图。

Python数据科学:方差分析

其中横坐标为F值,即组间均方与组内均方的比值。

当F值越大时,即组间均方越大、组内均方越小,说明组间的变异大。

并且对应的P值也越小(纵轴),便可以拒绝原假设(原假设为无差异)。

下面以「浅谈数据分析岗」中薪水与教育程度为例。

Python数据科学:方差分析

这里我们只是直观的看出薪水随学历的增长而增长,并没有实实在在的东西。

接下来就用数字来说话!!!

代码如下,需要清洗数据。

from scipy import stats 
import pandas as pd 
import pymysql 
# 获取数据库数据 
conn = pymysql.connect(host='localhost', user='root', password='774110919', port=3306, db='lagou_job', charset='utf8mb4') 
cursor = conn.cursor() 
sql = "select * from job" 
df = pd.read_sql(sql, conn) 
# 清洗数据,生成薪水列 
dom = [] 
for i in df['job_salary']: 
    i = ((float(i.split('-')[0].replace('k', '').replace('K', '')) + float(i.split('-')[1].replace('k', '').replace('K', ''))) / 2) * 1000 
    dom.append(i) 
df['salary'] = dom 
# 去除无效列 
data = df[df.job_education != '不限'] 
# 生成不同教育程度的薪水列表 
edu = [] 
for i in ['大专', '本科', '硕士']: 
    edu.append(data[data['job_education'] == i]['salary']) 
# 单因素方差分析 
print(stats.f_oneway(*edu)) 
# 得到的结果 
F_onewayResult(statistic=15.558365658927576, pvalue=3.0547055604132536e-07) 

得出结果,F值为15.5,P值接近于0,所以拒绝原假设,即教育程度会显著影响薪水。

02 多因素方差分析

多因素方差分析检验多个分类变量与一个连续变量的关系。

除了考虑分类变量对连续变量的影响,还需要考虑分类变量间的交互效应。

这里由于我的数据满足不了本次操作,所以选择书中的数据。

即探讨信用卡消费与性别、教育程度的关系。

首先考虑无交互效应,代码如下。

import statsmodels.formula.api as smf 
import statsmodels.api as sm 
import pandas as pd 
# 读取数据,skipinitialspace:忽略分隔符后的空白,dropna:对缺失的数据进行删除 
df = pd.read_csv('creditcard_exp.csv', skipinitialspace=True) 
df = df.dropna(how='any') 
# smf:最小二乘法,构建线性回归模型, 
ana = smf.ols('avg_exp ~ C(edu_class) + C(gender)', data=df).fit() 
# anova_lm:多因素方差分析 
print(sm.stats.anova_lm(ana)) 

输出结果。

Python数据科学:方差分析

可以看到教育程度的F值为31.57,P值趋近于0,拒绝原假设,即教育程度与平均支出有显著差异。

性别的F值为0.48,P值为0.48,无法拒绝原假设,即性别与平均支出无显著差异。

接下来考虑有交互效应,代码如下。

# 消除pandas输出省略号情况 
pd.set_option('display.max_columns', 5) 
# smf:最小二乘法,构建线性回归模型 
anal = smf.ols('avg_exp ~ C(edu_class) + C(gender) + C(edu_class)*C(gender)', data=df).fit() 
# anova_lm:多因素方差分析 
print(sm.stats.anova_lm(anal)) 

输出结果。

Python数据科学:方差分析

这里可以看出,考虑交互效应后,与教育程度及性别对应的F值和P值都发生了微小的改变。

其中教育程度和性别的交互项对平均支出的影响也是显著的,F值为2.22,P值为0.09。

上面这个结论是书中所说的,那么显著性水平取的是0.1吗???

这算是我理解不了的一部分。

下面是带交互项的多元方差分析的回归系数,表格中所有数据都是以男性及研究生学历作为基准去比对。

# 生成数据总览 
print(anal.summary()) 

输出结果。

Python数据科学:方差分析

可以看出第一种教育程度的女性较男性研究生,信用卡消费的影响较显著,P值为0.05。

原假设为无差异,拒绝原假设。

那么这里的显著性水平取的也是0.1吗???

第二种教育程度的女性较男性研究生,信用卡消费的影响显著,P值为0.001。

第三种缺失,没有参数估计。

三、总结

这里总结一下各个检验的原假设。

  • 单样本t检验原假设:总体均值与假设的检验值不存在显著差异(无差异)。
  • 双样本t检验原假设:两个样本均值(二分变量下的均值)不存在显著差异(无差异)。
  • 方差分析原假设:多个样本均值(多分变量下的均值)不存在显著差异(无差异)。

说明原假设都是假设变量关系无显著差异。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
author-avatar
q40796672
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有