第四讲 R-描述性统计分析
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
在上一讲中,我们介绍了第三讲 R编程基础-矩阵和数据框 (戳这里即可跳转)。到现在为止,大家已经学完了R语言的基础知识,马上就开始进阶地学习一些R语言相关的统计学技能了。
1. 将数据导入R
避免名称带有空格。
好的列名:patient_age或patient.age。
列名错误:patient age。
避免使用带有特殊符号的名称:?,$,*,+,#,(,),-,/,},{,|,>,<等。只能使用下划线。
避免以数字开头的变量名。请改用字母。
好的列名称:patient_1st_meal或x1st_meal。
列名错误:1st_male
列名必须是唯一的。不允许重复的名称。
R区分大小写。这意味着名称不同于名称或名称。
避免数据中出现空白行。
删除文件中的任何评论。
用NA替换缺少的值(不可用)。
如果你有包含日期的列,请使用四位数格式。
格式良好:20160101。
格式错误:01/01/16
# 对于.txt文件
my_data <- read.delim(file.choose())
# 对于.csv文件
my_data <- read.csv(file.choose())
在这里,我们将使用名为iris的内置R数据集。
# 导入R内自带的iris数据集
library(datasets)
data(iris)
# 将数据存储在变量my_data中
my_data <- iris
你可以使用head()和tails()函数检查数据,这将分别显示数据的第一部分和最后一部分。
# 显示前六行内容
head(my_data, 6)
输出结果如下
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
2. 常用的描述性统计的R函数
一些用于计算描述性统计量的R函数:
3. 单个组的描述性统计
粗略地说,集中趋势衡量的是数据的“平均”或“中间”。最常用的衡量指标包括:
平均值:平均值。它对异常值很敏感。
中位数:中间值。这是一个强有力的替代手段。
众数:最频繁出现的值
在R中
函数mean()和median()可以分别计算平均值和中位数;
# 计算平均值
mean(my_data$Sepal.Length)
[1] 5.843333
# 计算中位数
median(my_data$Sepal.Length)
[1] 5.8
可变性度量给出了数据“分散”的程度。
极值:最小值和最大值
范围:最大值减去最小值
# 计算最小值
min(my_data$Sepal.Length)
[1] 4.3
# 计算最大值
max(my_data$Sepal.Length)
[1] 7.9
# 范围
range(my_data$Sepal.Length)
[1] 4.3 7.9
四分位数将数据均匀分为4部分。四分位数间距(IQR):对应于第一和第三四分位数之间的差异-有时被用作标准偏差的可靠替代方案。
R功能:
quantile(x, probs = seq(0, 1, 0.25))
x:需要样本分位数的数值向量。
probs:在[0,1]之间的概率数值向量。
例:
quantile(my_data$Sepal.Length)
0% 25% 50% 75% 100%
4.3 5.1 5.8 6.4 7.9
# 计算十分位数(0.1,0.2,0.3,…,0.9):
quantile(my_data$Sepal.Length, seq(0, 1, 0.1))
# 计算四分位间距:
IQR(my_data$Sepal.Length)
[1] 1.3
方差表示与均值的平均平方差之和。标准差是方差的平方根。它测量数据中数值与平均值的平均偏差。
# 计算方差
var(my_data$Sepal.Length)
# 计算标准差
sd(my_data$Sepal.Length)
绝对中位数(Median absolute deviation,MAD):数据中值与中值的偏差,即先计算出数据与它们的中位数之间的残差(偏差),MAD就是这些偏差的绝对值的中位数。
# 计算中位数
median(my_data$Sepal.Length)
# 计算绝对中位数
mad(my_data$Sepal.Length)
统计描述方式的选择
范围。它不经常使用,因为它对异常值非常敏感。
四分位间距。对于异常值,它非常强大。它多与中位数结合使用。
方差。完全无法解释的,因为它不使用与数据相同的单位。除了用作数学工具外,很少被使用。
标准偏差。方差的平方根。它以与数据相同的单位表示。在均值是集中趋势的分布(多指正态分布)的情况下,通常使用标准偏差。
绝对中位数。对于具有离群值的数据,这是一种估算标准偏差的可靠方法。但是不经常使用。
总而言之,四分位间距和标准差是用于报告数据变异性的两种最常用的度量。
函数summary()可用于显示一个变量或整个数据框的多个统计变量概况。
单个变量的概况。
返回六个值:平均值,中位数,第25和,75四分位数,最小值和最大值。
summary(my_data$Sepal.Length)
输出结果如下:
Min. 1st Qu. Median Mean 3rd Qu. Max.
4.300 5.100 5.800 5.843 6.400 7.900
在这种情况下,函数summary()将自动应用于每列。结果的格式取决于列中包含的数据类型。例如:
如果列是数字变量,则返回均值,中位数,最小值,最大值和四分位数。
如果该列是一个因素变量(factor),则返回每个组中的观察数。
summary(my_data, digits = 1)
输出结果如下:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4 Min. :2 Min. :1 Min. :0.1 setosa :50
1st Qu.:5 1st Qu.:3 1st Qu.:2 1st Qu.:0.3 versicolor:50
Median :6 Median :3 Median :4 Median :1.3 virginica :50
Mean :6 Mean :3 Mean :4 Mean :1.2
3rd Qu.:6 3rd Qu.:3 3rd Qu.:5 3rd Qu.:1.8
Max. :8 Max. :4 Max. :7 Max. :2.5
当数据包含缺失值时,即使仅缺少一个值,某些R函数也会返回错误或NA。
例如,即使向量中仅丢失一个值,mean()函数也将返回NA。使用参数na.rm = TRUE可以避免这种情况,该参数告诉函数在计算之前删除所有NA。使用均值函数的示例如下:
mean(my_data$Sepal.Length, na.rm = TRUE)
好了,本期讲解就先到这里。
在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。
提前打个预告,接下来我们要正式开始学习R语言的统计学技能啦,下一期将会更新“R的描述性统计分析”。喜欢的同学们快快关注起来吧。
第二讲 R-编程基础-运算、数据类型和向量等基本介绍
第三讲 R编程基础-矩阵和数据框
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」,更多科研干货在等你!
麻烦点一下在看再走呗