美文网首页数据科学与R语言
R语言实战——scatterplotMatrix()

R语言实战——scatterplotMatrix()

作者: MartyLife | 来源:发表于2020-05-05 16:43 被阅读0次

    导言

    本文参考https://blog.csdn.net/qq_20828983/article/details/95659791,问题和博主一样。原先R语言实战的代码版本比较久,导致部分例子会报错甚至连包都找不到了(npmc?貌似是是这个(应该是通过本地安装解决了))。我的《R语言实战》是在南林大图书馆借阅的,是第一版,不知道第二版的问题多不多?

    问题

    这个包的名字蛮有趣的。scatterplotMatrix()(缩写—spm)函数默认在非对角线位置绘制变量间的散点图,并添加平滑(loess)和线性拟合曲线。对角线位置绘制每个变量的密度图和轴须图。

    library(car)

    States

    sat <- as.data.frame(state.x77[,c("Murder","Population",

                                      "Illiteracy","Income","Frost")])

    scatterplotMatrix(sat,spread=FALSE,lty.smooth=2,col="red",main="SAT")

    大概率照着敲下来会得到下面的图:

    图1 散点图矩阵

    然鹅,console出现了令人头皮发麻的waring(),还是有50个?!!!

    There were 50 or more warnings (use warnings() to see the first 50)

    解决方案

    幸而一百度就找到这位博主,原文对函数剖析的比较彻底。(我只是一个渣渣)

    修改后:

    spm(sat,smooth=list(lty.smooth=2, spread = F),main="SAT")

    图2 散点图矩阵(无warning)

    仔细对比会发现图1和图2的不同,图形参数设置不正确,函数按默认设置运行。

    默认smooth = TRUE,而False不绘制拟合曲线,True绘制拟合曲线。

    到这基本解决了原先的问题。

    拓展

       如果学习只到这,基本就废了。接下来将从两方面深入拓展:函数本身和散点图矩阵。

    1函数

    car包第一次出现是在1.1的介绍中,相信大部分人都没有刻意关注过这个图(看上去实在是太杂了);第二次出现是在4.3变量重编码,介绍了recode()函数;然后就到了第八章回归分析。

    图3 

    car包全称"Companion to Applied Regression",回归应用指南(?)。

    文中是基于2.x版本,现在安装的car包基本是3.x版本。所以出现报错也不奇怪了。

    具体到scatterplotMatrix函数,

    scatterplotMatrix(x, smooth = TRUE,

        id = FALSE, legend = TRUE, regLine = TRUE,

        ellipse = FALSE, var.labels = colnames(x), diagonal = TRUE,

        plot.points = TRUE, groups = NULL, by.groups = TRUE,

        use = c("complete.obs", "pairwise.complete.obs"), col =

        carPalette()[-1], pch = 1:n.groups, cex = par("cex"),

        cex.axis = par("cex.axis"), cex.labels = NULL,

        cex.main = par("cex.main"), row1attop = TRUE, ...

    其中,

    (1)smooth参数控制平滑拟合曲线,需要通过list修改其中参数。2.x版本不需要list。

    smoother——控制拟合方式,方法有loessLine(默认)、gamline、quantregLine等

    spread——设定是否添加展示分散度和对称信息的直线

    lty.smooth——设定拟合曲线的形状(1是实线,2是虚线)

    lwd.smooth——设定拟合曲线的宽度

    (2)id参数控制点标识,默认为False;True表示list(method="mahal", n=2, cex=1, location="lr"),它标识出距离数据中心最大的Mahalanobis距离的2个点。

    图4 id=T

    (3)diagonal参数控制对角线图形

    diagonal=list(method="adaptiveDensity", bw=bw.nrd0, adjust=1, kernel=dnorm, na.rm=TRUE) #核密度图

    diagonal=list(method="density", bw="nrd0", adjust=1, kernel="gaussian", na.rm=TRUE) #非自适应核密度估计

    diagonal=list(method ="histogram", breaks="FD")  #直方图 忽略分组

    diagonal=list(method="boxplot") #箱线图

    diagonal=list(method="qqplot") #normal QQ plot QQ图

    diagonal=list(method="oned") #倾斜于对角线的地毯图

    例子:spm(sat,smooth=list(lty.smooth=2, spread = T),id = T, pch =15,col = "blue2",

        diagonal = list(method = "boxplot"), main="SAT")

    图5 对角线为箱线图 图6 原博最终图形

    2散点图矩阵

    函数内容基本搞懂,但是我在CSDN的推荐文章中发现了一篇介绍不同版本的散点图矩阵,决定一起学习一下。再次是在简书看到一幅好看的散点图矩阵,好奇自己掌握的技术能否实现?

    原博地址:https://cosx.org/2009/03/scatterplot-matrix-visualization

    简书地址:https://www.jianshu.com/p/06295967e6b4

    散点图矩阵所用到的函数(包)分别为:pairs(graphics),scatterplot.matrix(car),gpairs(YaleToolkit),splom(lattice)

    以鸢尾花数据为例分别绘制

    结尾

    从一个小问题出发,耗费了一整天的时间。只是弄懂了一个散点图矩阵函数,还有好多亟待了解的内容。

    挖坑:

    相关文章

      网友评论

        本文标题:R语言实战——scatterplotMatrix()

        本文链接:https://www.haomeiwen.com/subject/wzmtrhtx.html