【进阶】Scipy的统计模块介绍
发布时间: 2024-06-27 21:34:34 阅读量: 59 订阅数: 103
![【进阶】Scipy的统计模块介绍](https://img-blog.csdnimg.cn/20190802094932661.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ltaHVh,size_16,color_FFFFFF,t_70)
# 2.1 统计描述
统计描述是统计学中用于描述和总结数据特征的一组方法。Scipy统计模块提供了丰富的统计描述函数,可以帮助我们快速了解数据的分布和特征。
### 2.1.1 集中趋势度量
集中趋势度量反映了数据集中值的中心位置。Scipy统计模块提供了以下集中趋势度量函数:
- `mean()`:计算数据的平均值。
- `median()`:计算数据的中间值。
- `mode()`:计算数据中最常出现的数值。
# 2. Scipy统计模块的基本功能
Scipy统计模块是Python中一个强大的统计分析工具包,它提供了各种函数,用于执行广泛的统计任务。这些功能可分为两大类:统计描述和统计推断。
### 2.1 统计描述
统计描述用于总结和描述数据的特征,包括集中趋势、分散趋势和形态度量。
#### 2.1.1 集中趋势度量
集中趋势度量表示数据的中心点。常用的集中趋势度量包括:
- **均值 (mean)**:数据的算术平均值。
- **中位数 (median)**:将数据从小到大排序后,位于中间位置的值。
- **众数 (mode)**:出现频率最高的数值。
```python
import scipy.stats as stats
data = [1, 2, 3, 4, 5]
# 计算均值
mean = stats.mean(data)
print("均值:", mean) # 输出:3.0
# 计算中位数
median = stats.median(data)
print("中位数:", median) # 输出:3.0
# 计算众数
mode = stats.mode(data)
print("众数:", mode) # 输出:ModeResult(mode=array([3]), count=array([1]))
```
#### 2.1.2 分散趋势度量
分散趋势度量表示数据的离散程度。常用的分散趋势度量包括:
- **方差 (variance)**:数据与均值的平方差的平均值。
- **标准差 (standard deviation)**:方差的平方根。
- **变异系数 (coefficient of variation)**:标准差与均值的比值。
```python
# 计算方差
variance = stats.var(data)
print("方差:", variance) # 输出:2.0
# 计算标准差
std_dev = stats.std(data)
print("标准差:", std_dev) # 输出:1.4142135623730951
# 计算变异系数
cv = stats.variation(data)
print("变异系数:", cv) # 输出:0.4714045207910158
```
#### 2.1.3 形态度量
形态度量描述数据的分布形状。常用的形态度量包括:
- **偏度 (skewness)**:数据分布相对于对称分布的偏移程度。
- **峰度 (kurtosis)**:数据分布的尖峰程度。
```python
# 计算偏度
skewness = stats.skew(data)
print("偏度:", skewness) # 输出:0.0
# 计算峰度
kurtosis = stats.kurtosis(data)
print("峰度:", kurtosis) # 输出:-1.2
```
### 2.2 统计推断
统计推断使用样本数据来推断总体特征。常用的统计推断方法包括:
#### 2.2.1 假设检验
假设检验用于确定给定的假设是否得到数据的支持。假设检验包括:
- **t检验**:用于比较两个独立样本的均值。
- **方差分析 (ANOVA)**:用于比较多个独立样本的均值。
- **卡方检验**:用于检验分类变量之间的关联性。
```python
# t检验
t_stat, p_value = stats.ttest_ind(data1, data2)
print("t检验统计量:", t_stat)
print("t检验p值:", p_value)
# 方差分析
f_stat, p_value = stats.f_oneway(data1, data2, data3)
print("方差分析统计量:", f_stat)
print("方差分析p值:", p_value)
# 卡方检验
chi2_stat, p_value, dof, expected = stats.chi2_contingency([[10, 20], [30, 40]])
print("卡方检验统计量:", chi2_stat)
print("卡方检验p值:", p_value)
```
#### 2.2.2 置信区间
置信区间用于估计总体参数的范围。置信区间包括:
- **均值的置信区间**:用于估计总体均值的范围。
- **比例的置信区间**:用于估计总体比例的范围。
```python
# 均值的置信区间
conf_int = stats.t.interval(0.95, len(data) - 1, loc=mean, scale=std_dev)
print("均值的95%置信区间:", conf_int)
# 比例的置信区间
conf_int = stats.binom.interval(0.95, n=100, p=0.5)
print("比例的95%置信区间:", conf_int)
```
#### 2.2.3 回归分析
回归分析用于研究自变量与因变量之间的关系。回归分析包括:
- **线性回归**:用于拟合一条直线来预测因变量。
- **逻辑回归**:用于拟合一条逻辑函数来预测二元因变量。
```python
# 线性回归
model = stats.linregress(x, y)
print("线性回归方程
```
0
0