Python实现常用的假设检验 !

Flink on k8s 环境搭建(一) Flink on Yarn的环境搭建过程中,需要进行配置较多,且需要搭建zookeeper Hadoop Yarn 等相关组件,安装流程比较复杂,集群出现问题重新安装的流程也比较复杂,且Yarn的3个节点中 只能起了 3个resourceManager和1个NodeManager,Flink 作业申请资源时只能 向NodeManager的节点申请资源,整体有资源瓶颈的隐患(后继flink作业会越来越多),现在尝试进行Flink on k8s 的环境搭建。 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


这篇文章,教大家用Python实现常用的假设检验!

 

 

服从什么分布,就用什么区间估计方式,也就就用什么检验!

比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。

 

 

建设检验的基本步骤:

 

假设检验用到的Python工具包

  • Statsmodels是Python中,用于实现统计建模和计量经济学的工具包,主要包括描述统计、统计模型估计和统计推断
  • Scipy是一个数学、科学和工程计算Python工具包,主要包括统计,优化,整合,线性代数等等与科学计算有关的包

导入数据


from sklearn.datasets import load_iris
import numpy as np
#导入IRIS数据集
iris = load_iris()
iris=pd.DataFrame(iris.data,columns=['sepal_length','sepal_width','petal_legth','petal_width'])
print(iris)

一个总体均值的z检验


np.mean(iris['petal_legth'])
'''
原假设:鸢尾花花瓣平均长度是4.2
备择假设:鸢尾花花瓣平均长度不是4.2

'''

import statsmodels.stats.weightstats
z, pval = statsmodels.stats.weightstats.ztest(iris['petal_legth'], value=4.2)
print(z,pval)


'''
P=0.002 <5%, 拒绝原假设,接受备则假设。
'''

一个总体均值的t检验

import scipy.stats
t, pval = scipy.stats.ttest_1samp(iris['petal_legth'], popmean=4.0)
print(t, pval)

'''
P=0.0959 > 5%, 接受原假设,即花瓣长度为4.0。 
'''

模拟双样本t检验


#取两个样本
iris_1 = iris[iris.petal_legth >= 2]
iris_2 = iris[iris.petal_legth < 2]
print(np.mean(iris_1['petal_legth']))
print(np.mean(iris_2['petal_legth']))

'''
H0: 两种鸢尾花花瓣长度一样
H1: 两种鸢尾花花瓣长度不一样

'''

import scipy.stats
t, pval = scipy.stats.ttest_ind(iris_1['petal_legth'],iris_2['petal_legth'])
print(t,pval)

'''
p<0.05,拒绝H0,认为两种鸢尾花花瓣长度不一样
'''

练习

数据字段说明:

  • gender:性别,1为男性,2为女性
  • Temperature:体温
  • HeartRate:心率
  • 共130行,3列
  • 用到的数据链接:pan.baidu.com/s/1t4SKF6

本周需要解决的几个小问题:

1.人体体温的总体均值是否为98.6华氏度?
2.人体的温度是否服从正态分布?
3.人体体温中存在的异常数据是哪些?
4.男女体温是否存在明显差异?
5.体温与心率间的相关性(强?弱?中等?)

1.1 探索数据


import numpy as np
import pandas as pd
from scipy import stats
data = pd.read_csv("C:\\Users\\baihua\\Desktop\\test.csv")
print(data.head())
sample_size = data.size #130*3
out:
   Temperature  Gender  HeartRate
0         96.3       1         70
1         96.7       1         71
2         96.9       1         74
3         97.0       1         80
4         97.1       1         73

print(data.describe())
out:
 Temperature      Gender   HeartRate
count   130.000000  130.000000  130.000000
mean     98.249231    1.500000   73.761538
std       0.733183    0.501934    7.062077
min      96.300000    1.000000   57.000000
25%      97.800000    1.000000   69.000000
50%      98.300000    1.500000   74.000000
75%      98.700000    2.000000   79.000000
max     100.800000    2.000000   89.000000

人体体温均值是98.249231

1.2 人体的温度是否服从正态分布?


'''
人体的温度是否服从正态分布?
先画出分布的直方图,然后使用scipy.stat.kstest函数进行判断。

'''
%matplotlib inline
import seaborn as sns
sns.distplot(data['Temperature'], color='b', bins=10, kde=True)


