• 非正态分布数据转换成正态分布


    常用的变量变换方法有对数变换、平方根变换、倒数变换、平方根反正弦变换等,应根据资料性质选择适当的变量变换方法。

    1. 对数变换

    即将原始数据X的对数值作为新的分布数据:
    X’=lgX
    当原始数据中有小值及零时,亦可取X’=lg(X+1)
    还可根据需要选用X’=lg(X+k)或X’=lg(k-X)


    对数变换常用于

    (1)使服从对数正态分布的数据正态化。如环境中某些污染物的分布,人体中某些微量元素的分布等,可用对数正态分布改善其正态性。

    (2)使数据达到方差齐性,特别是各样本的标准差与均数成比例或变异系数CV接近于一个常数时。

     在numpy 中使用:

    转换成符合正态分布的数据,log(price+1), 反转使用:np.expm1()

    2.平方根变换


    即将原始数据X的平方根作为新的分布数据。
    X’=sqrt(X)


    平方根变换常用于:

    1)使服从Poission分布的计数资料或轻度偏态资料正态化,可用平方根变换使其正态化。

    2)当各样本的方差与均数呈正相关时,可使资料达到方差齐性。

    3.倒数变换


    即将原始数据X的倒数作为新的分析数据。
    X’=1/X


    常用于资料两端波动较大的资料,可使极端值的影响减小。

    4.平方根反正弦变换


    即将原始数据X的平方根反正弦值做为新的分析数据。
    X’=sin-1sqrt(X)


    常用于服从二项分布的率或百分比的资料。一般认为等总体率较小如<30%时或较大(如>70%时),偏离正态较为明显,通过样本率的平方根反正弦变换,可使资料接近正态分布,达到方差齐性的要求。

    发现没有,除了倒数转换,其他数据值都要求 y 值必须为正值,如果要使用负值呢?可以使用Box-Cox变换:

    5.Box-Cox变换:

    x=left{egin{matrix}frac{y^lambda-1}{lambda}---lambda
eq 0 \ log(y)---lambda=0 end{matrix}
ight.

    逆变换为:

    y=left{egin{matrix} (1+lambda y)^{frac{1}{lambda}}---lambda
eq 0 \ exp(x)---lambda=0 end{matrix}
ight.

    2.当y 可以小于 0 时:

    Box-Cox变换:

    x=left{egin{matrix} frac{(y+c)^lambda-1}{lambda g}---lambda
eq 0 \ frac{log(y+c)}{g}---lambda=0 end{matrix}
ight.   g 默认为 1

    逆变换为:

    y=left{egin{matrix} (1+lambda y)^{frac{1}{lambda}}-c---lambda
eq 0 \ exp(x)-c---lambda=0 end{matrix}
ight.


  • 相关阅读:
    Java反射(2)访问字段(Field)
    《编程珠玑》中“位图排序”引发的一系列实验
    Java : 传值or传引用?
    const 指针
    三种数据库访问——Spring3.2 + Hibernate4.2
    三种数据库访问——Spring JDBC
    数据库连接池:Druid
    三种数据库访问——原生JDBC
    介绍4款json的java类库 及 其性能测试
    云存储(Swift+Keystone)部署策略
  • 原文地址:https://www.cnblogs.com/junge-mike/p/12761395.html
Copyright © 2020-2023  润新知