文章目录

  • 多变量分析统计基于的假设
  • 1.为什么变量分布要呈现正态分布?
  • 2.判断数据是否服从正态分布的指标:偏态与峰度
  • 3.如何调整原始分布趋于正态分布?

多变量分析统计基于的假设

  1. 正态性
    当谈论正态性时,即数据应该看起来像正态分布。这很重要,因为几个统计检验都依赖于此(例如t统计)。单变量正态性虽然不能确保多变量正态性(这是我们想要的),但它有帮助。在大样本数据中,如果我们解决正态性,我们就避免了很多其他问题(例如异方差),所以这就是我们进行这种分析的主要原因。
  2. 同方差
    同方差性是指“假设因变量在预测变量范围内的方差水平相等。同方差是可取的,因为我们希望误差项在所有自变量的值上都是相同的。
  3. 线性度
    评估线性度最常见的方法是检查散点图并寻找线性模式。如果模式不是线性的,那么研究数据转换是值得的。
  4. 无相关误差。
    相关错误是在一个错误与另一个错误相关联时发生的。
    例如,如果一个正误差系统地产生一个负误差,则意味着这些变量之间存在关联。
    这通常发生在时间序列中,其中某些模式与时间相关。

1.为什么变量分布要呈现正态分布?

  我不是统计学科班,对于这些统计上的概念不是很理解。在特征工程中,我们为什么想要变量分布呈现正态分布?我觉得可以这么理解:单变量正态性虽然不能保证多变量的正态性,但是它是有帮助的。并且一般解决了正态性问题的话,就可以解决异方差或者线性度的问题。而且很多模型假设数据服从正态分布后,它的样本均值和方差就相互独立,这样就能更好的进行统计推断和假设验证。

2.判断数据是否服从正态分布的指标:偏态与峰度

  这里就不详细介绍了,可参考其他博客偏态与分布。
  正态分布是指多数频数集中在中央位置,两端的频数分布大致对称。偏态分布是指频数分布不对称,集中位置偏向一侧。若集中位置偏向数值小的一侧,称为正(右)偏态分布;集中位置偏向数值大的一侧,称为负(左)偏态分布。与正态分布相对而言,偏态分布有两个特点:

  1. 左右不对称(即所谓偏态);
  2. 当样本增大时,其均数趋向正态分布
df[var].kurtosis(),df[var].skew()

在pandas中有skew()方法来表示偏态,大于0右偏,小于0左偏。在pandas中使用kurtosis()方法来表示峰度,kurtosis>0,尖峰态(leptokurtic),数据集比较分散,极端数值较多。kurtosis<0,低峰态(platykurtic),数据集比较集中,两侧的数据比较少

3.如何调整原始分布趋于正态分布?

  数据右偏的话可以对所有数据取对数、取平方根等,它的原理是因为这样的变换的导数是逐渐减小的,也就是说它的增速逐渐减缓,所以就可以把大的数据向左移,使数据接近正态分布。 如果左偏的话可以取相反数转化为右偏的情况。
通常来说,可以尝试一下几种方法:
如果数据高度偏态,则使用对数变换

  1. 对数变换 即将原始数据X的对数值作为新的分布数据:

    x = np.log(x)
    

    当原始数据中有小值及零时,

    x = np.log1p(x)
    

如果数据轻度偏态,则使用平方根变换

  1. 平方根变换 即将原始数据X的平方根作为新的分布数据

    x = np.sqrt(x)
    

如果数据的两端波动较大,则使用倒数变换

  1. 倒数变换 即将原始数据X的倒数作为新的分析数据

    x = 1 / x
    

平方根反正弦变换
方差分析的一个重要前提就是数据要符合正态分布,但是如果我们分析的数据是比值的时候,因为比值一般都不符合正态分布,所以为了使数据符合方差分析的要求,我们会对百分比的平方根取反正弦变化以改善分布的正态性,获得一个比较一致的方差。

  1. 平方根反正弦变换 即将原始数据X的平方根反正弦值作为新的分析数据

对于双峰偏态数据,可以参考下面一篇文章。

双峰偏态数据如何转变为正态分布数据
它好像仅限双峰,我试了一下三峰
转换前

转换后

代码

dfg = QuantileTransformer(n_quantiles = 300,output_distribution='normal', random_state=0).fit_transform(df['GarageArea'].values.reshape(-1,1))
dfg = pd.Series(dfg.flatten())
# 画直方图与连续概率估计,fit参数传入norm-标准正态分布
sns.distplot(dfg, fit=norm);
fig = plt.figure()
# probplot,样本数据相对于指定的理论分布(默认为正态分布)的分位数的概率。probplot可以计算出数据的最佳拟合线。这个图是用来看线性度的
res = probplot(dfg, plot=plt)

