这篇文章介绍一个R包,名为{quartets},可以帮助我们更直观的理解为什么做统计分析必须要配上图片!
首先安装和载入相关R包:
install.packages("quartets")
library(quartets)
# 下面的R包如果没有安装,需安装
library(ggplot2)
library(dplyr)
library(flextable)
R包get!
将使用到这个R包带有的数据集,名为anscombe_quartet,查看下概况:
summary(anscombe_quartet)
其中x和y为两个连续变量,dataset包含四个不同的组别(数据集),这个待会再介绍。
一般来说,拿到数据之后,需要做统计描述,查看常见的统计量。下面按照dataset为组别进行统计描述,代码如下:
anscombe_quartet %>%
group_by(dataset) %>%
summarize(mean_x = mean(x),
var_x = var(x),
mean_y = mean(y),
var_y = var(y),
cor_xy = cor(x, y)) %>%
flextable()
从输出结果的第一列dataset可知,这个分组变量所包含的组别一共为4个(分别为linear, nonlinear, outlier和leverage)。
从上表可知,在每一个数据集中(每一行中),x的均数,x的方差,y的均数,y的方差,以及x和y的相关系数几乎是相等的。
白纸黑字,铁证如山!
然后,我们就认为这四组数据中的x和y是一样的!
事实真的是这样吗?!
答案是:NO!
真相可以用作图的形式揭晓,代码如下:
ggplot(anscombe_quartet, aes(x, y)) +
geom_point() +
geom_smooth(method = "lm") +
facet_wrap(~ dataset)
令人震惊!
相同的统计描述(上面的表格),却呈现出完全不一样的模式,这将会对后续的建模产生重大的影响!
如果这个例子还不能说服你,请看下面这个例子(更加戏剧化!)。
请出数据集datasaurus_dozen,查看下概况:
summary(datasaurus_dozen)
这里的dataset也是一个分类变量,包含13个水平。
下面,按组别的进行统计描述,代码如下:
datasaurus_dozen %>%
group_by(dataset) %>%
summarize(mean_x = mean(x),
var_x = var(x),
mean_y = mean(y),
var_y = var(y),
cor_xy = cor(x, y)) %>%
flextable()
在不同的组别中(13个组别),x的均数,x的方差,y的均数,y的方差,以及x和y之间的相关系数,几乎也是一致的!
下面,画出按照13个水平进行分组的x-y散点图,代码如下:
ggplot(datasaurus_dozen, aes(x, y, color = dataset)) +
geom_point() +
geom_smooth(method = "lm") +
facet_wrap(~ dataset) +
theme(legend.position = "none")
!!!
不管你服不服,反正我是服了。
如果有读者想要画出其中的霸王龙作为收藏,时刻警示自己作图的重要性,可以这么做:
ggplot(datasaurus_dozen[datasaurus_dozen$dataset == "dino",], aes(x, y)) +
geom_point(color = "purple") +
theme_classic()
一条紫色的霸王龙,请收下!
好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人!
参考文献
https://cran.r-project.org/web/packages/quartets/index.html
公众号的线上课程
1. 《R语言和统计新手课程》
2. 《回归:从入门到进阶》
统计咨询
公众号核心成员的成果发表
公众号核心成员担任SCI杂志Associate Editor!
《Frontiers in Neuroscience, Frontiers in Neurology and Frontiers in Psychiatry杂志的神经退行性病变板块》
▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
▌我们致力于让R语言和统计变得简单!