非正态分布数据转换成正态分布
2018-11-22 22:32
1326 查看
版权声明: https://blog.csdn.net/qq_40587575/article/details/84349900
常用的变量变换方法有对数变换、平方根变换、倒数变换、平方根反正弦变换等,应根据资料性质选择适当的变量变换方法。
- 对数变换
即将原始数据X的对数值作为新的分布数据:
X’=lgX
当原始数据中有小值及零时,亦可取X’=lg(X+1)
还可根据需要选用X’=lg(X+k)或X’=lg(k-X)
对数变换常用于
(1)使服从对数正态分布的数据正态化。如环境中某些污染物的分布,人体中某些微量元素的分布等,可用对数正态分布改善其正态性。
(2)使数据达到方差齐性,特别是各样本的标准差与均数成比例或变异系数CV接近于一个常数时。
在numpy 中使用:
转换成符合正态分布的数据,log(price+1), 反转使用:np.expm1()
-
平方根变换
即将原始数据X的平方根作为新的分布数据。
X’=sqrt(X)
平方根变换常用于:1)使服从Poission分布的计数资料或轻度偏态资料正态化,可用平方根变换使其正态化。2)当各样本的方差与均数呈正相关时,可使资料达到方差齐性。 -
倒数变换
即将原始数据X的倒数作为新的分析数据。
X’=1/X
常用于资料两端波动较大的资料,可使极端值的影响减小。 -
平方根反正弦变换
即将原始数据X的平方根反正弦值做为新的分析数据。
X’=sin-1sqrt(X)
常用于服从二项分布的率或百分比的资料。一般认为等总体率较小如<30%时或较大(如>70%时),偏离正态较为明显,通过样本率的平方根反正玄变换,可使资料接近正态分布,达到方差齐性的要求。
-
发现没有,除了倒数转换,其他数据值都要求 y 值必须为正值,如果要使用负值呢?可以使用Box-Cox变换:
Box-Cox变换:
逆变换为:
2.当y 可以小于 0 时:
Box-Cox变换:
g 默认为 0
逆变换为:
相关文章推荐
- 判别数据是否满足正态分布,将非正态分布转化为正态分布
- Visual C++常用数据类型转换详解
- 用JavaScript将long型数据转换成date型或datetime型
- android实现json数据的解析和把数据转换成json格式的字符串
- 数据类型转换(装载)
- 将表中数据转换成java entity实例
- Unity_数据类型之间的相互转换
- Java数据类型转换
- 【JAVA】Java数据类型转换
- 【转帖】VC常用数据类型及使用转换详解
- 采用扩展方法实现数组中数据类型转换(c#)
- C#中各个进制数据之间的相互转换
- java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- Java-数据类型转换
- Python 数据类型转换操作
- 滴滴笔试题: System.out.println(11+1l) & 数据类型转换
- Python 数据类型转换操作
- 将BitmapData数据转换为ByteArray, 保存ByteArray
- VC常用数据类型使用转换
- C# 基础 学习 之 数据类型转换