stats.kstest(data['Temperature'], 'norm')
out:
KstestResult(statistic=1.0, pvalue=0.0)
'''
p<0.05,不符合正态分布
'''

判断是否服从t分布


'''
判断是否服从t分布:

'''

np.random.seed(1)
ks = stats.t.fit(data['Temperature'])
df = ks[0]
loc = ks[1]
scale = ks[2]
t_estm = stats.t.rvs(df=df, loc=loc, scale=scale, size=sample_size)
stats.ks_2samp(data['Temperature'], t_estm)

'''

 pvalue=0.4321464176976891 <0.05,认为体温服从t分布
'''

判断是否服从卡方分布


'''
判断是否服从卡方分布:

'''
np.random.seed(1)
chi_square = stats.chi2.fit(data['Temperature'])
df = chi_square[0]
loc = chi_square[1]
scale = chi_square[2]
chi_estm = stats.chi2.rvs(df=df, loc=loc, scale=scale, size=sample_size)
stats.ks_2samp(data['Temperature'], chi_estm)

'''
pvalue=0.3956146564478842>0.05,认为体温服从卡方分布

'''

绘制卡方分布直方图


'''
绘制卡方分布图

'''

from matplotlib import pyplot as plt
plt.figure()
data['Temperature'].plot(kind = 'kde')
chi2_distribution = stats.chi2(chi_square[0], chi_square[1],chi_square[2])
x = np.linspace(chi2_distribution.ppf(0.01), chi2_distribution.ppf(0.99), 100)
plt.plot(x, chi2_distribution.pdf(x), c='orange')
plt.xlabel('Human temperature')
plt.title('temperature on chi_square', size=20)
plt.legend(['test_data', 'chi_square'])

1.3 人体体温中存在的异常数据是哪些?


'''
已知体温数据服从卡方分布的情况下,可以直接使用Python计算出P=0.025和P=0.925时(该函数使用单侧概率值)的分布值,在分布值两侧的数据属于小概率,认为是异常值。
'''
lower1=chi2_distribution.ppf(0.025)
lower2=chi2_distribution.ppf(0.925)
t=data['Temperature']
print(t[t<lower1] )
print(t[t>lower2])

out:

0     96.3
1     96.7
65    96.4
66    96.7
67    96.8
Name: Temperature, dtype: float64
63      99.4
64      99.5
126     99.4
127     99.9
128    100.0
129    100.8
Name: Temperature, dtype: float64

1.4 男女体温差异是否显著


'''
此题是一道两个总体均值之差的假设检验问题,因为是否存在差别并不涉及方向,所以是双侧检验。建立原假设和备择假设如下:
H0:u1-u2 =0  没有显著差
H1:u1-u2 != 0  有显著差别

'''
data.groupby(['Gender']).size() #样本量65
male_df = data.loc[data['Gender'] == 1]
female_df = data.loc[data['Gender'] == 2]

'''
使用Python自带的函数,P用的双侧累计概率
'''


import scipy.stats
t, pval = scipy.stats.ttest_ind(male_df['Temperature'],female_df['Temperature'])
print(t,pval)
if pval > 0.05:
    print('不能拒绝原假设,男女体温无明显差异。')
else:
    print('拒绝原假设,男女体温存在明显差异。')

out:
-2.2854345381654984 0.02393188312240236
拒绝原假设,男女体温存在明显差异。

1.5 体温与心率间的相关性(强?弱?中等?)


'''

体温与心率间的相关性(强?弱?中等?)

'''

heartrate_s = data['HeartRate']
temperature_s = data['Temperature']
from matplotlib import pyplot as plt
plt.scatter(heartrate_s, temperature_s)


stat, p = stats.pearsonr(heartrate_s, temperature_s)
print('stat=%.3f, p=%.3f' % (stat, p))
print(stats.pearsonr(heartrate_s, temperature_s))

'''
相关系数为0.004,可以认为二者之间没有相关性

'''
硬件-汽车电子-TBOX/TCAM核心器件选型与系统集成设计指南 本文深入解析汽车电子TBOX/TCAM硬件架构与系统集成设计,涵盖核心器件选型、电源管理、信号完整性优化等关键点。重点分享5G模组选型避坑经验、MCU隐性指标及热设计验证方案,为车载通信系统开发提供实用指南。 阅读详情

