【scipy 基础】--统计分布

这篇具有很好参考价值的文章主要介绍了【scipy 基础】--统计分布。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

scipy.stats子模块包含大量的概率分布、汇总和频率统计、相关函数和统计测试、掩蔽统计、核密度估计、准蒙特卡罗功能等等。

这个子模块可以帮助我们描述和分析数据,进行假设检验和拟合统计模型等。

1. 主要功能

具体来说,scipy.stats子模块包括以下主要功能:

类别 说明
连续统计分布 包括正态分布、指数分布、卡方分布、t分布、F分布等常见的连续概率分布。这些分布都有各自的密度函数、分布函数、累积函数、随机生成器和统计特性等。
分段统计分布 包括伯努利分布、二项分布、泊松分布、正态分布、指数分布等常见的离散概率分布。这些分布都有各自的密度函数、分布函数、累积函数、随机生成器和统计特性等。
统计测试 包括t检验、方差分析、卡方检验、相关系数检验、回归分析等常见的统计测试方法。这些测试方法可以用于假设检验和数据分析。
拟合统计模型 包括线性回归、逻辑回归、岭回归等常见的回归模型,以及广义线性模型等复杂模型。这些模型可以用于数据拟合和预测。
其他功能 包括分布的随机生成、分位数生成、随机变量的数字特征计算、矩母函数等其他实用功能。

2. 统计分布示例

下面演示几个通过scipy.stats子模块构建的统计分布的示例。

2.1. 多项式分布

多项式分布是一种离散型概率分布,用于描述在n次独立重复试验中,每次试验中k个不同的结果出现的概率。其中n表示试验次数,k表示要发生的结果数。

多项式分布主要用于描述在实际问题中一些离散型随机变量的概率分布,
例如人类的寿命、产品的寿命、遗传学中的多基因效应、网络中的链接数等。

构建一个多项式分布的示例:
\(f(x_1,x_2,...,x_k;p_1,p_2,...,p_k,n)=\frac{n!}{x_1!...x_k!}p_1^{x_1}p_2^{x_2}...p_k^{x_k}\)

from scipy.stats import multinomial

N = 5
p = np.ones(N)/N

# 计算概率质量函数
multinomial.pmf([N,0,0,0,0], n=N, p=p)

# 基于参数n和p,从多项分布中抽取随机样本
multinomial.rvs(n=100, p=p, size=5)
# 运行结果:
array([[25, 17, 16, 23, 19],
       [16, 23, 23, 19, 19],
       [19, 24, 14, 20, 23],
       [19, 22, 27, 16, 16],
       [15, 11, 30, 23, 21]])

