2024年9月7日星期六

统计变换

 下面的代码将会构建一个条形图,显示diamonds数据集中按照cut变量分组的各种钻石的总数量。

ggplot(data = diamonds) + 
 geom_bar(mapping = aes(x = cut))

条形图显示,高质量切割钻石的数量要比低质量切割钻石的数量多:条形图的x轴显示的是cut,这是diamonds数据集中的一个变量。y轴显示的count,但count不是diamonds中的变量!

有一些图形可以根据计算出的新数据绘制图形:

  • 条形图、直方图和频率多边形图可以对数据进行分箱,然后绘制出分箱数量和落在每个分箱的数据点的数量。

  • 平滑曲线会为数据拟合一个模型,然后绘制出模型预测值。

  • 箱线图可以计算出数据分布的多种摘要统计量,并显示一个特殊形式的箱体。

绘图时用来计算新数据的算法成为统计变换(statistical transformation,stat)

通过查看stat参数的默认值,可以知道集合对象函数施用了哪种统计变换。

通常来说,几何对象函数和统计变换函数可以互相使用。例如,可以使用stat_count()替换上述代码中的geom_bar()来重新生成条形图:

ggplot(data = diamonds) + 
 stat_count(mapping = aes(x = cut))

可以这样做的原因是:

每个几何对象函数都有一个默认统计变换;

每个统计变换函数都有一个默认几何对象。

想要显示使用摸偶中统计变换的3个原因如下:

  • 覆盖默认的统计变化

library(tibble)
demo <- tribble(
 ~a, ~b,
 "bar_1", 20,
 "bar_2", 30,
 "bar_3", 40,
)
ggplot(data = demo) +
 geom_bar(
   mapping = aes(x = a, y = b), stat = "identity"
)

在上述代码中,将geom_bar()函数的统计变换从计数(默认值)修改为标识,此时,y轴变量的初始值被映射为条形的高度。

  • 想要覆盖从统计变换生成的变量到图形属性的默认映射。

#..prop..是ggplot2中的一个内建函数,用于计算每个组的占比(即每个类别的计数除以总数)
# group = 1,指定了分组变量为1,所有的条形被归为同一组,因此,不会对条形进行分组显示。
ggplot(data = diamonds) +
 geom_bar(
   mapping = aes(
     x = cut, y = ..prop.., group = 1
  )
)
  • 想要在代码中强调统计变换

没有评论: