Author: 杜七
一、为什么要做正态变换
统计分析中,基础数据的分布可能比较特别,不符合所谓的“正态分布”。
日常的数据都是什么样子,离正态分布差距有多少,看看Dealing with Non-normal Data: Strategies and Tools。这篇文章介绍的很详细。
二、如何做正态分布变换
日常解决业务问题的时候,不管是线性回归分析,还是分析问题的时候,都需要把数据变换成类似正态分布的样子,比如RFM模型的应用,需要根据客户价值分数来划分客户,若转换成正态分布,更容易别人理解。
原始数据是非正态分布的,或者原始数据右偏,或者左偏,需要对原数据做一定的变换。
正态分布的变换,比较经典的就是BOX-COX transformation
三、实际应用的变换介绍
R语言中有一个AID package,专门用来做BOX-COX的变换,如下:
Information on package ¡®AID¡¯
Description:
Package: AID
Type: Package
Title: An R Package to Estimate Box-Cox Power Transformation Parameter
Version: 1.4
Date: 2014-01-21
Depends: MASS, tseries, nortest, stats
Author: Osman Dag, Ozgur Asar, Ozlem Ilk
Maintainer: Osman Dag
Description: Includes a function to estimate the power transformation parameter and some
datasets
License: GPL (>= 2)
Packaged: 2014-01-21 13:58:01 UTC; METU
NeedsCompilation: no
Repository: CRAN
Date/Publication: 2014-01-21 15:17:05
Built: R 3.0.2; ; 2014-02-05 00:15:39 UTC; windows
Index:
AID : An R Package to Estimate Box-Cox Power
Transformation Parameter
boxcoxnc : A Function to Estimate Box-Cox Power
Transformation Parameter via Normality Tests
and Artifical Covariate Method
grades: Student Grades Data
textile:Textile Data
1,网络实例
Making Data Normal Using Box-Cox Power Transformation ,这篇文章写的比较详细。
应用BOX-COX方法最大的问题在于如何确定lambda,采取的方法是最大似然估计.在关于lambda的对数最大似然图像上找估计值的95%置信区间。
2,RFM模型客户价值分数变换
参考AID package里面的boxcoxnc函数,来实现RFM的分数的变换。 注意:实际boxcoxnc变化过程中, 数据量有一定限制,比如boxcoxnc,要求样本数据是3-5000。这个如果原数据比较多,可以抽样;
调用boxcoxnc,比如boxcoxnc(rfm$days,method="all");
boxcoxnc的参数有几个,其中,method是用来估计box-cox的参数lambda的,方法可以选择的,默认是all;lam是选择预测的lamba的区间,即在哪个区间内求似然估计,默认是(-2,2),迭代步长0.01;
其他参数可不单独设置,plotid会画出正态检验的似然估计,默认是plotit=TRUE;
确定lambda,可以根据box-cox变换对原数据做处理,这样处理后的数据的分布会接近正态分布。