在数据分析中,尤其是在进行回归分析时,判断残差的正态性和线性趋势是非常重要的。这是因为残差正态性是线性回归模型有效性的一个关键假设,而线性趋势则是确保模型能够准确捕捉数据间关系的基础。以下是几个实用的方法,帮助你轻松识别残差正态性和线性趋势。
残差正态性
什么是残差正态性?
残差正态性是指回归模型的残差(即实际值与预测值之间的差异)服从正态分布。这是一个重要的假设,因为许多统计测试和置信区间的计算都基于正态分布。
如何判断残差正态性?
- Q-Q图(Quantile-Quantile Plot)
- Q-Q图是一种图形工具,可以用来比较两个概率分布。
- 将你的残差与标准正态分布的累积分布函数(CDF)进行比较。
- 如果残差与标准正态分布的CDF拟合得很好,则表明残差可能服从正态分布。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# 假设residuals是你的残差数据
residuals = np.random.randn(100)
sns.qqplot(residuals, line='s')
plt.show()
- 正态概率图(Normal Probability Plot)
- 正态概率图展示了数据点的顺序与标准正态分布的对应关系。
- 如果残差数据点在图上大致呈直线分布,则表明它们可能服从正态分布。
sns.probplot(residuals, dist="norm", plot=plt)
plt.show()
- Shapiro-Wilk 检验
- Shapiro-Wilk 检验是一个统计测试,用于判断样本数据是否符合正态分布。
- 该检验返回一个p值,如果p值大于0.05,则不能拒绝正态性的原假设。
from scipy.stats import shapiro
stat, p = shapiro(residuals)
print('Statistics=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('Sample looks normally distributed (fail to reject H0)')
else:
print('Sample looks non-normally distributed (reject H0)')
线性趋势
什么是线性趋势?
线性趋势是指数据点在图上呈现出直线或近似直线的关系。在回归分析中,线性趋势意味着自变量和因变量之间存在线性关系。
如何判断线性趋势?
- 散点图
- 制作自变量和因变量的散点图。
- 观察数据点是否大致沿直线分布。
sns.scatterplot(x=data['independent_variable'], y=data['dependent_variable'])
plt.show()
- 残差图
- 残差图展示了残差与自变量之间的关系。
- 如果残差在图中大致沿水平线分布,则表明可能存在线性趋势。
sns.residplot(x=data['independent_variable'], y=data['dependent_variable'], order=data['independent_variable'].sort_values())
plt.show()
- 相关系数
- 计算自变量和因变量之间的皮尔逊相关系数。
- 一个接近1或-1的相关系数表明存在较强的线性趋势。
from scipy.stats import pearsonr
correlation, _ = pearsonr(data['independent_variable'], data['dependent_variable'])
print('Pearson correlation:', correlation)
通过以上方法,你可以有效地判断残差的正态性和线性趋势。这些技巧对于确保你的回归分析结果的准确性和可靠性至关重要。记住,数据分析是一个迭代的过程,可能需要多次检查和调整你的模型。