最后更新于
最后更新于
对于机器学习中经常使用的线性回归模型, 要求每个特征变量与回归值有线性关系, 且总体的误差也不是一个正态分布, 并且和预测变量是相关的. 而好的回归模型, 最后得到的残差应当有独立性, 正态性, 方差齐性等特性.
对于线性回归模型的学习, 一般是使用最小二乘计算系数的, 而最小二乘要求回归值的正态分布, 给最后的结果带来误差. 因此需要对回归值做非正态到正态分布的转换.
首先需要对回归的观测值进行正态分布检测, 根据检测方法得到的p值大小判断是否需要做转化. 且如果p值很小, 说明与正态分布的差距较大, 需要使用Box-Cox转换方法进行处理.
变换的目的有:
一定程度上减小不可观测的误差和预测变量的相关性
使得因变量获得一些性质, 比如在时间序列分析中的平稳性, 或者使得因变量分布为正态分布
一般在回归分析中, 需要对数据进行正态分布的检验. 在常规的统计分析中, 经常使用以下方法进行正态分布的检验.
Q-Q图是一种散点图, 横坐标为某一样本的分位数, 纵坐标为另一样本的分位数. 对于正态分布的检验, 应以标准正态分布的分位数为横坐标, 观测样本集的分位数为纵坐标, 绘制成的散点图.
如果图中点都集中在直线附近(样本符合标准正态分布)或者附近(样本符合正态分布), 则代表样本点符合正态分布.
关于Q-Q图的绘制即意义参考:
与Q-Q图类似的还有P-P图.
使用作图的方法检验是否符合正态分布不够方便, 且无法定量. 统计学中有很多对正态分布进行检验的方法, Python的计算包中采用了以下几种.
除了检验正态分布, kstest还可以进行scipy.stats
中包含的所有分布. 使用方法参考文档.
Anderson-Darling test是kstest的增强版. 也可以做多种分布的检验, 默认的检验时正态性检验.
需要注意这个函数返回三个值, 分别为统计数, 评判值, 显著性水平. 后面两个都是列表, 列举了在多个显著性水平下, 判定的情况.
Shapiro-Wilk test只能检验正态分布. 原假设为样本符合正态分布. 该检验不适合对大的样本数据进行检验, 得到的检验结果的P值可能不准确. 这里的大样本集合指的是样本数量大于5000.
normaltest也是专门做正态性检验的模块.
对于接近正态分布的样本集(使用P值判断, 例如P值大于0.003, 小于0.05时), 使用一些普通的转换函数即可满足需求.
平方:
对数:
导数:
平方根:
平方根倒数:
平方根, 反正弦:
如果样本分布与正态分布的差异较大, 可以使用box-cox方法进行变换, 参考:
在Python中使用该转换方法参考: