如何在R中计算五数汇总统计的方法

345 阅读6分钟

在这个简短的教程中,你将学习如何在R中找到五数汇总统计。具体来说,在这篇文章中我们将计算。

  1. 最小值
  2. 下铰链
  3. 中位数
  4. 上铰链
  5. 最大值

现在,我们还将使用boxplot来可视化这五个数字的汇总统计。首先,我们将学习如何计算这五个汇总统计中的每一个,然后学习如何使用一个单一的函数来直接获得所有的统计。

五位数汇总统计

要求

为了学习这个R教程,你将需要安装readxl和ggplot2。安装这些到r包的最简单的方法是使用install.packages() 函数。

install.packages(c("readxl", "ggplot"))

Code language: R (r)

注意,这两个包都是Tidyverse的一部分。这意味着你在安装Tidyverse的时候会得到它们,以及很多其他的包。例如,你可以使用dplyr包来重命名列在R中删除列合并两列,以及选择列,也是如此。

在进入使用R寻找五数汇总统计的6个步骤之前,我们将得到一些问题的答案,但是。

什么是R语言中的五数汇总?

正如你可能已经理解的那样,五数汇总统计是:1)最小值,2)下铰链,3)中位数,4)上铰链,和5)最大值。五数汇总是探索你的数据集的一种快速方法。

如何在R中找到五数总结?

在R中找到五数汇总统计的绝对最简单的方法是使用fivenum()函数。例如,如果你有一个名为 "A "的数字向量,你可以运行以下代码:fivenum(A)以获得五个数字汇总。

现在我们知道什么是五数汇总,我们可以继续学习计算五数汇总统计的简单步骤。

在R中查找五数汇总统计-6个简单的步骤

在本节中,我们准备通过6个简单的步骤,利用R统计环境计算五数统计。回顾一下:第一步是导入数据集(例如,从xlsx文件中导入)。第二,我们计算最小值,然后,在第三步,得到下铰链。在第四步,我们得到中位数。在第五步中,我们得到上铰链,然后,在第六步,也就是最后一步,我们得到最大值。

第一步:导入你的数据

下面是如何使用readxl包在R中读取一个.xslx文件

library(readxl)
dataf <- read_excel("play_data.xlsx", sheet = "play_data",
                    col_types = c("skip", "numeric", 
                                  "text","text", "numeric",
                                  "numeric", "numeric"))

head(dataf)

Code language: JavaScript (javascript)

我们可以看到,在这个例子的数据集中,只有一列含有数字数据(即RT列)。在接下来的步骤中,我们将取这一列的最小值。

第2步:获取最小值

下面是如何在R中获取一列的最小值。

min.rt <- min(dataf$RT, na.rm = TRUE)

Code language: JavaScript (javascript)

请注意我们是如何使用min() ,并将数据框架和列(即RT)作为第一个参数的函数。第二个参数我们设置为TRUE,因为我们在列中有一些缺失的值。最后,我们用R中的$运算符来选择一个列。另一方面,如果我们使用 dplyr,我们可以使用select()函数。也就是说,让我们继续前进,获得最大值。

第3步:获取下限铰链

下面是我们如何获得下铰链。

# Lower  Hinge:
RT <- sort(dataf$RT)
lower.rt <- RT[1:round(length(RT)/2)] 
lower.h.rt <- median(lower.rt)

Code language: PHP (php)

注意,我们是如何开始只选择响应时间(即RT列)并对数值进行排序的。 其次,我们得到响应时间的下半部分,然后,我们通过计算这个向量的中位数得到下铰链。

第四步:计算中位数

为了计算中位数,我们可以使用median() 函数。

# Median
median.rt <- median(dataf$RT, na.rm = TRUE)

Code language: PHP (php)

同样,我们使用了na.rm参数(TRUE),因为在数据集中有一些缺失值。当然,如果你的数据没有任何缺失值,你可以不使用这个参数。

第五步:获取上铰链

下面是如何获得上铰链的方法。

# Upper Hinge
RT <- sort(dataf$RT)
upper.rt <- RT[round((length(RT)/2)+1):length(RT)] 
upper.h.rt <- median(upper.rt)

Code language: PHP (php)

类似于我们得到下铰链的方法,我们首先对RT列进行排序。然后,我们得到上半部分并计算其中位数。

第6步:获取最大值

我们可以通过使用max() 函数得到最大值。

# Max
max.rt <- max(dataf$RT, na.rm = TRUE)

Code language: PHP (php)

同样,我们使用美元符号操作符选择了RT列,并删除了缺失的值。下面是输出结果。

5 number summary in R

