引言
在数据分析和科学研究领域,统计建模扮演着至关重要的角色。Python的SciPy库提供了丰富的统计功能,其中scipy.stats
模块是进行统计计算的核心组件。本篇文章将系统阐释连续/离散概率分布的构建方法,详解假设检验(t检验/卡方检验)的实现流程,解析统计量计算与分布拟合的API体系,帮助读者建立完整的统计建模知识框架。
scipy.stats
模块包含了大量的概率分布、汇总和频率统计、相关函数和统计检验、掩码统计、核密度估计等功能。掌握这一模块的使用,将为数据科学家和研究人员提供强大的统计分析工具。
概率分布基础
概率分布是统计建模的基础,描述了随机变量取不同值的可能性。scipy.stats
模块提供了丰富的概率分布实现,包括连续型和离散型分布。
连续概率分布
连续概率分布定义了连续随机变量的概率特征。在scipy.stats
中,连续分布通过rv_continuous
类实现,提供了概率密度函数(PDF)、累积分布函数(CDF)以及随机数生成等功能。
常见连续分布及使用示例
- 正态分布(Normal Distribution)
正态分布是最常用的连续分布之一,其概率密度函数为:
f ( x ; μ , σ 2 ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x;\mu,\sigma^2) = \frac{1}{\sigma\sqrt{2\pi}} e^{ -\frac{(x-\mu)^2}{2\sigma^2} } f(x;μ,σ2)=σ2π1e−2σ2(x−μ)2
其中 μ \mu μ是均值, σ \sigma σ是标准差。
使用scipy.stats
实现正态分布的PDF计算和绘图:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成正态分布的数据
mu = 0 # 均值
sigma = 1 # 标准差
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
y = norm.pdf(x, mu, sigma)
# 绘制图形
plt.plot(x, y)
plt.title('Normal Distribution')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.show()
- 均匀分布(Uniform Distribution)
均匀分布在区间 [ a , b ] [a, b] [a,b]内具有恒定的概率密度:
f ( x ; a , b ) = { 1 b − a 如果 a ≤ x ≤ b 0 其他情况 f(x;a,b) = \begin{cases} \frac{1}{b-a} & \text{如果 } a \leq x \leq b \\ 0 & \text{其他情况} \end{cases} f(x;a,b)={ b−a10如果 a≤x≤b其他情况
使用scipy.stats
实现均匀分布的PDF计算和绘图:
from scipy.stats import uniform
# 生成均匀分布的数据
low = 0 # 下限
high = 1 # 上限
x = np.linspace(low, high, 100)
y = uniform.pdf(x, low, high)
# 绘制图形
plt.plot(x, y)
plt.title('Uniform Distribution')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.show()
- 指数分布(Exponential Distribution)
指数分布常用于描述事件之间的时间间隔:
f ( x ; λ ) = { λ e − λ