前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R数据科学|5.3课后习题解答

R数据科学|5.3课后习题解答

作者头像
庄闪闪
发布2021-04-09 11:20:19
3.2K0
发布2021-04-09 11:20:19
举报

5.3.4 习题解答

问题一

研究 x、y 和 z 变量在 diamonds 数据集中的分布。你能发现什么?思考一下,对于一条钻石数据,如何确定表示长、宽和高的变量?

解答

  • 首先,计算这些变量的汇总统计信息并绘制其分布。
代码语言:javascript
复制
summary(select(diamonds, x, y, z))
#>        x               y              z       
#>  Min.   : 0.00   Min.   : 0.0   Min.   : 0.0  
#>  1st Qu.: 4.71   1st Qu.: 4.7   1st Qu.: 2.9  
#>  Median : 5.70   Median : 5.7   Median : 3.5  
#>  Mean   : 5.73   Mean   : 5.7   Mean   : 3.5  
#>  3rd Qu.: 6.54   3rd Qu.: 6.5   3rd Qu.: 4.0  
#>  Max.   :10.74   Max.   :58.9   Max.   :31.8

ggplot(diamonds) +
  geom_histogram(mapping = aes(x = x), binwidth = 0.01)
  
ggplot(diamonds) +
  geom_histogram(mapping = aes(x = y), binwidth = 0.01)
  
ggplot(diamonds) +
  geom_histogram(mapping = aes(x = z), binwidth = 0.01) 

从分布中可以看出几个特征:

  • x 比 y 和 z 大
  • 存在离群点
  • 三个变量都是右偏分布

结论:x是长度,y是宽度,z是深度。因为长度总是小于宽度,否则长度就叫做宽度。通过搜索钻石长度、宽度和深度的定义。深度可以表示为钻石的长度/宽度的百分比,这意味着它应该小于长度和宽度。

问题二

研究 price 的分布,你能发现不寻常或令人惊奇的事情吗?(提示:仔细考虑一下binwidth 参数,并确定试验了足够多的取值。)

解答

改变binwidth参数就可以查看不同范围内的变量分布啦,下面是几个示例,根据画的图可以找到很多有趣的信息哟,赶紧试试吧!

代码语言:javascript
复制
ggplot(filter(diamonds, price < 2500), aes(x = price)) +
geom_histogram(binwidth = 10, center = 0)

ggplot(filter(diamonds), aes(x = price)) +
  geom_histogram(binwidth = 100, center = 0)
  
diamonds %>%
  mutate(ending = price %% 10) %>%
  ggplot(aes(x = ending)) +
  geom_histogram(binwidth = 1, center = 0)
  
diamonds %>%
  mutate(ending = price %% 100) %>%
  ggplot(aes(x = ending)) +
  geom_histogram(binwidth = 1) 

问题三

0.99 克拉的钻石有多少?1 克拉的钻石有多少?造成这种区别的原因是什么?

解答

代码语言:javascript
复制
diamonds %>%
  filter(carat >= 0.99, carat <= 1) %>%
  count(carat)
#> # A tibble: 2 x 2
#>   carat     n
#>   <dbl> <int>
#> 1  0.99    23
#> 2  1     1558

问题四

比较并对比 coord_cartesina() 和 xlim()/ylim() 在放大直方图时的功能。如果不设置binwidth 参数,会发生什么情况?如果将直方图放大到只显示一半的条形,那么又会发生什么情况?

解答

在计算和绘制图形后,coord_cartesian()函数将放大由限制指定的区域。因为已经计算了直方图容器,所以它不受影响。

代码语言:javascript
复制
ggplot(diamonds) +
  geom_histogram(mapping = aes(x = price)) +
  coord_cartesian(xlim = c(100, 5000), ylim = c(0, 3000))
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

但是,在计算与直方图相关的统计数据之前xlim()ylim()函数会影响操作。因此,在计算箱子宽度和计数之前,将删除x和y界限之外的值。这可能会影响直方图的外观。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5.3.4 习题解答
    • 问题一
      • 解答
    • 问题二
      • 解答
    • 问题三
      • 解答
    • 问题四
      • 解答
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档