R语言之数值型描述分析

简介: R语言之数值型描述分析

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。

在分析之前,先将数据集 birthwt 中的分类变量 low、race、smoke、ht 和 ui 转换成因子。

library(MASS)
data(birthwt)
str(birthwt)

options(warn=-1)
library(dplyr)
birthwt <- birthwt %>% 
  mutate(low = factor(low, labels = c("no", "yes")),
         race = factor(race, labels = c("white", "black", "other")),
         smoke = factor(smoke, labels = c("no", "yes")),
         ht = factor(ht, labels = c("no", "yes")),
         ui = factor(ui, labels = c("no", "yes")))
str(birthwt)

获取数据框里每个变量的常用统计量是一种快速探索数据集的方法,这可以通过下面的一个命令实现。

summary(birthwt)

函数 summary( )可以对每个变量进行汇总统计。对于数值型变量,如 age、lwt、plt、ftv 和 bwt,函数 summary( )给出最小值、下四分位数、中位数、均值、上四分位数和最大值;对于分类变量,如 low、race、smoke、ht 和 ui,给出的则是频数统计表。

epiDisplay 包的函数 summ( )作用于数据框可以得到另一种格式的汇总输出,它将变量按行排列,把最小值和最大值放在最后两列以方便查看数据的全距。

library(epiDisplay)
summ(birthwt)

需要注意的是,对于因子型的变量,函数 summ( )把变量的各个水平当作数值计算统计量。

数值型变量的描述性统计分析

本节将讨论数值型变量的集中趋势、离散程度和分布形状等。这里我们关注 3 个连续型变量:年龄(age)、母亲怀孕前体重(lwt)和婴儿出生时体重(bwt)。

cont.vars <- dplyr::select(birthwt, age, lwt, bwt)

接下来,先计算这 3 个变量的描述性统计量,然后按照母亲吸烟情况(smoke)分组考查描述性统计量。这里 smoke 是一个二分类变量,我们在把它转换成因子时已经为其两个水平定义了标签:“no”和“yes”。

除了上面提到的函数 summary( ),R 中还有很多用于计算特定统计量的函数(见第二章)。例如,计算变量 age 的样本量、样本均值和样本标准差:

length(cont.vars$age)
mean(cont.vars$age)
sd(cont.vars$age)

我们还可以用函数 sapply( )同时计算数据框中多个变量的指定统计量。例如,计算数据框 cont.vars 中各个变量的样本标准差:

sapply(cont.vars, sd)

基本包中没有提供计算偏度和峰度的函数,我们可以根据公式自己计算,也可以调用其他包里的函数计算,例如 Hmisc 包、psych 包和 pstecs 包等。这些包提供了种类繁多的计算统计量的函数,这几个包在首次使用前需要先安装。下面以 psych 包为例进行说明。psych 包被广泛应用于计量心理学。

psych 包里的函数 describe( )可以计算变量忽略缺失值后的样本量、均值、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、全距、偏度、峰度和均值的标准误等。

例如:

R.Version()
library(psych)
describe(cont.vars)

在很多时候我们还想计算某个分类变量各个类别下的统计量。在 R 中完成这个任务有多种方式,下面先从基本包的函数 aggregate( )和 tapply( )开始介绍。

aggregate(cont.vars, by = list(smoke = birthwt$smoke), mean)
aggregate(cont.vars, by = list(smoke = birthwt$smoke), sd)

函数 aggregate( )中的参数 by 必须设为 list。如果直接使用 list(birthwt$smoke),则上面分组列的名称将会是“Group.1”而不是“smoke”。我们还可以在 list 里面设置多个分类变量,例如:

aggregate(cont.vars, 
          by = list(smoke = birthwt$smoke, race = birthwt$race), 
          mean)

这里的分类变量有 2 个,其中 smoke 有 2 个类别,race 有 3 个类别,上面的命令按照这两个变量各类别的所有组合(共 6 组)计算均值。

当然,你也可以使用下面任一方式写:

aggregate(birthwt[,c("age","lwt","bwt")], 
          by = list(smoke = birthwt$smoke, race = birthwt$race), 
          mean)

aggregate(cbind(age, lwt, bwt)~smoke+race, birthwt, mean)

函数 tapply( )可以实现类似的功能,不同的是它的第一个参数必须是一个变量,第二个参数名是 INDEX 而不是 by。例如,计算变量 bwt 在母亲不同吸烟情况下的均值,可以输入:

tapply(birthwt$bwt, INDEX = birthwt$smoke, mean)
# no 3055.69565217391 yes 2771.91891891892

epiDisplay 包里的函数 summ( )也可以实现类似的功能,不同的是该函数里的统计量是固定的,而且函数的输出包含一个按照分类变量绘制的有序点图,如下图所示。

summ(birthwt$bwt, by = birthwt$smoke)

用函数 summ( )输出的有序点图探索数值型变量的分布尤其是数据的密集趋势和异常值非常方便。

psych 包里的函数 describeBy( )也可以分组计算与函数 describe( )相同的统计量,例如:

describeBy(cont.vars, birthwt$smoke)

函数 describeBy( )虽然很方便,但它不能指定任意函数,所以扩展性较差。实际上,在第 3 章介绍的 dplyr 包里的函数 group_by( )和 summarise( )就能非常灵活地计算分组统计量。例如:

library(dplyr)
birthwt %>%
  group_by(smoke) %>% 
  summarise(Mean.bwt = mean(bwt), Sd.bwt = sd(bwt))

数据分析者可以选择自己最习惯的方式计算和展示描述性统计量。最后一种方式的思路最清晰,结果最简洁。

目录
相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
3月前
|
数据挖掘 数据处理
R语言统计基本概念:探索描述性统计与推断统计的奥秘
【8月更文挑战第30天】描述性统计与推断统计是R语言统计分析中的两大基石。描述性统计帮助我们直观地了解数据的分布特征和基本属性,而推断统计则允许我们基于样本数据对总体进行推断和预测。在数据分析的实际应用中,两者相辅相成,共同构成了数据分析的完整框架。掌握这两大概念及其在R语言中的实现方法,对于提升数据分析能力和决策效率具有重要意义。
|
19天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
40 3
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
67 3