相关推荐

利用Python假设检验、参数估计、方差分析、线性回归

目录 参数估计 方差比的置信区间 均值差的置信区间 一个正态总体方差的点估计和置信区间 一个正态总体均值的点估计和置信区间 单样本t检验的SciPy实现方式 单样本t检验的statsmodels实现方式 两样本t检验SciPy的实现方式 两样本t检验statsmodels的实现方式 配对t检验的SciPy实现 方差分析 单因素方差分析的SciPy实现 事后检验 非参数方法 SciPy实现有符号秩和检验 SciPy实现秩和检验 一元线性回归 参数估计 方差比的置信区间

m0_64336780的博客 7796

ks检验与s-w 检验_Python进行单变量的样本分布检验

DATApython进行样本分布检验0引言问题:如何检验数据的抽样的某个维度是符合某种分布的?譬如,是否是正态分布,是否与总体的分布相同等?工具:python。接下来一起看看数据分析中重要的一环“单变量的样本分布检验”。01思路探索数据变量之间是否存在某种关系/关联。大致思路有:①确认变量的类型:[类别型、数值型];②可视化给出可能的方向:[散点图、箱型图、直方图、…];③需建立更严格的...

weixin_39996739的博客 1118

python实现Shapiro-Wilk正态分布检验

python实现Shapiro-Wilk正态分布检验 Shapiro-Wilk检验 Shapiro-Wilk检验等显著性假设检验方法,则从统计学意义上将样本分布与正态分布进行比较,以确定数据是否显示出与正态性的偏离或符合。 SW检验有两个基本假设: H0:样本所来自的总体分布服从正态分布 H1:样本所来自的总体分布不服从正态分布 两个假设互斥最终仅有一个成立。哪一个成立呢,我们直接看统计软件帮我们计算得到显著性概率sig值或p值,当p值>0.05时,没有理由拒绝H0,则认为..

data+scenario+science+insight 4940

ks检验与s-w 检验_Python实现「统计学」常用假设检验

文末扫码领取【Python开源项目包】上篇文章→:数据分析5大软件「优势PK」:Python、Excel、R、SAS、SPSS你最爱哪个?作者 | 求知鸟来源 | 知乎开门见山。这篇文章,教大家用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。假设检验的基本步骤:...

weixin_39828457的博客 1469

python scale函数_Python GUI 08----Scale

