当我们谈论正态性(Normality)和相关性(Correlation)时,我们实际上在尝试理解数据的分布模式和不同变量之间的关系。让我们先来看看这两个数学概念:
正态性(Normality):
正态性指的是数据的分布模式是否符合正态分布(也称为高斯分布)。正态分布是一种连续概率分布,具有以下特征:
- 对称性:正态分布是关于其均值对称的,也就是说,它的左半部分和右半部分是镜像对称的。
- 集中性:正态分布的数据集中在其均值周围,并且随着距离均值的增加而逐渐减少。
- 确定性:正态分布由两个参数完全确定,即均值(μ)和标准差(σ)。
正态性检验通常用于判断一个数据集是否来自正态分布。通常使用的方法包括观察直方图、Q-Q图(Quantile-Quantile Plot)以及一些统计检验,比如Shapiro-Wilk检验和Kolmogorov-Smirnov检验。
示例代码:
import pandas as pd
import numpy as np
from scipy.stats import shapiro
# 创建示例数据
data = np.random.normal(loc=0, scale=1, size=1000)
series = pd.Series(data)
# Shapiro-Wilk检验
statistic, p_value = shapiro(series)
# 解释检验结果
if p_value > 0.05:
print("数据可能符合正态分布")
else:
print("数据不符合正态分布")
相关性(Correlation):
相关性描述的是两个变量之间的关系程度。相关性的测量通常使用相关系数来完成,最常见的是皮尔逊相关系数。皮尔逊相关系数的取值范围在-1到1之间:
- 当相关系数为1时,表示完全正相关。这意味着两个变量的值以相同的比例增加或减少。
- 当相关系数为-1时,表示完全负相关。这意味着两个变量的值以相反的方向变化。
- 当相关系数接近于0时,表示变量之间没有线性关系。
需要注意的是,相关性并不意味着因果关系,即使两个变量高度相关,也不代表其中一个变量的变化导致了另一个变量的变化。
示例代码:
import pandas as pd
# 创建示例数据
data = {
'A': [1, 2, 3, 4, 5],
'B': [5, 4, 3, 2, 1],
'C': [1, 1, 2, 2, 3]
}
df = pd.DataFrame(data)
# 计算相关系数
correlation_matrix = df.corr()
print("相关系数矩阵:")
print(correlation_matrix)
相关性和正态性综合性示例:
import pandas as pd
import numpy as np
from scipy.stats import shapiro
from scipy.stats import pearsonr
# 创建示例数据集
data = {
'A': np.random.normal(loc=0, scale=1, size=1000),
'B': np.random.normal(loc=0, scale=1, size=1000),
'C': np.random.normal(loc=0, scale=1, size=1000)
}
df = pd.DataFrame(data)
# 正态性分析
for column in df.columns:
series = df[column]
statistic, p_value = shapiro(series)
if p_value > 0.05:
print(f"列 '{column}' 可能符合正态分布 (p-value={p_value:.4f})")
else:
print(f"列 '{column}' 不符合正态分布 (p-value={p_value:.4f})")
# 相关性分析
correlation_matrix = df.corr()
print("\n相关系数矩阵:")
print(correlation_matrix)
# 特定变量之间的相关性
for col1 in df.columns:
for col2 in df.columns:
if col1 != col2:
correlation, p_value = pearsonr(df[col1], df[col2])
print(f"{col1} 和 {col2} 的相关系数为 {correlation:.4f} (p-value={p_value:.4f})")
这个示例代码首先创建了一个包含三个变量的数据集,并对每个变量进行了正态性分析,然后计算了变量之间的相关系数。最后,它还输出了特定变量之间的相关性及其显著性水平(p-value)。通过这个更丰富的示例,我们可以更好地理解如何使用Pandas进行正态性分析和相关性分析,并且了解了这些分析的结果如何影响我们对数据的理解和解释。