什么是scipy?
Scipy(Scientific Python)是一个开源的、基于Python的科学计算库,旨在提供广泛的数学、科学和工程计算功能。它是Python生态系统中的重要组成部分之一,与NumPy(Numerical Python)库密切相关。
-
scipy.optimize: 提供了各种优化算法,用于寻找函数的最小值或最大值。
-
scipy.stats: 包含了各种统计分布的函数,如正态分布、t分布、F分布等,以及统计测试方法,如假设检验、拟合分布等。
-
scipy.interpolate: 用于插值和拟合数据的函数,可以用来生成平滑的曲线,填补缺失的数据等。
-
scipy.signal: 提供信号处理相关的功能,如滤波、谱分析、波形生成等。
-
scipy.linalg: 包含线性代数操作,例如矩阵分解、求解线性方程组等。
-
scipy.integrate: 用于数值积分的函数,包括定积分、数值解微分方程等。
-
scipy.spatial: 提供空间数据结构和算法,例如KD树、凸包计算等。
-
scipy.special: 包含一些特殊函数,如伽马函数、贝塞尔函数等。
常用scipy.stats的包
在scipy.stats 模块中,各种统计分布函数提供了以下常见操作:
- 概率密度函数(
PDF,Probability Density Function):
pdf(x, *args, **kwds): 计算给定值 x 处的概率密度
- 累积分布函数(
CDF,Cumulative Distribution Function):
cdf(x, *args, **kwds): 计算给定值 x 处的累积分布函数值。
- 分位数(
Percentile,Quantile):
ppf(q, *args, **kwds): 计算给定累积分布概率 q 对应的分位数。
- 随机抽样(
Random Sampling):
rvs(size=None, *args, **kwds): 生成指定大小的随机样本。
在scipy.stats 模块中常用的统计分布的函数
- 正态分布(
Normal Distribution):
norm.pdf(x, loc=0, scale=1): 计算正态分布在给定值 x 处的概率密度。
norm.cdf(x, loc=0, scale=1): 计算正态分布在给定值 x 处的累积分布函数值。
norm.ppf(q, loc=0, scale=1): 计算正态分布的给定累积分布概率 q 对应的分位数。
- t 分布(
t-distribution):
t.pdf(x, df, loc=0, scale=1): 计算t分布在给定自由度 df 下,值 x 处的概率密度。
t.cdf(x, df, loc=0, scale=1): 计算t分布在给定自由度 df 下,值 x 处的累积分布函数值。
- F 分布(
F-distribution):
f.pdf(x, dfn, dfd, loc=0, scale=1): 计算F分布在给定分子自由度 dfn 和分母自由度 dfd 下,值 x 处的概率密度。
- 卡方分布(
Chi-Square Distribution):
chi2.pdf(x, df, loc=0, scale=1): 计算卡方分布在给定自由度 df 下,值 x 处的概率密度。
- 二项分布(
Binomial Distribution):
binom.pmf(k, n, p): 计算二项分布在给定试验次数 n、成功概率 p 下,成功次数为 k 的概率质量函数值。
- 泊松分布(
Poisson Distribution):
poisson.pmf(k, mu): 计算泊松分布在给定平均值 mu 下,取值为 k 的概率质量函数值。