查看原文
其他

第五讲 R-数据描述性统计分析作图

跟我学 投必得医学 2022-05-07

在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。


在上一讲中,我们介绍了第四讲 R-描述性统计分析(点我可跳转)昨天大家已经初步学习了R的统计学技能,是不是蠢蠢欲动了呢?别急,马上给大家带来新的R作图技能!


今天的更新,我们会带您学习R的基本统计学技能:数据描述性统计分析作图。


1.  将数据导入R

在这里,我们将使用名为iris的内置R数据集。

# 导入R内自带的iris数据集library(datasets)data(iris)# 将数据存储在变量my_data中my_data <- iris

2. 图形显示分布


R的描述性统计作图的方法非常多,相关的R包也很多。


小编这里以R包ggpubr为例来作图。更多ggpubr相关内容,可以查阅

https://cran.r-project.org/web/packages/ggpubr/index.html


2.1 安装和加载ggpubr
install.packages("ggpubr")
# 或者使用github内最新版本if(!require(devtools)) install.packages("devtools")devtools::install_github("kassambara/ggpubr")
# 加载ggpubr如下:library(ggpubr)Tips

如果是Mac电脑的话,可能在安装ggpubr的时候会报错:

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),

missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

在这种情况下,请进入Mac的Terminal软件,输入xcode-select –install

或者

sudo xcode-select --reset


2.2 箱式图

箱式图,是指—种描述数据分布的统计图,是表述最小值、第一四分位数、中位数、第三四分位数与最大值的一种图形方法。


在箱图中,最上方和最下方的线段分别表示数据的最大值和最小值,其中箱图的上方和下方的线段分别表示第三四分位数和第一四分位数,箱图中间的粗线段表示数据的中位数。


ggboxplot(my_data, y = "Sepal.Length", width = 0.3)


2.3 直方图

直方图,由一系列高度不等的纵向条段表示数据分布的情况。


Sepal.Length的直方图,虚线表示平均值。

gghistogram(my_data, x = "Sepal.Length", bins = 9, add = "mean")


2.4 QQ图(分位数图)

QQPlot图是用于直观验证一组数据是否来自某个分布,或者验证某两组数据是否来自同一(族)分布。


在统计学中,常用来检验数据是否来自于正态分布。


ggqqplot(my_data, x = "Sepal.Length")


3. 分组描述统计

小编这里使用dplyr包中的group_by()功能实现对my_data物种种类进行分组。并且计算:

    • 计算每组中的元素数:n()

    • 计算平均值:mean()

    • 标准差:sd()


#函数%>%用于链接操作。


# 安装及加载ddplyr:install.packages("dplyr")library(dplyr)


3. 1 分组描述统计
group_by(my_data, Species) %>%summarise(count = n(),mean = mean(Sepal.Length, na.rm = TRUE),sd = sd(Sepal.Length, na.rm = TRUE))# A tibble: 3 x 4
Species count mean sd 1 setosa 50 5.01 0.3522 versicolor 50 5.94 0.5163 virginica 50 6.59 0.6363.2 分组数据的图形
library("ggpubr")
# 根据物种分类对不同物种按不同颜色制作箱式图ggboxplot(my_data, x = "Species", y = "Sepal.Length",color = "Species",palette = c("red", "blue", "black"))

# 按种类画带状图ggstripchart(my_data, x = "Species", y = "Sepal.Length",color = "Species",palette = c("red", "blue", "black"),add = "mean_sd")

请注意,当每组的观察次数较少时,建议将带状图与箱形进行比较。


4. 频率表


频率表(或列联表)用于描述分类变量。它包含因素水平的每种组合的计数。

R函数生成表:table()


4.1 导入数据

对592名学生的头发和眼睛颜色分布进行按性别分组的图形展示:

#导入R自带数据集HairEyeColordf <- as.data.frame(HairEyeColor)hair_eye_col <- df[rep(row.names(df), df$Freq), 1:3]rownames(hair_eye_col) <- 1:nrow(hair_eye_col)head(hair_eye_col)

Hair   Eye  Sex

1 Black Brown Male

2 Black Brown Male

3 Black Brown Male

4 Black Brown Male

5 Black Brown Male

6 Black Brown Male

# hair/eye variablesHair <- hair_eye_col$HairEye <- hair_eye_col$Eye


4.2 简单频率分布:一个分类变量
# 头发颜色的计数分布table(Hair)

Hair

Black Brown   Red Blond

108   286    71   127

# 眼睛颜色的计数分布table(Eye)

Eye

Brown  Blue Hazel Green

220   215    93    64


图形:要创建图形,我们首先将表转换为数据框,可以使用table()。


df1 <- as.data.frame(table(Hair))df1

Hair Freq

1 Black  108

2 Brown  286

3   Red   71

4 Blond  127

# 用Bar图展示library(ggpubr)ggbarplot(df1, x = "Hair", y = "Freq")


4.3 两个类别变量
tbl2 <- table(Hair , Eye)tbl2

Eye

Hair    Brown Blue Hazel Green

Black    68   20    15     5

Brown   119   84    54    29

Red      26   17    14    14

Blond     7   94    10    16


图形:要作图,同理,我们首先将表转换为数据框。

df <- as.data.frame(tbl2)head(df)

Hair   Eye Freq

1 Black Brown   68

2 Brown Brown  119

3   Red Brown   26

4 Blond Brown    7

5 Black  Blue   20

6 Brown  Blue   84

# Bar图展示library(ggpubr)ggbarplot(df, x = "Hair", y = "Freq",color = "Eye",palette = c("brown", "blue", "black", "red"))

# 也可以改变条带位置ggbarplot(df, x = "Hair", y = "Freq",color = "Eye", position = position_dodge(),palette = c("brown", "blue", "black", "red"))

好了,本期讲解就先到这里。

在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。


提前打个预告,接下来我们要学习R语言的进阶统计学技能啦,下一期将会更新“用R语言进行数据正态分布检验”。喜欢的同学们快快关注起来吧。


第一讲 R-基本介绍及安装

第二讲 R-编程基础-运算、数据类型和向量等基本介绍

第三讲 R编程基础-矩阵和数据框

第四讲 R-描述性统计分析


当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。


快扫二维码撩客服,

带你进入投必得医学交流群,

让我们共同进步!

↓↓


- END -


长按二维码关注「投必得医学」,更多科研干货在等你!


麻烦点一下在看再走呗

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

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