python卡方检验kf_data_统计学中的各种检验-scipy.stats和statsmodels.stats的使用
这里会罗列一些统计学中的检验方法,当然顺序以笔者遇到的为准。
1.方差分析
1.1 概述
对于均值的检验,一般分为以下几种情况:
某样本均值与常数的比较
两个样本均值的比较
两个以上样本均值的比较
对于前两种检验,用t检验和z检验完全可以handle,第三种也可以用t/z检验两两进行,但是毕竟耗时,用方差分析就可以解决这个问题了。
这个问题面试滴滴的时候有被问到,立志做数据科学家的朋友们,还是学习一下。
比较常用的方差分析方法包括:单因素方差分析、多因素方差分析、协方差分析、多元方差分析、重复测量方差分析、方差成分分析等。
1.2 常用术语
因素
因素是方差分析的研究对象,是一个独立的变量,比如饮料的不用颜色就是因素。
水平
因素的取值就是水平,比如饮料颜色的红、黄、蓝、绿就是水平。
控制变量
方差分析中可以人为控制的变量,比如饮料的颜色。
随机变量
与控制变量相对应就是不可以人为控制的变量。
观察变量与观察值
方差分析中受控制变量和随机变量影响下观察的目标成为观察变量,观测得到的数值就是观察值。饮料再不同颜色的销售额就是观测变量,具体的取值就是观察值。
1.3 单因素方差分析原理
进行方差分析的要满足两个前提:
总体服从正态分布
样本满足方差齐性
方差分析的目的是检验各个样本的均值是否相等,原假设是样本均值相等,备择假设是样本均值不相等。一般来说造成均值差异的原因有两个:
因素水平不同造成的差异,成为系统性误差。
承接饮料这个案例,饮料颜色就是系统性误差。系统性误差用组间方差来衡量,当然组间方差有可以衡量随机性误差,但主要是为了衡量系统性误差。
样本抽样随机性造成的误差,成为随机性误差。
同样,饮料在不同商场的销售额也不同,这是随机性误差。随机性误差用组内方差来衡量。
如果因素水平对观察变量影响不大,那么组间方差只有随机性误差的影响,组间方差和组内方差的比接近于1,相反则大于1,当这个比值大于某个值的时候我们就可以得到显著性差异的结论。方差分析就是通过比较方差做出接受或拒绝原假设的结论。
1.4 单因素方差分析案例
饮料案例,我们要观察饮料的不同颜色对销售额是不是有显著的影响,基础数据如下:
基础数据
建立假设
原假设:饮料颜色对销售额没有显著影响。
备择假设:饮料颜色对销售额有显著影响。
计算样本均值和总体均值
计算组间方差和和组内方差和
构造F检验统计量
这里注意自由度的问题:
F检验统计量计算过程
确定检验规则,做出决策
1)P值检验
根据F检验统计量计算P值,此处计算的P值为0.000466,小于显著性水平0.05,拒绝原假设,接受备择假设,即饮料颜色对销售额有显著影响。
P值是根据概率密度函数求的。
2)临界值
临界值是根据假设检验类型查表得到的,比如显著性水平α=0.05,是双侧检验,F检验的临界值是3.24,那么计算值F=10.486>3.24,是拒绝原假设,所以认为不同颜色是有显著差异的。
1.5 python实现方差检验
很遗憾,python里没有包直接做方差分析,但是自己实现一个类应该是很简单的。
python里有方差齐性检验的包叫levene,在scipy里,直接调用scipy.stats.levene(rvs1, rvs2)
-- 2020.4.13更新
笔者原来说python里没有方差检验的包,笔者说错了,今天无意中发现
statsmodels.stats.power.FTestAnovaPower是可以进行方差检验的。
2.t检验
t检验的概念是通过比较不同数据之间的差值,以观察数据之间有没有显著差异。适用于小样本(30个以下),总体方差未知的情况。
t检验有几个假设条件:
总体分布服从正态或近似服从正态分布。
检验定量数据,即数据大小是有意义的,对于分类数据的检验请移步卡方检验。
t检验有以下三种:
单样本t检验,检验单个样本数据与某一个数据是否有显著差异。比如检验灯泡平均寿命是不是等于3000小时。来看一下公式:
标准误差计算方法
单样本t检验计算公式
这个很简单了,使用python的包就可以求解:
scipy.stats.ttest_1samp(data,pop_mean)其中,data是样本数据,pop_mean是总体均值。一个小demo如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
data = pd.Series([15.6,16.2 ,22.5 ,20.5 ,16.4 ,19.4 ,16.6, 17.9 ,12.7, 13.9])
data_mean = data.mean()
data_std = data.std()
pop_mean=20
t,p_towTail = stats.ttest_1samp(data,pop_mean)
独立样本t检验
用于分析定类数据与定量数据之间的关系,如男女生的身高是否有显著差异。独立样本t检验假设样本来自于两个不同的独立总体,但方差相同,除了要求单样本t检验的那些条件,还要求两个样本之间具有方差,需要进行方差齐性检验,参考方差分析。
计算方法我在网上找了一个ppt讲解的很好:
image.png
python实现用的是scipy.stats.ttest_ind,来看一个小demo:
from scipy.stats import ttest_ind, levene
import pandas as pd
x = [20.5, 19.8, 19.7, 20.4, 20.1, 20.0, 19.0, 19.9]
y = [20.7, 19.8, 19.5, 20.8, 20.4, 19.6, 20.2]
print(levene(x,y))
print(ttest_ind(x, y))
#levene检验p值大于0.05认为是满足方差齐性的,如果不满足则加一个参数equal_var=False
print(ttest_ind(x,y,equal_var=False))
配对样本t检验
配对样本T检验用于分析配对定量数据之间的差异对比关系,这个就和独立样本t检验区分开了,要求样本量相同且前后顺序要一一对应。比如通过两组数据的对比分析,判断背景音乐是否会影响消费行为。配对样本t检验可以通过差值转化为单样本t检验:
配对样本t检验原理
python实现用的是scipy.stats.ttest_rel(data1,data2),来看一个小demo:
from scipy.stats import ttest_rel
import pandas as pd
x = [20.5, 18.8, 19.8, 20.9, 21.5, 19.5, 21.0, 21.2]
y = [17.7, 20.3, 20.0, 18.8, 19.0, 20.1, 20.0, 19.1]
# 配对样本t检验
print(ttest_rel(x, y))
3.Z检验
Z检验和t检验其实一样,都是对均值进行检验,但是不一样的地方在于Z检验要求样本量比较大,并且总体方差已知。由于t检验不要求总体方差已知,所以t检验的应用范围比较广。Z检验其实和t检验有相同的计算形式:
Z检验的计算公式
python实现用的是scipy.stats.weightstats.ztest(data1,data2),来看一个小demo:
import statsmodels.stats.weightstats as sw
arr=[23,36,42,34,39,34,35,42,53,28,49,39,\
46,45,39,38,45,27,43,54,36,34,48,36,\
47,44,48,45,44,33,24,40,50,32,39,31]
sw.ztest(arr, value=39)
当然了单样本和双样本都可以做。Z检验就不过多介绍了。
4.F检验
如果大家还有印象,我们之前用F检验做过方差齐性分析。F检验还有一个广为人知的名字叫联合假设检验,主要用在方差分析中。
计算公式如下
怎么实现我们之前已经讲过了,用scipy.stats.levene这个准没错。
5.卡方检验
卡方检验是用于检验样本实际值与理论值之间是否存在显著差异,原假设是没有显著差异的。举两个好理解的例子:卡方检验可以检验男性或者女性对线上买生鲜食品有没有区别;也可以检验不同城市级别的消费者对买SUV车有没有什么区别。
具体计算过程可以看这篇文章,讲的很好:卡方检验的实际应用
python实现用的是scipy.stats.chisquare,来看一个小demo:
import scipy.stats as ss
obs=[107,198,192,125,132,248]
exp=[167]*6
#拒绝域 1%的显著水平,自由度5
#jjy=ss.chi2.isf(0.01,5)
#卡方
kf=ss.chisquare(obs,f_exp=exp).statistic
6.比率检验
这个真的是太神奇了,通常用在互联网中,用来比较两个比率有没有显著差异。
使用A方案的付费转化率为30%,使用B方案的付费转化率为34%,可以检验这两个转化率之间是否有显著不同。本质和z检验一样,把标准差换成了比例而已,可以用单样本也可以用双样本。
比率检验统计量计算公式
其中π0是总体比率,p是样本比率。
比率检验的演化
用python的话调用statsmodels.stats里的相关函数,来看个小demo:
from statsmodels.stats.proportion import proportion_effectsize
from statsmodels.stats.power import zt_ind_solve_power
effect_size=proportion_effectsize(prop1=0.3, prop2=0.4, method=‘normal‘)
sample_size=zt_ind_solve_power(effect_size=effect_size, nobs1=None, alpha=0.05, power=0.8, ratio=1.0, alternative=‘two-sided‘)
这个包可以推广到以上的F检验,t检验和Z检验。
基本上检验的方法和用途都说完了,希望起到启发的作用,大家如有需要可以探索更多假设检验的方法。
python卡方检验kf_data_统计学中的各种检验-scipy.stats和statsmodels.stats的使用相关推荐
- 统计学中的t检验 、f检验、卡方检验
1.1数据的种类 我们都知道,一般数据可以分为两类,即定量数据(数值型数据)和定性数据(非数值型数据),定性数据很好理解,例如人的性别,姓名这些都是定性数据. 定量数据可以分为以下几种: 1.1.1定 ...
- python卡方检验kf_data_常用统计检验的Python实现
正态性检验 正态性检验是检验数据是否符合正态分布,也是很多统计建模的必要步骤,在Python中实现正态性检验可以使用W检验(SHAPIRO-WILK TEST) 检验原假设:样本服从正态分布 Pyth ...
- python 求离差_R中Chisquared离差检验的误差
我对R非常陌生,正在尝试确定包含~500k点的形状文件是否是随机分布的.不管我输入什么参数,我都会得到相同的错误信息.在 以下是我从一开始就有的:> library(spatstat) spat ...
- python找出矩阵中的最大值_Python / Scipy:找到矩阵的“有界”最小值/最大值
我认为指出我的问题最简单,一般情况很难解释. 说我有一个矩阵 a with dimensions NxMxT, 人们可以将T视为时间维度(使问题更容易).设(n,m)为通过NxM的指数.我可以调用(n ...
- 统计学中的变异及其Python实现
统计学中的变异及其Python实现 在统计学中,变异是指对数据的分散程度的度量,常用的统计量称为标准差和方差.另外,变异系数是一种用来比较不同变量或不同尺度下变异度量的方法,更加直观和具有可比性.本文 ...
- python实验原理_【python】《统计学原理实验教程(Python)》书中代码实现
代码已经上传至GitHub <统计学原理实验教程(Python)>书中代码实现 简介 <统计学原理实验教程(Python)>是厦门大学出版社在2019年出版的图书,主要通过py ...
- t检验自由度的意义_统计学中自由度的理解和应用
数理统计研究问题的方式,不是对所研究对象的全体(称为总体)进行观察,而是抽取其中的部分(称为样本)进行观察获得数据(抽样),并通过这些数据对总体进行推断.数理统计方法具有"部分推断整体&qu ...
- 【统计学】假设检验 z检验t检验 Python实现
一.快速理解 我开始学习假设检验时遇到了几个问题: 什么是假设检验? 为什么要假设检验? 什么是假设:对总体参数(均值,比例等)的具体数值所作的陈述.(因为一般来说总体的属性具体值我们是测不出来的,也 ...
- python 绘制分布直方图_统计学中常见的4种抽样分布及其分布曲线(Python绘制)...
现代统计学奠基人之一.英国统计学家费希尔(Fisher)曾把抽样分布.参书估计和假设检验看作统计推断的三大中心内容. 统计学中,需要研究统计量的性质,并评价一个统计推断的优良性,而这些取决于其抽样分布 ...
最新文章
- 收藏长文|Java 代码精简之道
- Qt Creator中常用快捷键和小技巧
- (总结)Nginx配置文件nginx.conf中文详解
- c语言复制后无法运行,刚学C语言,在Linux下写的代码能正常编译,复制到VC下就无法运行...
- OAuth 2.0初学者指南
- 录制caf 转 mp3
- emd实现信息隐藏_EMD算法原理与实现
- static变量 java
- 提升有监督学习效果的实战解析
- webapi 设置参数可为空_Web API系列(二):灵活多样的路由配置
- swift. 扩展类添加属性_Swift快速为类扩展属性
- Echarts.js+jquery.js+china.js实现中国疫情地图
- MUI APP关于页面之间的传值,plusready和自定义事件
- 通过AFNetworking获取服务器时间
- kernelchina.org内核研究
- 树莓派python 简介_自己动手实现智能家居之树莓派GPIO简介(Python版)
- 力扣(506.539)补8.22
- 关于浏览器输入一个网址后页面经历的过程总结
- [LeetCode]情侣牵手
- kanzi studio显示性能hud