查看原文
其他

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

我才是赵西西 庄闪闪的R语言手册 2023-05-11

5.3.4 习题解答

问题一

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

解答

  • 首先,计算这些变量的汇总统计信息并绘制其分布。
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参数就可以查看不同范围内的变量分布啦,下面是几个示例,根据画的图可以找到很多有趣的信息哟,赶紧试试吧!

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 克拉的钻石有多少?造成这种区别的原因是什么?

解答

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()函数将放大由限制指定的区域。因为已经计算了直方图容器,所以它不受影响。

ggplot(diamonds) +
  geom_histogram(mapping = aes(x = price)) +
  coord_cartesian(xlim = c(1005000), ylim = c(03000))
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

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



往期推荐


R数据科学|3.7内容介绍及习题解答

R数据科学|3.4内容介绍及习题解答

R数据科学|3.6习题解答

R数据科学|3.6内容介绍

R数据科学|3.5内容介绍及习题解答

R数据科学|3.3课后习题

R数据科学|3.2.4课后习题


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存