size就是随机样本的个数,相当于返回的二维数组的行数。
每行数据的数目就是参数p的长度(也就是代码中的N)。
每行数据加起来的就是 参数n(上面的示例中,二维数组每行加起来的100

2.2. \(\beta\)分布

\(\beta\)分布是一种连续型概率分布,用于描述区间[0,1]内某一随机变量的概率分布形态。
\(\beta\)分布的概率密度函数由两个参数αβ确定,它们分别控制分布的左端点和右端点以及分布的形状。

\(\beta\)分布主要用于描述在实际问题中一些变量在区间[0,1]内的概率分布形态,
例如人类的能力、测试的得分、金融市场的收益率等。

构建一个\(\beta\)分布的示例:
\(\begin{align*} f(x;a,b) = \frac{\varGamma(a+b)x^{a-1}(1-x)^{b-1}}{\varGamma(a)\varGamma(b)} \quad\quad 0 \le x \le 1 \end{align*}\)

from scipy.stats import beta

# 三种不同的 a,b 系数,分别为:
# a<b; a==b; a>b
params = [(1.5, 5.5), (5.5, 5.5), (5.5, 1.5)]
for p in params:
    a, b = p
    mean, var, skew, kurt = beta.stats(a, b, moments="mvsk")
    print(
        "平均数:{:.2f}, 方差:{:.2f}, 偏态:{:.2f}, 峰度系数:{:.2f}".format(
            mean,
            var,
            skew,
            kurt,
        )
    )

# 运行结果:
平均数:0.21, 方差:0.02, 偏态:0.88, 峰度系数:0.43
平均数:0.50, 方差:0.02, 偏态:0.00, 峰度系数:-0.43
平均数:0.79, 方差:0.02, 偏态:-0.88, 峰度系数:0.43

三种不同的分布绘制成图形的话:

from scipy.stats import beta
import numpy as np
import matplotlib.pyplot as plt

params = [(1.5, 5.5), (5.5, 5.5), (5.5, 1.5)]
labels = ["a=1.5,b=5.5", "a=5.5,b=5.5", "a=5.5,b=1.5"]
for idx, p in enumerate(params):
    a, b = p
    x = np.linspace(beta.ppf(0, a, b), beta.ppf(1, a, b), 100)
    plt.plot(x, beta.pdf(x, a, b),label=labels[idx])

plt.legend(loc="upper center")
plt.show()

【scipy 基础】--统计分布

从图中可以体会,a, b两个参数对分布的影响。

2.3. 高斯分布

高斯分布,也称为正态分布(Normal distribution),是一种连续概率分布,在自然界和社会科学领域中广泛存在。
它的概率密度函数呈钟形曲线,两头低,中间高,左右对称,因此也被称为钟形曲线

高斯分布主要用于描述许多自然现象和社会科学中的概率分布形态,
例如人类的身高、人类的智商、动物的寿命、人类的寿命、产品的寿命、遗传学中的多基因效应、网络中的链接数等。

构建一个高斯分布的示例:
\(\begin{align*} f(x;\mu,\sigma)=\frac{1}{\sqrt{2\pi\sigma^2}}exp(-\frac{(x-\mu)^2}{\sigma^2}) \quad\quad -\infty \lt x \le \infty \end{align*}\)

from scipy.stats import norm

params = [(1, 2),(2, 2),(2, 1)]

for p in params:
    mu, sigma = p
    mean, var = norm.stats(loc=mu, scale=sigma, moments='mv')
    print(
        "平均数:{:.2f}, 方差:{:.2f}".format(
            mean,
            var,
        )
    )

# 运行结果:
平均数:1.00, 方差:4.00
平均数:2.00, 方差:4.00
平均数:2.00, 方差:1.00

从运行结果可以看出,\(\mu\)参数会影响结果的平均数\(\sigma\)参数则影响结果的方差

将结果绘制成图形更好理解一些:

from scipy.stats import norm
import matplotlib.pyplot as plt

params = [(1, 2),(2, 2),(2, 1)]
labels = ["mu=1,sigma=2", "mu=2,sigma=2", "mu=2,sigma=1"]

for idx, p in enumerate(params):
    mu, sigma = p
    x = np.linspace(norm.ppf(0.01, mu, sigma), norm.ppf(0.99, mu, sigma), 100)
    plt.plot(x, norm.pdf(x, mu, sigma), label=labels[idx])

plt.legend(loc="upper left")
plt.show()

【scipy 基础】--统计分布
从图中来看,\(\mu\)参数控制图形左右偏移程度\(\sigma\)参数控制图形的陡峭程度

3. 总结

总之,scipy.stats子模块为统计学和数据分析提供了丰富的工具和函数,可以帮助我们进行各种统计分析和数据处理任务。

不过,统计是一个非常大的领域,其中有些主题还是超出了 SciPy 的范围,并被其他Python软件包涵盖。
比如其中一些比较著名的是statsmodelsPyMCscikit-learn等等。
遇到scipy.stats难以处理的问题时,可以看看这些库中是否已经有解决方案。文章来源地址https://www.toymoban.com/news/detail-747773.html

到了这里,关于【scipy 基础】--统计分布的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一图看懂 stat 模块:解析 stat() 结果, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 @[TOC](一图看懂 stat 模块:解析 stat() 结果, 资料整理+笔记(大全)) 全文介绍系统内置 stat 模块、函数、类及类的方法和属性。 它通过代码抓取并经AI智能翻译和人工校对。 是一部不可多得的权威字典类工

    2023年04月09日
    浏览(45)
  • 斯坦福 Stats60:21 世纪的统计学:前言到第四章

    原文: statsthinking21.github.io/statsthinking21-core-site/index.html 译者:飞龙 协议:CC BY-NC-SA 4.0 这本书的目标是讲述统计学的故事,以及它如何被全球的研究人员所使用。这是一个与大多数统计学入门书籍中讲述的故事不同的故事,后者侧重于教授如何使用一套工具来实现非常具体的

    2024年01月18日
    浏览(50)
  • 统计基础:1.1_正态分布及其检验

      正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由棣莫弗(Abraham de Moivre)在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等

    2024年02月05日
    浏览(44)
  • 【python统计分析】stats.ttest_ind 独立样本T检验

    用法 ttest_ind 官方文档 当两总体方差相等时,即具有方差齐性,可以直接检验。 当不确定两总体方差是否相等时,应先利用levene检验,检验两总体是否具有方差齐性。如果返回结果的p值远大于0.05,那么我们认为两总体具有方差齐性。 如果两总体不具有方差齐性,需要加上参

    2024年02月16日
    浏览(39)
  • 斯坦福 Stats60:21 世纪的统计学:第十五章到第十八章

    原文: statsthinking21.github.io/statsthinking21-core-site/comparing-means.html 译者:飞龙 协议:CC BY-NC-SA 4.0 我们已经遇到了许多情况,我们想要询问样本均值的问题。在本章中,我们将更深入地探讨我们可以比较不同组均值的各种方法。 我们可能想要询问均值是否具有特定值的最简单的

    2024年01月16日
    浏览(49)
  • 很全面的提示工程指南(包含大量示例!)

    译注:翻译自 这个github repo(还在频繁更新),是个很全面的提示工程指南,这里主要摘取了具体指导编写的部分,在ChatGPT翻译的基础上做了编辑。 这部分对于编写提示要考虑的因素覆盖得很全面,并且给出了很多示例。 研究现状、论文、代码等没有搬运,有兴趣可以移步g

    2024年02月05日
    浏览(25)
  • R语言【stats】——as.formula():取已包含在其他对象中的公式的方法,额外保存属性

    Package  stats  version 4.2.0 泛型函数 formula 及其特定方法提供了一种提取包含在其他对象中的公式的方法。  as.formula  几乎相同,另外当对象已经继承了 “formula” 时,保留了属性。 参数【x】 : R 对象,为 DF2formula() 的一个 data.frame 。 参数【object】 :同 参数【x】 。 参数【

    2024年01月24日
    浏览(45)
  • 如何在PostgreSQL中使用pg_stat_statements插件进行SQL性能统计和分析?

    PostgreSQL中的 pg_stat_statements 是一个强大的插件,用于追踪执行时间最长的SQL语句。通过它,我们可以获取有关SQL语句执行频率、总执行时间、平均执行时间等信息,从而进行性能调优和问题分析。 首先,我们需要确保 pg_stat_statements 插件已经安装。在大多数PostgreSQL发行版中,

    2024年04月25日
    浏览(80)
  • 【后端版】分布式医疗云平台【【统计模块】his-statistics 模块、【子父项目】statistics-api 、statistics-domain、statistics-mapper】(十五)

    目录 3.7.【统计模块】his-statistics 模块及子项目的创建和配置 3.7.1.【子父项目】his-statistics 模块的创建

    2024年02月11日
    浏览(42)
  • HBase(7):大量数据的计数统计

    当HBase中数据量大时,可以使用HBase中提供的MapReduce程序来进行计数统计。语法如下: 1 启动YARN集群 启动yarn集群 启动history server 2 执行MR JOB 通过观察YARN的WEB UI,我们发现HBase启动了一个名字为rowcounter_ORDER_INFO的作业。  

    2024年02月12日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包