这里会罗列一些统计学中的检验方法,当然顺序以笔者遇到的为准。

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的使用相关推荐

  1. 统计学中的t检验 、f检验、卡方检验

    1.1数据的种类 我们都知道,一般数据可以分为两类,即定量数据(数值型数据)和定性数据(非数值型数据),定性数据很好理解,例如人的性别,姓名这些都是定性数据. 定量数据可以分为以下几种: 1.1.1定 ...

  2. python卡方检验kf_data_常用统计检验的Python实现

    正态性检验 正态性检验是检验数据是否符合正态分布,也是很多统计建模的必要步骤,在Python中实现正态性检验可以使用W检验(SHAPIRO-WILK TEST) 检验原假设:样本服从正态分布 Pyth ...

  3. python 求离差_R中Chisquared离差检验的误差

    我对R非常陌生,正在尝试确定包含~500k点的形状文件是否是随机分布的.不管我输入什么参数,我都会得到相同的错误信息.在 以下是我从一开始就有的:> library(spatstat) spat ...

  4. python找出矩阵中的最大值_Python / Scipy:找到矩阵的“有界”最小值/最大值

    我认为指出我的问题最简单,一般情况很难解释. 说我有一个矩阵 a with dimensions NxMxT, 人们可以将T视为时间维度(使问题更容易).设(n,m)为通过NxM的指数.我可以调用(n ...

  5. 统计学中的变异及其Python实现

    统计学中的变异及其Python实现 在统计学中,变异是指对数据的分散程度的度量,常用的统计量称为标准差和方差.另外,变异系数是一种用来比较不同变量或不同尺度下变异度量的方法,更加直观和具有可比性.本文 ...

  6. python实验原理_【python】《统计学原理实验教程(Python)》书中代码实现

    代码已经上传至GitHub <统计学原理实验教程(Python)>书中代码实现 简介 <统计学原理实验教程(Python)>是厦门大学出版社在2019年出版的图书,主要通过py ...

  7. t检验自由度的意义_统计学中自由度的理解和应用

    数理统计研究问题的方式,不是对所研究对象的全体(称为总体)进行观察,而是抽取其中的部分(称为样本)进行观察获得数据(抽样),并通过这些数据对总体进行推断.数理统计方法具有"部分推断整体&qu ...

  8. 【统计学】假设检验 z检验t检验 Python实现

    一.快速理解 我开始学习假设检验时遇到了几个问题: 什么是假设检验? 为什么要假设检验? 什么是假设:对总体参数(均值,比例等)的具体数值所作的陈述.(因为一般来说总体的属性具体值我们是测不出来的,也 ...

  9. python 绘制分布直方图_统计学中常见的4种抽样分布及其分布曲线(Python绘制)...

    现代统计学奠基人之一.英国统计学家费希尔(Fisher)曾把抽样分布.参书估计和假设检验看作统计推断的三大中心内容. 统计学中,需要研究统计量的性质,并评价一个统计推断的优良性,而这些取决于其抽样分布 ...

最新文章

  1. 收藏长文|Java 代码精简之道
  2. Qt Creator中常用快捷键和小技巧
  3. (总结)Nginx配置文件nginx.conf中文详解
  4. c语言复制后无法运行,刚学C语言,在Linux下写的代码能正常编译,复制到VC下就无法运行...
  5. OAuth 2.0初学者指南
  6. 录制caf 转 mp3
  7. emd实现信息隐藏_EMD算法原理与实现
  8. static变量 java
  9. 提升有监督学习效果的实战解析
  10. webapi 设置参数可为空_Web API系列(二):灵活多样的路由配置
  11. swift. 扩展类添加属性_Swift快速为类扩展属性
  12. Echarts.js+jquery.js+china.js实现中国疫情地图
  13. MUI APP关于页面之间的传值,plusready和自定义事件
  14. 通过AFNetworking获取服务器时间
  15. kernelchina.org内核研究
  16. 树莓派python 简介_自己动手实现智能家居之树莓派GPIO简介(Python版)
  17. 力扣(506.539)补8.22
  18. 关于浏览器输入一个网址后页面经历的过程总结
  19. [LeetCode]情侣牵手
  20. kanzi studio显示性能hud

热门文章

  1. 春夏时节,淘宝店铺如何快速打造爆款?
  2. 计算机学科专业基础综合803,803计算机学科基础综合
  3. U盘有多个分区怎么合并
  4. 有哪些软件可以让图片动起来?这些软件你值得拥有
  5. UG8.0产品设计视频教程 点逆向 STL图片造型设计教程
  6. 从零开始学AI(数学基础之线性代数和高等数学)
  7. LVDS接口液晶屏定义(lcd)
  8. c语言right,C++ left和right操作符用法详解
  9. Ubuntu下安装jre8的步骤
  10. [转载]【Alientek STM32 实验2】--按键输入