如果对您有帮助,麻烦点赞关注,这真的对我很重要!!!如果需要互关,请评论留言!


数据预处理—4.为什么要趋近于正态分布?详解相关推荐

  1. [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. 机器学习:数据预处理之独热编码(One-Hot)详解

    一. 什么是独热编码? ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这 ...

  3. 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)...

    不多说,直接上干货! 这个很简单,在集群机器里,选择就是了,本来自带就有Impala的. 扩展博客 给Ambari集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解) 欢迎大 ...

  4. dapper mysql 预处理_.Net Core中Dapper的使用详解

    Dapper 是一个轻量级ORM框架,在项目中如果对性能比较看中,Dapper是一个不错的选择.接下来我们就来看看如何在项目中使用Dapper. 1.安装Dapper 这里直接使用Nuget安装. 安 ...

  5. 大数据WEB阶段(八)Tomcat服务器安装与详解、HTTP协议详解

    Tomcat 一. 服务器 动态web资源运行需要服务器环境 客户端发送请求到服务器 , 服务器调用动态web资源 Servlet容器 . web容器 .服务器 Servlet容器 java中的动态资 ...

  6. 海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解

    前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库.Tablestore在阿里云官网上有各种文档介绍,也发布了很多场景案例文章,这些文 ...

  7. mysql数据库主主_MySQL主主复制(图文详解)

    MySQL主主复制(图文详解) 发布时间:2020-07-12 23:10:25 来源:51CTO 阅读:218 作者:BonnieJason 一.实现原理 主主复制即在两台MySQL主机内都可以变更 ...

  8. hbase 二进制数据写入_分布式数据库HBase的架构设计详解(有彩蛋)

    原标题:分布式数据库HBase的架构设计详解(有彩蛋) 本文根据DBAplus社群第99期线上分享整理而成,文末还有好书送哦~ 讲师介绍 陈鸿威 云财经大数据CTO 曾任百度高级工程师,现主持设计开发 ...

  9. 阿里云大数据网络增强型实例规格族d1ne配置性能详解

    阿里云大数据网络增强型实例规格族d1ne配置性能CPU.内存.适用场景.d1ne实例规格族,InstanceTypes分享大数据网络增强型实例规格族d1ne实例详解: 大数据网络增强型实例规格族d1n ...

  10. python读取json格式文件大量数据,以及python字典和列表嵌套用法详解

    1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...

最新文章

  1. python Tkinter学习笔记 menu控件 02
  2. [新手学Go]GO语言闭包的使用
  3. Django层级模型定义及序列化嵌套的方法
  4. Django环境搭建
  5. java 获取js变量类型_JavaScript 的数据类型及其检测
  6. 转: oracle中schema指的是什么?
  7. python能自学成功吗-自学入门Python能学会吗?
  8. js设计模式 -- 单例模式
  9. Eclipse如何使用git上传项目到G码云
  10. 玩游戏提示计算机内存不足,Win10玩吃鸡游戏提示“虚拟内存不足”怎么办?
  11. 文档透明加密底层安全机制
  12. 微信小程序之文本换行居中
  13. 基于EEG信号与面部表情的连续情绪识别
  14. IxChariot测试网络设备性能
  15. Linux下如何彻底删除用户
  16. 向量的外积(outer product)与克罗内克积(Kronecker)
  17. 计算机c语言运算符号取整,c语言取整(c语言四舍五入取整)
  18. office 365 excel 遇到问题 需要修复
  19. 哪个直播平台更适合做企业会议直播?
  20. myeclipse把选中的字母转换成大写或者大写转小写

热门文章

  1. 【c++leetcode】判断一个数是否是2的幂、3的幂、4的幂
  2. 晶体(谐振器)震荡电路与参数
  3. 将对象序列化和反序列化
  4. 自定义Android TabHost的背景及文字
  5. 存储过程中“ 警告: 聚合或其他 SET 操作消除了 Null 值” 导致错误的解决
  6. 局域网从另一台电脑copy文件(Linux系统下)
  7. socket模块--TCP和UDP协议下的基础网络通话
  8. 机器学习的几种主要学习方法
  9. 本地存储Sqlite的用法:
  10. 2015,鬼王Xun和GGL比赛,带给我们无尽的欢乐