购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 技术准备

2.3.1 技术概览

汽车数据可视化分析系统通过R语言自带的mtcars数据集实现了对汽车数据的分组统计、可视化与相关性分析,其中主要使用了分组统计、基本绘图函数、第三方R包ggplot2和相关性分析,这些知识在《R语言数据分析从入门到精通》一书中有详细讲解,对这些知识不太熟悉的读者可以参考该书对应的内容。

另外,在描述性统计分析过程中,为了实现按照分类变量统计数据使用了ordered()函数;为了绘制更加详细的矩阵图以更好地分析数据之间的关系,本项目还使用了第三方R包psych提供的pairs.panels()函数,以及通过第三方R包graphics中的coplot()函数实现了将多个相关图表整合到同一张图中,从而更加直观地展示数据之间的关系。

下面对这三部分内容进行详细介绍并进行举例说明,以确保读者顺利完成本项目,同时拓展相关知识以便更好地利用R语言进行数据分析。

2.3.2 ordered()函数的应用

R语言中的ordered()函数用于创建有序变量,这种变量允许指定类别之间的特定顺序,对于统计分析来说非常重要。ordered()函数的语法格式如下:

ordered(x, levels, labels)

参数说明:

x:要转换为有序变量的向量或数据框列。

levels:可选参数,用于指定有序变量的顺序水平。

labels:可选参数,用于指定有序变量的标签。

ordered()函数的基本使用步骤如图2.2所示。

下面通过具体的示例介绍ordered()函数的应用。

首先创建一个向量,然后使用ordered()函数将其转换为有序变量,通过levels参数指定类别顺序,通过labels参数指定类别标签,代码如下:

# 创建向量
var1 <- c(1,2,3,4,5,4,2,3,1,5)
# 使用 ordered()函数转换为有序变量
ordered_var1 <- ordered(var1,levels=c(1,2,3,4,5),
                       labels=c("1 星","2 星","3 星","4 星","5 星"))
print(ordered_var1)

运行程序,结果如下:

[1] 1 星 2 星 3 星 4 星 5 星 4 星 2 星 3 星 1 星 5 星
Levels: 1 星 < 2 星 < 3 星 < 4 星 < 5 星

ordered()函数也可以用于将字符串向量转换为有序的因子向量。例如,使用ordered()函数将包含尺码的字符串向量转换为一个有序的因子向量,并指定因子的顺序水平,代码如下:

var2 <- c("S", "M", "L","XL")
ordered_var2 <- ordered(var2,levels=c(1,2,3,4))
print(ordered_var2)

运行程序,结果如下:

Levels: 1 < 2 < 3 < 4

2.3.3 详解pairs.panels()函数

pairs.panels()函数是第三方R包psych中一个功能强大的函数,主要通过散点图和变量分布图组合成矩阵图,以展示数据集中数值型变量两两之间的关系,从而为数据分析工作提供直观的参考。pairs.panels()函数的语法格式如下:

pairs.panels(x, smooth = TRUE, scale = FALSE, density=TRUE,ellipses=TRUE,digits = 2,method="pearson", pch = 20,
lm=FALSE,cor=TRUE,jiggle=FALSE,factor=2,hist.col="cyan",show.points=TRUE,rug=TRUE,breaks="Sturges",cex.cor=1,wt=
NULL,smoother=FALSE,stars=FALSE,ci=FALSE,alpha=.05,hist.border="black" ,...)

参数说明:

x:数据,数据框或矩阵。

smooth:布尔型,是否显示平滑曲线。默认值为TRUE,表示显示平滑曲线。

scale:布尔型,是否对数据标准化。默认值为FALSE,表示不对数据标准化。

density:布尔型,是否绘制密度曲线。默认值为TRUE,表示绘制密度曲线。

ellipses:布尔型,是否绘制相关椭圆。默认值为TRUE,表示绘制相关椭圆。

digits:要显示的位数。

method:相关性方法参数,参数值为pearson、spearman和kendall。

pch:标记符号,默认值为20,表示点。

lm:布尔型,是否绘制线性拟合平滑曲线。

cor:布尔型,是否显示相关系数。默认值为TRUE,表示显示相关系数。

jiggle:布尔型,是否为数据点添加抖动。默认值为FALSE,表示不添加。

factor:抖动因子,参数值为1~5。

hist.col:对角线上直方图的颜色。

show.points:布尔型,是否显示数据点。如果参数值为FALSE,则不显示数据点,只显示平滑曲线和相关椭圆。

rug:布尔型,是否在直方图下画短线。默认值为TRUE,表示画短线。