Scale为输出限定范围的数字区间,可以为之指定最大值,最小值及步距值。Scale组件默认为垂直,最大值100,最小值0,步距为11.创建一个Scalefrom tkinter import *root = Tk()Scale(root).pack()root.mainloop()2.改变缺省值from tkinter import *root = Tk()Scale(root,from_ = -...

weixin_35689877的博客 5135

假设检验_Python实现常用假设检验

- 点击上方“中国统计网”订阅我吧!-在上篇文章中,介绍了假设检验的基本方法和原理,并在文章的最后用Excel实现了主要的假设检验,见下文:数据分析 | 统计之参数假设检验这篇文章,用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。建设检验的基本步骤:...

weixin_35965498的博客 207

python假设检验和区间估计_Python实现常用假设检验

原标题:Python实现常用假设检验!在上篇文章中,介绍了假设检验的基本方法和原理,并在文章的最后用Excel实现了主要的假设检验,见下文: 数据分析 | 统计之参数假设检验这篇文章,用Python实现常用假设检验! 服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。 建设检验的基本步骤: ...

weixin_39799646的博客 191

python scale()函数_Python实现常用假设检验

- 点击上方“中国统计网”订阅我吧!-在上篇文章中,介绍了假设检验的基本方法和原理,并在文章的最后用Excel实现了主要的假设检验,见下文:数据分析 | 统计之参数假设检验这篇文章,用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。建设检验的基本步骤:...

weixin_39632379的博客 468

手把手教你使用Python实现常用假设检验

开门见山。这篇文章,教大家用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出...

tongtongjing1765的博客 2192

python假设检验和区间估计_手把手教你使用Python实现常用假设检验

开门见山。这篇文章,教大家用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。建设检验的基本步骤:前言假设检验用到的Python工具包Statsmodels是Python中,用于实现统计建模和计量经济学的工具包,主要包括描述统计、统计模型估计和统计推断Scipy是...

weixin_39963341的博客 252

python loc函数_手把手教你使用Python实现常用假设检验

开门见山。这篇文章,教大家用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。建设检验的基本步骤:前言假设检验用到的Python工具包Statsmodels是Python中,用于实现统计建模和计量经济学的工具包,主要包括描述统计、统计模型估计和统计推断S...

weixin_39722921的博客 481

python 卡方分布值_手把手教你使用Python实现常用假设检验

开门见山。这篇文章,教大家用Python实现常用假设检验!服从什么分布,就用什么区间估计方式,也就就用什么检验!比如:两个样本方差比服从F分布,区间估计就采用F分布计算临界值(从而得出置信区间),最终采用F检验。建设检验的基本步骤:前言假设检验用到的Python工具包Statsmodels是Python中,用于实现统计建模和计量经济学的工具包,主要包括描述统计、统计模型估计和统计推断S...

weixin_39793098的博客 552

1.3预处理与热图

  在数据分析当中的东西还是很多的,我在这里只是启发式的介绍一下,了解到这方面的东西之后,使用的时候可以更快的找到解决办法,希望能对大家有所帮助。   这次,依然是使用的sklearn中的iris数据集,对其进行通过热图来展示。   预处理   sklearn.preprocessing是机器学习库中预处理的模块,可以对数据进行标准化处理,正则化等等,根据需求来使用。在这里利用它的标准化方法...

weixin_30872733的博客 2530

Python的GUI编程(六)Scale(数值范围)

Tkinter 中的 Scale 控件是一种可供用户通过拖动指示器改变变量值的控件. 这种控件可以水平放置, 也可以竖直放置. 可以在用户界面中放置一个 Scale 控件, 用户通过拖动该控件就可以在某个取值范围内选择一个合适的值. Scale 控件可以设置最大最小值以确定取值范围. 我们也可以改变 Scale 控件的放置方式, 使其水平或竖直放置. 当需要用户在一个范围内选择一个值时,

程序猿的视界 1万+

python中scale函数_Python中概率分布函数中的loc和scale含义

从字面意思的解释看,loc对应location即位置,scale可理解为比例,在http://www.mamicode.com/info-detail-1392810.html一文中的解释为:“通过loc和scale参数可以指定随机变量的偏移和缩放参数”。对于其在具体分布函数的含义也可以查帮助文档,一种查找帮助信息的方法为:在cmd命令行窗口中,执行python命令,进入python环境后,执行h...

weixin_39926394的博客 3561

python scale()函数_Python可视化43|plotninePython版ggplot2

"pythonic生物人"的第115篇分享。plotnine是图层图形语法(The Grammar of Graphics)在python中的实现,是ggplot2的python版,使用方法和ggplot2几乎一样。本文将「基于图层图形语法(The Grammar of Graphics)系统介绍plotnine,不纠结某一个具体图某一个参数,力争全局把握。」「python可视化往期精彩...

weixin_39934675的博客 588

Python3数据分析与挖掘建模实战:假设检验、卡方检验、独立t分布检验、方差检验、qq图

前言 补充知识 本篇文章中会使用到统计函数库scipy.stats的基本用法之一:生成服从指定分布的随机数,norm.rvs()。 import scipy.stats as ss norm_dist=ss.norm.rvs(loc=0,scale=1,size=10) 即生成一组期望为0,标准差为1,长度为10的正态分布随机数。 绘制直方图和分布曲线: loc=0,scale=1 loc=10,scale=1 ...

Yeexxxx___的博客 1290

python中scale函数_python – R.scale()和sklearn.preprocessing.scale()之间的区别

我目前正将数据分析从R转移到Python.在R i中缩放数据集时,将使用R.scale(),在我的理解中将执行以下操作:(x-mean(x))/ sd(x)要替换该函数,我尝试使用sklearn.preprocessing.scale().根据我对描述的理解,它做了同样的事情.尽管如此,我运行了一个小测试文件并发现,这两种方法都有不同的返回值.显然,标准偏差并不相同……有人能够解释为什么标准偏差会...

weixin_39938875的博客 1354

基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip

基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学者阅读和学习。基于CNN卷积神经网络模型的手写英文字母识别项目源码.zip对里面的几乎每一行代码都进行了详尽的注释,也适合初学

上一篇: Python带你在朋友圈环球旅行
下一篇: Python的collections原来这么好用!
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值