《Python 数据统计实战:用 Python 实现相关性分析,挖掘变量关联》
·
Python 数据统计实战:相关性分析指南
相关性分析用于量化两个变量间的关联强度与方向。核心指标是相关系数,取值范围为$[-1, 1]$:
- $1$:完全正相关
- $-1$:完全负相关
- $0$:无线性关联
常用方法
-
皮尔逊相关系数
适用于连续变量,测量线性关系。公式:
$$\rho_{X,Y} = \frac{\text{cov}(X,Y)}{\sigma_X \sigma_Y}$$
其中$\text{cov}$为协方差,$\sigma$为标准差。 -
斯皮尔曼秩相关系数
适用于有序数据或非线性关系,基于变量排名计算。
Python 实现步骤
1. 数据准备
import pandas as pd
import numpy as np
from scipy import stats
# 示例数据:广告投入 vs 销售额
data = {
"广告费": [20, 35, 50, 65, 80],
"销售额": [120, 180, 250, 300, 370]
}
df = pd.DataFrame(data)
2. 计算皮尔逊相关系数
pearson_corr = df.corr(method='pearson')
print("皮尔逊相关系数矩阵:")
print(pearson_corr)
3. 计算斯皮尔曼相关系数
spearman_corr = df.corr(method='spearman')
print("\n斯皮尔曼相关系数矩阵:")
print(spearman_corr)
4. 可视化分析
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x='广告费', y='销售额', data=df)
plt.title("广告投入与销售额关系")
plt.show()
结果解读
- 若输出值接近$1$(如$0.98$),表明强正相关:广告费增加时销售额显著上升
- 若输出值接近$-1$(如$-0.85$),表明强负相关
- 值在$(-0.3, 0.3)$区间可认为无显著关联
注意事项
- 皮尔逊系数要求数据满足正态分布
- 异常值会扭曲结果,需预先清洗数据
- 高相关≠因果关系,需结合业务逻辑判断
实战建议:对金融数据可尝试滚动相关性分析,动态观察指标随时间的变化趋势。
更多推荐
所有评论(0)