breaks:如果指定参数值,则允许控制直方图中的断点数量。

cex.cor:用于更改相关性中文本的大小。

wt:如果指定该参数,则使用权重矩阵对相关性进行加权。

smoother:布尔型,是否添加平滑曲线。如果参数值为TRUE,则添加平滑曲线。

stars:布尔型,是否使用星号标记相关性的重要性。

ci:布尔型,是否绘制置信区间。默认值为FALSE,表示不绘制置信区间。

alpha:置信区域的alpha值,默认值为0.05。

hist.border:参数值设置为NA,表示直方图值之间没有直线。

例如,绘制一个简单的矩阵图,代码如下。

library(psych)       # 加载程序包
pairs.panels(attitude)

运行程序,结果如图2.3所示。

图2.3 一个简单的矩阵图

从运行结果得知:矩阵图分为三部分,下面分别进行介绍。

对角线上方:在矩阵图中,对角线上方为相关系数矩阵。

对角线:在矩阵图中,对角线为每个变量数值分布的直方图。

对角线下方:在矩阵图中,对角线下方为散点图,每个散点图中的椭圆表示两个变量的相关性,椭圆越扁,变量之间的相关性越强;每个散点图中的曲线为局部回归曲线;每个散点图中位于椭圆中心的点为两个变量均值所确定的点。

下面将对角线下方的散点图按颜色分组,主要设置bg参数,代码如下:

data(iris)                                                     # 导入 iris 数据集
pairs.panels(iris[1:4],bg=c("red","yellow","blue")[iris$Species],pch=21) # 绘制矩阵图

运行程序,结果如图2.4所示。

图2.4 按颜色分组的矩阵图

下面将对角线下方的散点图设置不同的标记符号,同时为对角线上的直方图设置颜色和使用星号标记对角线上方系数相关性的重要性,代码如下:

pairs.panels(iris[1:4],bg=c("red","yellow","blue")[iris$Species],
             pch=21+as.numeric(iris$Species),hist.col="red",stars=TRUE)

运行程序,结果如图2.5所示。

图2.5 设置不同标记符号的矩阵图

2.3.4 了解coplot()函数

coplot()函数是第三方R包绘图库graphics中一个非常实用的绘图函数,主要用于绘制多个相关图表并整合到同一张图中,从而更加直观地展示数据之间的关系。语法格式如下:

coplot(formula, data, given.values, panel = points, rows, columns,show.given = TRUE, col = par("fg"), pch = par("pch"),bar.bg
= c(num = gray(0.8), fac = gray(0.95)),xlab = c(x.name, paste("Given :", a.name)),ylab = c(y.name, paste("Given :",
b.name)),subscripts = FALSE,axlabels = function(f) abbreviate(levels(f)),number = 6, overlap = 0.5, xlim, ylim, ...)

主要参数说明:

formula:描述条件作用图形式的公式。形式为y ~ x| A,表明y与的关系曲线应以变量A为条件;形式为y ~ x| A * b,表明y与x的关系曲线应以两个变量A和b为条件。以上变量可以是数字或因子。

data:包含公式中任何变量的数据框。

given.values:一个向量或因子,包含要在条件绘图中固定的变量值。例如,如果有一个名为a的变量,设置其固定值为1,那么given.values参数值就是a = 1。

panel:一个函数,给出了要在显示的每个面板中执行的操作。

rows:指定面板的行数。

columns:指定面板的列数。

show.given:布尔型,指定是否在图中显示给定的变量值,默认值为TRUE。

例如,R语言自带的quakes数据集,其中包含变量lat、long和depth,接下来使用以下代码创建一个条件绘图。

require(graphics)                    # 加载程序包
coplot(lat ~ long | depth, data = quakes)  # 绘制条件图

运行程序,结果如图2.6所示。

图2.6 创建一个条件绘图

下面使用co.intervals()函数将depth分为4个区间,然后绘制条件图,代码如下:

given.depth <- co.intervals(quakes$depth, number = 4, overlap = .1)
coplot(lat ~ long | depth, data = quakes, given.values = given.depth, rows = 1)

运行程序,结果如图2.7所示。

图2.7 设置4个区间的条件绘图

图2.7默认面板为4列,下面通过columns参数设置面板为2列,代码如下:

coplot(lat ~ long | depth, data = quakes, given.values = given.depth,columns = 2)

运行程序,结果如图2.8所示。

图2.8 设置面板为2列的条件绘图 HwPuvcYD3tBb/Cskm/fK0xqNnR2EH9Snz74KV2djafQnrj64QEENBhYsou6x6hPA

点击中间区域
呼出菜单
上一章
目录
下一章
×