全文概述

使用 RStudio 自带的钻石数据进行探索性数据分析练习:分析思路与作图练习

导入钻石数据集

library(ggplot2)
data('diamonds')

查看钻石数据集信息

?diamonds
summary((diamonds$color)) # 显示每个钻石颜色种类的数量情况

一览价格分布

summary(diamonds$price)# 基础预览
qplot(x=price, data = diamonds, ylab = 'Counts',color=I('black'), fill=I('#099DD9')) +scale_x_continuous(breaks = seq(0, 19000, 2000))


简单查看异常值数量

sum(diamonds$price <= 500)  # 1749:便宜钻石
# 异常值:$15000 以上的:三分位点+1.5IQR
sum(diamonds$price >= 15000)  # 1656

切工-价格情况 – 直方图

qplot(x=price, data=diamonds, binwidth=50,ylab = 'Counts') + facet_wrap(~cut)
# 因为图形有点丑陋,所以改为频率多边形图
qplot(x=price, data=diamonds, ylab = 'Counts', geom = 'freqpoly', color = cut)

结论部分

  • 01 拥有最高价格的钻石切工
  • 02 最低价格的钻石切工
  • 03 哪种切工的钻石平均价格最低

拆分 x 轴进行分析(反复筛选区间)

min(diamonds$price)  # 最低价格:326
max(diamonds$price)  # 最高价格:18823
# 细化坐标轴 price
qplot(x=price, data=diamonds, ylab = 'Counts', geom = 'freqpoly', color = cut) + scale_x_continuous(limits = c(300, 350), breaks=seq(300, 350, 2))

  # 发现最低价格在切工分类为 ideal 的钻石qplot(x=price, data=diamonds, ylab = 'Counts', geom = 'freqpoly', color = cut) + scale_x_continuous(limits = c(18800, 18823), breaks=seq(18800, 18823, 2))

# 惊奇的发现切工为 premium(优质切工) 的价格最高
by(diamonds$price, diamonds$cut, mean)
# fair:4358.758; Good:3928.864; very good:3981.76;
# premium:4584.258; ideal:3457.542
# 依然是高级切工 premium 的平均价格最高

探寻切工是如何影响每克拉的价格的

# 一览克拉数情况
summary(diamonds$carat)
#  Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
# 0.2000  0.4000  0.7000  0.7979  1.0400  5.0100
qplot(x=carat, data = diamonds, ylab = 'Counts',color=I('black'), fill=I('#F79420'))+scale_x_continuous(breaks=seq(0.2, 5.0100, 0.2))
# 发现主要还是集中在 1.2 以内,所以价格÷carat后的数值可能
# 会近似长尾分布使得许多尾部数据无法充分利用,
# 提前考虑 x 坐标轴 log10
qplot(x=price/carat, data = diamonds, xlab = 'price/carat (log10)', ylab='Counts',color=I('black'), fill=I('#CC99FF')) + scale_x_log10() # 接近正态分布

下图呈现长尾分布,需要进行坐标轴处理,否则 “尾巴” 失去意义就可惜了

处理坐标轴后

箱线图 – carat 与 price 组合

qplot(x=color, y=price,data = diamonds, geom = 'boxplot') + scale_y_continuous(breaks = seq(0, 18900, 2000)) + coord_flip()  # 箱线图转置

四分位间距 – IQR

# 颜色最优的钻石的IQR
IQR(subset(diamonds, color='D')$color)
# 对钻石的价格进行 summary 操作,得到分位点,均值,
# 极值等情况,根据中间的颜色参数来分类
by(diamonds$price, diamonds$color, summary)

由颜色表示的每克拉价格箱线图

qplot(x=color, y=price/carat, data = diamonds, geom = 'boxplot')

这里贪快没有使用 ggplot 的详细作图而是使用 qplot 简易作图,所以暂时没有颜色,若使用 ggplot,可以直接根据参数 variable 自动填充和谐的颜色

克拉频率多边形

summary(diamonds$carat)
# x:重量;y:占比
qplot(x=carat, y=..count../sum(..count..),data = diamonds, binwidth=0.2, ylab = 'probability',geom = 'freqpoly') + scale_x_continuous(breaks = seq(0.2, 5.01, 0.2))

养成 summary 一下看一下概要再画图是一个不错的习惯。

