美文网首页
[8]《R数据科学》统计变换

[8]《R数据科学》统计变换

作者: 灰常不错 | 来源:发表于2020-10-29 20:58 被阅读0次

    心灵鸡汤:吾日三省吾身,上午学到了什么?中午学到了什么?晚上学到了什么?加油吧!少年!

    本次解答上一篇文章的画图:

    ggplot(data = mpg,mapping=aes(x=displ,y=hwy))+geom_point()+geom_smooth(se=FALSE)
    
    ggplot(data = mpg,mapping=aes(x=displ,y=hwy,group=drv))+geom_point()+geom_smooth(se=FALSE)
    
    ggplot(data = mpg,mapping=aes(x=displ,y=hwy,color=drv))+geom_point()+geom_smooth(se=FALSE)
    
    ggplot(data = mpg,mapping=aes(x=displ,y=hwy))+geom_point(aes(x=displ,y=hwy,color=drv))+geom_smooth(se = FALSE)
    
    ggplot(data = mpg)+geom_point(aes(x=displ,y=hwy,color=drv))+geom_smooth(aes(x=displ,y=hwy,linetype=drv),se = FALSE)
    
    ggplot(data = mpg)+geom_point(aes(x=displ,y=hwy,color=drv))
    

    接下来我们看一下条形图。条形图虽然简单,但很有意思,因为它可以揭示出图形的一些微妙信息。
    geom_bar()函数就可以绘制基本的条形图。我们采用ggplot2的内置数据集diamonds来画图,包含大约54000颗钻石的信息,每颗钻石具有price、carat、color、clarity和cut变量。

    ggplot(data = diamonds)+geom_bar(mapping = aes(x=cut))
    
    image.png
    条形图显示高质量切割钻石的数量要比低质量切割钻石的数量多

    统计变换

    条形图x轴显示的是cut,这是diamonds数据集中的一个变量,但y轴的count并不是diamonds中的变量!那么count从哪来的呢?这需要涉及到一种计算新数据的算法称为stat(统计变换)。
    统计变换分为三步:

    1. geom_bar()从diamonds数据集中开始处理。
    2. geom_bar()使用“数量”统计变换对数据进行转换,返回切割值和计数的数据集。
    3. geom_bar()使用变换后的数据进行绘图,cut映射到x轴,count映射到y轴。

    几何对象函数

    通常来说,几何对象函数和统计变换函数可以互换使用。例如,你可以使用stat_count()替换为geom_bar()来重新生成前面那张图:

    ggplot(data = diamonds)+stat_count(mapping = aes(x = cut))
    
    image.png
    可以这么做的原因是,每个几何对象都有一个默认的统计变换,每个统计变换函数都有一个默认的几何对象,而geom_bar()使用stat_count()函数进行统计变换。

    修改默认的统计变换

    比如我们将geom_bar()函数的统计变换从计数(默认值)修改为标识。
    下面介绍赋值 <- 和数据框tibble()
    将三个对象的数据框数据赋值给deom

    deom <- tribble(
           ~a, ~b,
    + "bar_1", 20,
    + "bar_2", 30,
    + "bar_3", 40
    + )
    

    这里吐槽一句,《R数据科学》在印刷的时候将tribble印成了tibble,我不会买了盗版吧QAQ。tribble是transposed tibble(转置tibble)的缩写,顾名思义,它可以以易读的方式对少量数据转置和布局。
    接着我们把统计变换改为标识:

    ggplot(data = deom)+geom_bar(mapping = aes(x=a,y=b),stat = "identity")
    
    image.png

    把计数类型改为比例类型的条形图

    ggplot(data = diamonds)+geom_bar(mapping=aes(x=cut,y=..prop..,group=1))
    
    image.png

    使用stat_summary()函数做摘要统计

    ggplot(data = diamonds)+stat_summary(mapping = aes(x=cut,y=depth),fun.ymin=min,fun.ymax=max,fun.y=median)
    
    image.png
    这里我们摘要的是中位数,ggplot2提供了20多个统计变换。我们可以按照通用的方式进行帮助查询,比如?stat_bin。当然你也可以用ggplot2速查表查看全部的统计变换。
    image.png
    image.png
    图片来源:https://wenku.baidu.com/view/82b87153da38376bae1fae7d.html#

    相关文章

      网友评论

          本文标题:[8]《R数据科学》统计变换

          本文链接:https://www.haomeiwen.com/subject/cbmhvktx.html