Python 数值计算库scipy 统计模块stats用法入门
文章目录
- statis模块概述
- 连续概率分布
- 正态分布(norm)
- 概率检验/假设检验(Statistical tests)
- K-S检验(Kolmogorov-Smirnov test )
- scipy.stats.kstest
statis模块概述
模块包括了大量的概率分布,可以根据分为数量分为单变量与单变量。单变量又可根据变量类型分为:连续概率分布和离散概率分布。
具体包括了如下几大类统计方法:
模块名 | |
---|---|
Continuous distributions | 连续概率分布 |
Multivariate distributions | 多变量概率分布 |
Discrete distributions | 离散概率分布 |
Summary statistics | 概括统计 |
Frequency statistics | 频率统计 |
Correlation functions | 相关性分析 |
Statistical tests | 统计测试(假设检验) |
Transformations | 变换 |
Statistical distances | 距离统计 |
Contingency table functions | 列联表 |
Plot-tests | 图示测试 |
SciPy官网介绍
连续概率分布
在连续概率分布中存在两个影响分布特性的关键参数:loc, scale。对输出y = (x - loc) / scale
loc: 平移系数; scale: 缩放系数
在stats模块中,连续随机变量通常有如下方法:
方法 | 功能 |
---|---|
rvs(loc=0, scale=1, size=1, random_state=None) | 对变量进行随机取值,通过size指定输出数组尺寸 |
pdf(x, loc=0, scale=1) | 概率密度函数 |
logpdf(x, loc=0, scale=1) | log形式概率密度函数 |
cdf(x, loc=0, scale=1) | 累计概率分布 |
logcdf(x, loc=0, scale=1) | log形式累计概率分布 |
sf(x, loc=0, scale=1) | 生存函数,等于1-cdf |
ppf(q, loc=0, scale=1) | 累计概率分布的反函数Percent point function |
isf(q, loc=0, scale=1) | 生存函数的反函数 |
stats(loc=0, scale=1, moments=’mv’) | 状态统计返回Mean(‘m’), variance(‘v’), skew(‘s’), and/or kurtosis(‘k’). |
fit(data) | 对一组参数进行拟合,找出估计的概率密度系数 |
median/mean/var/std(loc=0, scale=1) | 中值/均值/方差/标准差/ |
expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds) | 关于分布的其他参数, 比如lb下边界,up上边界 |
我们以正态分布为例简单说明一下如何调用和使用一个概率分布
正态分布(norm)
简单的函数调用,统计参数输出,采样,拟合
from scipy.stats import norm
import numpy as np
# 生一个均值为1,方差为2的正态分布
distribution=norm(loc=1.0, scale=2.0)
# 显示均值和方差
print(distribution.stats())
# 进行采样
samples=distribution.rvs(size=1000)
# 样本的均值和标注差
print(np.mean(samples), np.std(samples))
# 对数据进行拟合
print(norm.fit(samples))
可视化显示概率密度和累计概率曲线,这里需要注意一个点也是我之前一直比较迷惑的地方:loc和scale参数定义位置
在实际操作过程中即可以实例化norm时传入函数,也可以直接调用norm.pdf方法时传入。但是已经实例化的distribution.pdf()无法传入loc和scale参数
fig, ax = plt.subplots(1, 1)
# 取累计概率分布的反函数,即累计概率密度为0.01和0.99自变量区间的100个数
x = np.linspace(distribution.ppf(0.01),distribution.ppf(0.99), 100)
# 实例化分布使用pdf方法
ax.plot(x, distribution.pdf(x),'r-', lw=5, alpha=0.6, label='pdf method')
# 直接使用norm.pdf
ax.plot(x, norm.pdf(x, loc=1.0, scale=2.0), 'k-', lw=2, label='pdf object')
# 样本采样的直方图
ax.hist(samples, density=True, histtype='stepfilled', alpha=0.2)
ax.legend(loc='best', frameon=False)
plt.show()
参考
概率检验/假设检验(Statistical tests)
同样我们以一个简单的算例展示如何使用stats模块进行统计假设检验
K-S检验(Kolmogorov-Smirnov test )
k-s检验主要用于评价样本与已知分布(或另一个分布)的拟合度的方法。零假设(null hypothesis)是两个分布是相同分布,当pvalue小于阈值(0.05或0.001)时拒绝零假设。
scipy.stats.kstest
scipy.stats.kstest(rvs, cdf, args=(), N=20, alternative=‘two-sided’,
mode=‘auto’)[source]
参数 | 介绍 |
---|---|
rvs | 1D数组 // 字符串(必须是scipy.stats中的分布)// callable函数,可以生成随机变量,且必须有size参数 |
cdf | 1D数组 // 字符串(必须是scipy.stats中的分布)// callable函数,可以计算cdf |
N | rvs中式字符串或者函数时的采样量,默认为20 |
altenative | 双尾单尾检验 |
返回值 | 统计量D 和 pvalue |
可见对于传入的参数形式,stats.kstest还是很多样化的,既可以时数组,也是scipy.stats中分布分布名词字符串,也是可以函数
x = np.linspace(-15, 15, 20)
# 样本为数组,概率密度为分布名词字符串
print(stats.kstest(x, 'norm'))
# 都是callable函数形式
print(stats.kstest(stats.norm.rvs(size=20), stats.norm.cdf))
# 返回第二参数为pvalue,小于阈值拒绝零假设,说明两个分布不同
print(stats.kstest(stats.norm.rvs(size=20, loc=1), 'norm'))
print(stats.kstest(stats.norm.rvs(size=20, loc=1), stats.norm(loc=1).cdf))
Python 数值计算库scipy 统计模块stats用法入门相关推荐
- python统计函数库scipy.stats的用法1/3
背景 总结统计工作中几个常用用法在python统计函数库scipy.stats的使用范例. 正态分布 以正态分布的常见需求为例了解scipy.stats的基本使用方法. 生成服从指定分布的随机数 no ...
- Python扩展库scipy.misc中图像转换成pillow图像
众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是len ...
- python pillow库_python pillow模块用法
pillow Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库.pillow可以说已经取代了PIL,将其封装成python的库(pip即可安装),且支持pytho ...
- Python扩展库scipy中值滤波算法的应用
中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...
- python中quad_python scipy integrate.quad用法及代码示例
计算定积分. 使用Fortran库QUADPACK中的技术将func从a集成到b(可能是无限间隔). 参数: func:{function, scipy.LowLevelCallable}集成的Pyt ...
- python图像处理库(PILOpenCV)快速入门学习
文章目录 PIL 基本操作 读取和创建 基本变换方法 图像处理 图像滤波 图像增强 PIL与Numpy OpenCV-python库 读取操作 基本变换 图像处理 图像滤波 Python下可以进行图像 ...
- python管道界面_python中管道用法入门实例
本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output ...
- Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)
文章目录 1.导入Matplotlib库 2.最常用的绘图函数plot 3.展示绘制完成的图像 4.保存绘制的图像 5.分割子绘图区域 6.设置横纵轴的坐标轴名称 7.设置图像名称 8.让图像中可以出 ...
- python三方库 importlib导入API用法 相对导入 绝对导入
说明:如果需要跨越多个文件层级进行导入,只需要使用多个句点即可. PEP328建议相对层级不超过两层 导入注意项(这点很重要,需要反复揣摩且测试) 如果是绝对导入,一个模块只能导入自身的子模块或和它的 ...
最新文章
- python学哪些东西_想要自学Python ,需要准备什么东西?
- Meshlab和CloudCompare截图时去除“旋转圈”
- MLIR(Multi-Level Intermediate Representation)概述
- 【模板】割点(割顶)
- his系统存储服务器,关于HIS服务器及存储建设的前瞻性需求报告
- vue 二维数组_最近研究Vue源码时我发现的一些好玩函数
- gnuplot绘图学习
- 西门子cpu指示灯含义_西门子S7200仿真软件如何使用?
- html用函数输出nn乘法表,第5讲 PHP编程.ppt
- 首次push本地代码到github上出现的问题及解决方案
- c语言课程设计六角填数,关于蓝桥杯C语言B组的六角型答案问题
- 自由空间光通信OptiSystem仿真
- linux常用的解压缩文件的命令
- 大数据人工智能应用场景
- 【硬见小百科】二十种电容分类详解!
- 【无标题】二进制STL文件解析 计算面积和体积与根据高度计算部分体积
- HTML5 页面制作工具
- 集线器,路由器,交换机的作用和区别是什么?如何区分交换机,集线器,路由器?
- 1. Java POI 读取、写入Excel(包括样式)的工具类Utils
- 台式计算机的主流配置,台式机主流配置型号参数