python boxcox_BOX-COX 变换

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变换对原数据做处理,这样处理后的数据的分布会接近正态分布。

你可能感兴趣的:(python,boxcox)