文章目录

  • 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用法入门相关推荐

  1. python统计函数库scipy.stats的用法1/3

    背景 总结统计工作中几个常用用法在python统计函数库scipy.stats的使用范例. 正态分布 以正态分布的常见需求为例了解scipy.stats的基本使用方法. 生成服从指定分布的随机数 no ...

  2. Python扩展库scipy.misc中图像转换成pillow图像

    众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是len ...

  3. python pillow库_python pillow模块用法

    pillow Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库.pillow可以说已经取代了PIL,将其封装成python的库(pip即可安装),且支持pytho ...

  4. Python扩展库scipy中值滤波算法的应用

    中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...

  5. python中quad_python scipy integrate.quad用法及代码示例

    计算定积分. 使用Fortran库QUADPACK中的技术将func从a集成到b(可能是无限间隔). 参数: func:{function, scipy.LowLevelCallable}集成的Pyt ...

  6. python图像处理库(PILOpenCV)快速入门学习

    文章目录 PIL 基本操作 读取和创建 基本变换方法 图像处理 图像滤波 图像增强 PIL与Numpy OpenCV-python库 读取操作 基本变换 图像处理 图像滤波 Python下可以进行图像 ...

  7. python管道界面_python中管道用法入门实例

    本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output ...

  8. Python Matplotlib库绘制曲线图 最快入门教程(最详细最简单)

    文章目录 1.导入Matplotlib库 2.最常用的绘图函数plot 3.展示绘制完成的图像 4.保存绘制的图像 5.分割子绘图区域 6.设置横纵轴的坐标轴名称 7.设置图像名称 8.让图像中可以出 ...

  9. python三方库 importlib导入API用法 相对导入 绝对导入

    说明:如果需要跨越多个文件层级进行导入,只需要使用多个句点即可. PEP328建议相对层级不超过两层 导入注意项(这点很重要,需要反复揣摩且测试) 如果是绝对导入,一个模块只能导入自身的子模块或和它的 ...

最新文章

  1. python学哪些东西_想要自学Python ,需要准备什么东西?
  2. Meshlab和CloudCompare截图时去除“旋转圈”
  3. MLIR(Multi-Level Intermediate Representation)概述
  4. 【模板】割点(割顶)
  5. his系统存储服务器,关于HIS服务器及存储建设的前瞻性需求报告
  6. vue 二维数组_最近研究Vue源码时我发现的一些好玩函数
  7. gnuplot绘图学习
  8. 西门子cpu指示灯含义_西门子S7200仿真软件如何使用?
  9. html用函数输出nn乘法表,第5讲 PHP编程.ppt
  10. 首次push本地代码到github上出现的问题及解决方案
  11. c语言课程设计六角填数,关于蓝桥杯C语言B组的六角型答案问题
  12. 自由空间光通信OptiSystem仿真
  13. linux常用的解压缩文件的命令
  14. 大数据人工智能应用场景
  15. 【硬见小百科】二十种电容分类详解!
  16. 【无标题】二进制STL文件解析 计算面积和体积与根据高度计算部分体积
  17. HTML5 页面制作工具
  18. 集线器,路由器,交换机的作用和区别是什么?如何区分交换机,集线器,路由器?
  19. 1. Java POI 读取、写入Excel(包括样式)的工具类Utils
  20. 台式计算机的主流配置,台式机主流配置型号参数

热门文章

  1. Gstore官网学习三:快速入门
  2. scala中 sorted,sortBy,sortWith语法使用
  3. android 锯齿
  4. 学大伟业 Day 4 培训总结
  5. 华为认证Datacom考试内容
  6. APS高级排程在钣金冲压行业的应用
  7. Ant Design Pro初探
  8. 大型剪纸艺术——美到惊奇
  9. 关于司南导航全系概况模糊学习记录
  10. 个人居间服务,劳务费用怎样合理节税?自然人代开3个点