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

2.7 数据统计分析

2.7.1 矩阵图分析相关性

矩阵图分析相关性主要通过pairs()函数对mtcars数据集绘制散点图矩阵,分析两两变量之间的关系,实现过程如下(源码位置:资源包\Code\02\pairs_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为pairs_data.R。

(2)加载程序包,使用data()函数导入mtcars数据集,代码如下:

library(datasets)  # 加载程序包
data(mtcars)    # 导入 mtcars 数据集

(3)使用pairs()函数绘制散点图矩阵,代码如下:

pairs(mtcars)

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

图2.15 散点图矩阵

从运行结果得知:虽然散点图矩阵中的散点图非常多,但大致可以看出mpg(里程数)与cyl(气缸数)、disp(排量)、hp(总马力)和wt(重量)存在一定的线性关系。

(4)使用第三方R包psych中的pairs.panels()函数绘制更加详尽的矩阵图,代码如下:

library(psych)                  # 加载程序包
pairs.panels(mtcars,cex.cor = 0.8)  # pairs.panels()函数绘制矩阵图

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

图2.16 矩阵图

从运行结果得知:对角线上方为相关系数矩阵,mpg(里程数)与气缸数(cyl)、排量(disp)、总马力(hp)和重量(wt)有较强的负相关性,也就是说气缸数、排量、总马力和重量越大,汽车里程数越少,即每加仑油英里数越少,表示汽车越耗油;对角线为每个变量数值分布的直方图;对角线下方为散点图,每个散点图中的椭圆表示两个变量的相关性,椭圆越扁,变量之间的相关性越强;每个散点图中的曲线都为局部回归曲线;每个散点图中位于椭圆中心的点都为两个变量均值所确定的点。

2.7.2 相关系数分析相关性

相关系数的优点是可以通过数字对变量的关系进行度量,并且带有方向性,1表示正相关,-1表示负相关,越靠近0相关性越弱。缺点是无法利用这种关系对数据进行预测。下面使用cor()函数计算相关系数,实现过程如下(源码位置:资源包\Code\02\cor_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为cor_data.R。

(2)加载程序包,使用data()函数导入mtcars数据集,代码如下:

library(datasets)  # 加载程序包
data(mtcars)    # 导入 mtcars 数据集

(3)使用cor()函数计算相关系数,代码如下:

cor(mtcars)

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

图2.17 相关系数

从运行结果得知:mpg(里程数)与mpg(里程数)自身的相关性是1,与cyl(气缸数)、disp(排量)、hp(总马力)和wt(重量)存在着负相关性,并且相关性较强。

2.7.3 箱形图分析气缸数与里程数

汽车气缸数分为4缸、6缸和8缸。下面使用boxplot()函数绘制箱形图分析mtcars数据集中不同气缸数的平均里程数,实现过程如下(源码位置:资源包\Code\02\cyl_mpg_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为cyl_mpg_data.R。

(2)加载程序包,使用data()函数导入mtcars数据集,代码如下:

library(datasets)  # 加载程序包
data(mtcars)    # 导入 mtcars 数据集

(3)使用boxplot()函数绘制箱形图分析气缸数与里程数,代码如下:

boxplot(mpg ~ cyl, data = mtcars, xlab = "气缸数",
        ylab = "里程数", main = "气缸数与里程数分析图")

(4)使用points()函数在箱形图中添加平均里程数标记,代码如下:

points(1:3,mpg_mean,pch=24,bg=2)

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

图2.18 箱形图分析气缸数与里程数

从运行结果得知:不同气缸数的平均里程数不同,气缸数越少平均里程数越高,说明汽车越省油。

2.7.4 箱形图分析变速器与里程数

汽车变速器分为自动挡和手动挡。下面使用boxplot()函数绘制箱形图并分析mtcars数据集中自动挡和手动挡的平均里程数,通过这一分析可以判断是否自动挡的汽车更费油,实现过程如下(源码位置:资源包\Code\02\am_mpg_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为am_mpg_data.R。

(2)加载程序包,使用data()函数导入mtcars数据集,代码如下:

library(datasets)  # 加载程序包
data(mtcars)    # 导入 mtcars 数据集

(3)使用boxplot()函数绘制箱形图,代码如下:

boxplot(mpg ~ am, data = mtcars, xlab = "变速器",
        ylab = "里程数", main = "变速器与里程数分析图")

图2.19 箱形图分析变速器与里程数

运行程序,结果如图2.19所示。(4)在箱形图中添加一条回归线进一步分析是否自动挡更费油,使用abline()函数实现,代码如下:

abline(lm(mpg~am,data=mtcars),col="red",lwd=3)

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

图2.20 添加回归线的箱形图

从运行结果得知:随着变速器的增加(0~1即从自动挡到手动挡),每加仑汽油行驶的英里数也在增加,说明自动挡更费油。

2.7.5 散点图分析重量与里程数

下面使用第三方R包ggplot2中的geom_point()函数和geom_smooth()函数绘制线性拟合散点图,分析mtcars数据集中重量与里程数的相关性,实现过程如下(源码位置:资源包\Code\02\wt_mpg_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为wt_mpg_data.R。

(2)加载程序包,使用data()函数导入mtcars数据集,代码如下:

# 加载程序包
library(datasets)
# 导入 mtcars 数据集
data(mtcars)

(3)加载第三方R包ggplot2,然后使用ggplot()函数绘制线性拟合散点图,代码如下:

# 加载程序包
library(ggplot2)
df <- mtcars
# 绘制线性拟合散点图
ggplot(df, aes(wt, mpg))+
  geom_point(shape=21,size=4)+
  geom_smooth(method = lm,formula = y ~ x)+
  # 设置标题和子标题
  labs(title = "重量与里程数分析图")

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

图2.21 散点图分析重量与里程数

从运行结果得知:重量与里程数存在一定的线性关系,并且重量越小里程数越多,说明汽车越省油。

2.7.6 气缸数、里程数和排量之间的关系

下面使用第三方R包graphics中的coplot()函数绘制条件图。首先根据不同气缸数对mtcars数据集进行分组,并在不同分组条件下绘制里程数和排量散点图,实现过程如下(源码位置:资源包\Code\02\cyl_mpg_disp_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为cyl_mpg_disp_data.R。

(2)加载程序包,使用coplot()函数绘制条件图,代码如下:

# 加载程序包
require(graphics)
# 设置画布背景颜色
par(bg="cornsilk")
# coplot()函数绘制气缸数、里程数和排量的关系图
coplot(mpg ~ disp | as.factor(cyl),data = mtcars,
       pch = 21, bg = "green3",rows = 1)
# 图形设备参数恢复默认值
opar <- par(no.readonly = T)
par(opar)

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

图2.22 气缸数、里程数和排量的关系图

从运行结果得知:气缸数默认分成3组,4缸汽车较其他气缸数的汽车排量小并且里程数多。

2.7.7 里程数、总马力和重量之间的关系

通过气泡图分析里程数、总马力和重量之间的关系,主要使用第三方R包ggplot2中的geom_point()函数绘制气泡图,实现过程如下(源码位置:资源包\Code\02\mpg_hp_wt_data.R)。

(1)在项目文件夹下新建一个R脚本文件,命名为mpg_hp_wt_data.R。

(2)加载程序包,使用geom_point()函数绘制气泡图分析里程数、总马力和重量之间的关系,代码如下:

# 加载程序包
library(ggplot2)
df <- mtcars
# 绘制气泡图
ggplot(df, aes(x=hp, y=mpg, size=wt)) +
  geom_point(shape=16, color="blue", alpha=0.5)

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

图2.23 气泡图分析里程数、总马力和重量之间的关系

从运行结果得知:重量较轻、总马力较小的汽车里程数越多,说明汽车越省油。 vFqP5W6Sc6WJLEOLebXs5vcwcwtkn4Fqsr2vT6BDuUZpPp+E68jhOV45xW60/hYN

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