多元数据的可视化方法很多,譬如散点图、星图、雷达图、脸谱图、协同图等,大致可分为以下几类:1.基于点(如二维、三维散点图);2.基于线(如轮廓图、调和曲线图);3.基于平面图形(如星图、雷达图、蛛网图);4.基于三维曲面(如三维曲面图)。其思想是将高维数据映射到低维空间(三维以下)内,尽量使信息损失最少,同时又能利于肉眼辨识。调和曲线图和轮廓图(即平行坐标图)都是多元数据的可视化方法,它们基于“线”的形式,将多元数据表示出来,对于聚类分析有很好的帮助。
轮廓图
轮廓图的思想非常简单、直观,它是在横坐标上取 p 个点,依次表示各个指标(即变量);横坐标上则对应各个指标的值(或者经过标准化变换后的值),然后将每一组数据对应的点依次连接即可。
lattice 包中的 parallel() 函数可以轻松绘出轮廓图。利用 iris 数据,以下代码可以画出其轮廓图(图1)。
library(lattice)data(iris)parallel(~iris[1:4], iris, groups = Species, horizontal.axis = FALSE, scales = list(x = list(rot = 90)))
图1 Iris 数据的轮廓图(Parallel Coordinate Plots)
观察图1,可以发现同一品种的鸢尾花的轮廓图粗略地聚集在一起。
调和曲线图
调和曲线图的思想和傅立叶变换十分相似,是根据三角变换方法将 p 维空间的点映射到二维平面上的曲线上。假设Xr是 p 维数据的第 r 个观测值,即
XTr=(xr1,?,xrp)
则对应的调和曲线是
fr(t)=xr1sqrt2+xr2sint+xr3cost+xr4sin2t+xr5cos2t+?
其中?π≤t≤π.
同样利用 iris 数据,下面代码(主要取自《统计建模与R软件》,尚未优化)可以画出其调和曲线图(图2)。
x = as.matrix(iris[1:4])t = seq(-pi, pi, pi/30)m = nrow(x)n = ncol(x)f = matrix(0, m, length(t))for (i in 1:m) { f[i, ] = x[i, 1]/sqrt(2) for (j in 2:n) { if (j%%2 == 0) f[i, ] = f[i, ] + x[i, j] * sin(j/2 * t) else f[i, ] = f[i, ] + x[i, j] * cos(j%/%2 * t) }}plot(c(-pi, pi), c(min(f), max(f)), type = "n", main = "The Unison graph of Iris", xlab = "t", ylab = "f(t)")for (i in 1:m) lines(t, f[i, ], col = c("red", "green3", "blue")[unclass(iris$Species[i])])legend(x = -3, y = 15, c("setosa", "versicolor", "virginica"), lty = 1, col = c("red", "green3", "blue"))
图2 Iris 数据的调和曲线图
观察图2,同样可以发现同一品种鸢尾花数据的调和曲线图基本上扭在一起。同图1 比较后,发现图2 更加清楚明白,事实上Andrews证明了调和曲线图有许多良好性质。
讨论
轮廓图和调和曲线图有着相近的功能,而技巧大有不同。轮廓图简单却现得粗糙,调和曲线图公式复杂却十分精细。从这一个侧面可以发现直观的统计思想固然重要,但存在很多种不可能通过直观思想得到的、而又非常精细、美妙的方法,此时倍受众多统计学家责难的数学显得优雅而又强大。
7您可能也喜欢:
相关矩阵的可视化及其新方法探究 不同版本的散点图矩阵 在R中实现动态气泡图 R绘制中国航线分布夜景图 粉丝地图的可视化 R时代,你要怎样画地图? 日历中的夏天 中秋献礼——Layer图形设备无觅关联推荐[?]
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。