请注意,当样本量为奇数时,下限和上限的铰链与第一和第三四分之一相同。如果是这种情况,获得下限和上限的一个更简单的方法是使用quantile()函数。然而,在上面的例子数据中,我们有相等数量的观察值(抛开缺失值)。 5-Nummer汇总统计表

在这一节中,我们要把所有的东西放在一起,这样我们就可以得到一个比较漂亮的输出。

fivenumber <- cbind(min.rt, lower.h.rt,
                    median.rt, upper.h.rt,
                    max.rt)
colnames(fivenumber) <- c("Min", "Lower-hinge",
                       "Median", "Upper-hinge", "Max")

fivenumber

Code language: CSS (css)

正如你在上面的代码块中所看到的,我们用cbind() 函数将不同的对象合并成一个。然后,我们给合并后的对象起了更好的列名。在下一节中,我们将看到已经有一个函数可以在R中计算五数统计,基本上只需一行代码。

five number summary statistics in R

用fivenum()函数在R中查找五数汇总统计数字

下面是如何用fivenum() 函数在R中找到五数汇总统计。

# Five summary with R's fivenum()
 fivenum(dataf$RT)

Code language: PHP (php)

相当简单。我们只是选择了包含我们数据的那一列。同样,我们使用$运算符来获得RT列,并对其使用fivenum() 函数。请注意,fivenum() 函数在默认情况下会删除任何缺失值。

正如你在上面的输出中所看到的,我们没有得到任何列的名称,但是五个数字的汇总统计被排序如下:最小、下铰链、中位数、上铰链和最大。我们可以看到,我们得到的数值与6步法中的相同。

five number summary statatistics in R

在下一节中,我们将在R中创建一个显示五数汇总统计的boxplot。

用Bowxplot可视化5个数字的汇总统计

下面是我们如何在R语言中用一个博列表来可视化Tukey的5个数字汇总统计。

library(ggplot2)

df <- data.frame(
  x = 1,
  ymin = fivenumber[1],
  Lower = fivenumber[2],
  Median = fivenumber[3],
  Upper = fivenumber[4],
  ymax = fivenumber[5]
)

ggplot(df, aes(x)) +
  geom_boxplot(aes(ymin=ymin, lower=Lower, 
                   middle=Median, upper=Upper, ymax=ymax),
               stat = "identity") +
  scale_y_continuous(breaks=seq(0.2,0.8, 0.05)) +
  # Style the plot bit
  theme_bw() +
  theme(panel.grid.major = element_blank(),
       panel.grid.minor = element_blank()
  ) +
  # After this is just to annotate the plot and can be removed
  # Min
  geom_segment(aes(x = 1, y = ymin, xend = 0.95, yend = ymin), data = df) +
  annotate("text", x = 0.93, y = df$ymin, label = "Min") + 
  # Lower-hinge
  geom_segment(aes(x = 0.60, y = Lower, xend = 0.60, yend = Lower-0.05), data = df) +
  annotate("text", x = 0.60, y = df$Lower-0.06, label = "Lower-hinge") + 
  # Median
  annotate("text", x = 1, y = df$Median + .012, label = "Median") +
  # Upper-hinge
  geom_segment(aes(x = 1.40, y = Upper, xend = 1.40, yend = Upper+0.05), data = df) +
  annotate("text", x = 1.40, y = df$Upper+0.06, label = "Upper-hinge") + 
  # Max
  geom_segment(aes(x = 1, y = ymax, xend = 1.05, yend = ymax), data = df) +
  annotate("text", x = 1.07, y = df$ymax, label = "Max") 

Code language: R (r)

在上面的例子中,我们没有深入研究细节。然而,我们确实从我们创建的第一个对象中创建了一个数据框架,然后我们使用ggplot()ggplot_boxplot() 来创建boxplot。请注意我们是如何使用aes() 函数并将在数据框架中发现的不同值设置为参数的。这里ymin和ymax分别是最小值和最大值。注意我们还改变了y轴上的刻度数。这里我们用seq()函数来生成一个数字序列。该图有些风格,画段(线)和添加文本的代码可以跳过,当然,如果你只想在R中对五个汇总统计进行可视化。

boxplot of the 5 number summary statistics calculated with R

5个数字的汇总统计的Bowxplot

总结

在这篇文章中,你已经学会了在R中获得五个汇总统计的2种方法。1)最小值,2)下铰链,3)中位数,4)上铰链,以及5)最大值。在第一种方法中,我们分别计算了这些汇总统计量中的每一个。此外,我们还学会了如何使用方便的fivenum()函数来获得相同的值。在最后一节中,我们从这五个汇总统计中创建了一个boxplot。希望你能学到有价值的东西。如果你做到了,请在你的项目和报告中链接到这篇博文,在你的社交媒体账户上分享,或者在下面留言。