R语言数据分析 -- 探索性数据分析基础练习相关推荐

  1. R语言之探索性数据分析篇

    转载自:http://blog.csdn.net/lilanfeng1991/article/details/18565955 探索性数据分析(Exploratory Data Analysis,ED ...

  2. R语言进行探索性数据分析以确定影响保险公司为医疗事故诉讼支付的索赔金额的因素

    医疗事故诉讼 进行探索性数据分析,以确定影响保险公司为医疗事故诉讼支付的索赔金额的因素 我们分析数据集"诉讼"的第一种方法是确定样本数量.变量类型.用于验证数据清理的缩放/编码约定 ...

  3. 2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用

    跨界知识聚会系列文章,"知识是用来分享和传承的",各种会议.论坛.沙龙都是分享知识的绝佳场所.我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果.从听众到演讲 ...

  4. R语言1-面板数据分析全过程 附代码

    R语言1-面板数据分析全过程 附代码 用途 面板数据常见于计量经济学领域,本质上是一种线性回归方法.截面数据和时间序列数据的组合可以更多的反应数据情况,同时也需要克服二者都存在的问题. 数据初步处理 ...

  5. R语言学习之数据分析实战(一)

    R语言学习之数据分析实战(一) 一.线性回归 回归(regression):通常指那些用一个或多个预测变量,也称自变量或解释变量,来预测响应变量,也称为因变量.效标变量或结果变量的方法. 普通最小二乘 ...

  6. R语言数据可视化 ggplot2基础4 位置与坐标系

    R语言数据可视化 ggplot2基础4 位置与坐标系 我们继续使用ggplot2::diamonds介绍position. position = "identity" ggplot ...

  7. R语言数据可视化 ggplot2基础3 添加几何对象

    R语言数据可视化 ggplot2基础3 添加几何对象 数据的统计变换 添加几何对象 数据的统计变换 添加几何对象 上一讲我们介绍的是如何创建散点图,这一讲我们介绍如何创建其他类型的图,以及怎么创建有多 ...

  8. R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

    R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet 单图层散点图 单图层散点图的facet 单图层散点图 这一讲我们从最简单的散点图开始介绍ggplot2应用的基础,首先我们下 ...

  9. R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介

    R语言数据可视化 ggplot2基础1 ggplot2 图形的分层语法 Layered Grammar 简介 分层语法的组成(data-stat-geom-scale-coord-facet) 用分层 ...

  10. R语言进行探索性因子分析EFA、除了R原生函数(princomp函数和factanal函数)以及psych包以外的其它包:FactoMineR、FAiR包、GPArotation包、nFactors包

    R语言进行探索性因子分析EFA(exploratory factor analysis).除了R原生函数(princomp函数和factanal函数)以及psych包以外的其它包:FactoMineR ...

最新文章

  1. 基准分类模型、分类应用(多分类数字识别、疾病预测、欺诈检测)、监督学习总结
  2. np.random.seed用法
  3. oracle 考试技巧,从 TPCH 测试学习性能优化技巧之 Q14
  4. HDU1010 Tempter of the Bone DFS+剪枝
  5. 《操作系统》库函数与系统调用的区别和联系?
  6. 如何优雅地处理 EF Core 异常
  7. 马尔可夫决策过程 Markov decision process MDP, 连续时间Markov chain, CMDP(全)
  8. 空间数据引擎oracle_空间数据库oracle
  9. python469教程_从入门到精通真不难:Python最佳学习路线(视频学习教程)分享
  10. 电脑课装b专用代码_JavaScript无形装X,最为致命
  11. python中的zip函数详解_python中的 zip函数详解
  12. 埃森哲物联网报告:制造业向智能服务转型的新引擎
  13. 在MacOS系统中如何自定义屏幕保护程序?
  14. QT5编程入门教程(非常详细)
  15. FRM-10102错误解决
  16. Dependency Walker使用说明
  17. ubuntu离线中文语音识别
  18. Android查电池循环软件,这款软件,让安卓也能查看电池寿命
  19. Netty -Netty心跳检测机制案例,Netty通过WebSocket编程实现服务器和客户端长链接
  20. L1-031 到底是不是太胖了 (10分)

热门文章

  1. 一个限流电路,求大神解答
  2. 2020-2021广东省“网络安全管理与评估”竞赛培训专题-1、赛项分析与比较
  3. 优化代码 如何去除停顿词
  4. win10win11win7打印机连接共享错误0x00709打印失败错误修复工具
  5. ERROR 2002 (HY00O) : Can‘t connect to local MySQL server through socket ‘ /var/ tib/ mysqL /mysgL.s
  6. NABCD---生活日历
  7. 498.Diagonal Traverse-M
  8. 在不交智商税的情况下,如何判断一场知乎live的质量?
  9. 网易我的世界导入皮肤服务器显示吗,网易我的世界导入皮肤方法 | 手游网游页游攻略大全...
  10. RGB 转 edp 接口dp501 示范电路