R语言实现多维尺度分析(Multidimensional Scaling,MDS)
目录
- 1. 什么是多维尺度分析MDS
- 2. MDS实现步骤
- 3. 代码
- 4.参考资料
1. 什么是多维尺度分析MDS
本质上是一种降维方法,让高维数据在低维尺度上直观展示,便于观察其中的差异(距离)。
2. MDS实现步骤
step1:获取数据,行是每一个数据,列是每个特征
step2:以两列(特征)作为差异(距离)的计算标准,计算每个数据两两之间的距离
step3:应用MDS对每个数据进行可视化,直观表现数据差异(距离)
step4:找到最佳维度数量,重新对数据进行可视化
step5:模型效果评价
3. 代码
引入包和数据,本数据共76行,24列,每行是一个数据,最后两列是经纬度特征。
install.packages(c("Rling", "fields", "rgl", "MASS"))
library(Rling); library(fields); library(rgl); library(MASS)
data(eWAVE)
计算数据两两之间的距离,应用MDS,返回每个数据的低维坐标及特征值,可视化前20维的解释力:
geo.dist <- rdist.earth(eWAVE[, 23:24], miles = FALSE)
geo.dist <- as.dist(geo.dist)
geo.mds <- cmdscale(geo.dist, eig = TRUE) #equivalent to cmdscale(geo.dist, k = 2, eig = TRUE)
barplot(geo.mds$eig[1:20], xlab = "Number of dimensions", ylab = "Eigenvalues", main = "Scree plot")
图中可以看出三个维度后解释力大幅下降,所以三维解是最优解。在这先继续以二维展示,后续再做三维的。下面展示MDS后各个数据的距离可视化结果。
plot(geo.mds$points, type = "n", main = "MDS of geographic distances between varieties of English")
text(geo.mds$points, labels = rownames(eWAVE), cex = 0.6)
可以发现各个数据的远近,越近差异越小,越远差异越大。
下面以最佳维度n=3来进行MDS展示。
geo.mds.3d <- cmdscale(geo.dist, k = 3, eig = TRUE)
plot3d(geo.mds.3d$points, type = "n")
text3d(geo.mds.3d$points, texts = rownames(eWAVE), cex = 0.6)
查看MDS模型的有效性,得分越大越好(类似于R2):
geo.mds.3d$GOF
另一种计算有效性方法,得分越小越好(<0.05):
sqrt(sum((geo.dist-dist(geo.mds.3d$points))^2)/sum(geo.dist^2))
除此之外,还可以将每个点的MDS距离与真实距离画图展示,x轴对应于每个pair之间的地理距离,而y轴则表示MDS解决方案所表示的pairs之间的距离。模型效果越好点离对角线越近。
geo.sh <- Shepard(geo.dist, geo.mds.3d$points)
plot(geo.sh, main = "Shepard plot", pch = ".")
lines(geo.sh$x, geo.sh$yf, type = "S")
4.参考资料
Levshina, Natalia. “How to do linguistics with R.” Data Exploration and Statistical Analysis, Amsterdam-Philadelphia (2015).[附百度云盘链接:https://pan.baidu.com/s/1YnWLPiH7oom_dPABWXFKig 提取码:f3nk)
R语言实现多维尺度分析(Multidimensional Scaling,MDS)相关推荐
- 多维尺度变换(multidimensional scaling, MDS)
多维尺度变换(multidimensional scaling, MDS)是在低维空间去展示高维多元数据的一种可视化方法.该方法看起来类似于利用主成分得分作图,或者对两个线性判别量的得分作图.与上述方 ...
- SPSS(十四)SPSS之多维尺度分析(图文+数据集)
SPSS(十三)SPSS之多维尺度分析(图文+数据集) 多维尺度分析简介 多维尺度(Multidimensional scaling,缩写MDS,又译"多维标度")也称作" ...
- 多维尺度分析MDS详解
一 概述 MDS的初衷是将图结构中的距离在空间的一种表示.例如,已知几个城市的距离,但是不知道城市的坐标,那么MDS就能通过距离矩阵转换成空间坐标向量来近似描述距离.更重要地是,MDS可以更广泛地应用 ...
- 多维尺度分析(Multidimensional scaling,MDS)及SPSS实现
※ 版权所有,转载请联系作者 ※ 1. 多维尺度分析介绍 多维尺度分析也称做多维尺度变换,多维标度或多维尺度法等. 多维尺度分析(Multidimensional scaling, 简称MDS)是根据 ...
- jquery多维对象计算个数_多维尺度分析理论概述
在工作中常常会遇到这样的情况,有 n 个由多个指标反映的客体,但是反映客体的指标个数是多少不清楚,甚至指标本身是什么也是模糊的,更谈不上直接测量或观察它,仅仅所能知道的是这 n 个客体之间的某种距离( ...
- 《R语言机器学习:实用案例分析》——1.2节R的数据结构
本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.2节R的数据结构,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sark ...
- 《R语言机器学习:实用案例分析》——1.3节使用函数
本节书摘来自华章社区<R语言机器学习:实用案例分析>一书中的第1章,第1.3节使用函数,作者[印度] 拉格哈夫·巴利(Raghav Bali)迪潘简·撒卡尔(Dipanjan Sarkar ...
- 【MDS多维尺度分析】
multidimensional scaling(MDS)多维尺度分析 MDS其实就是一种降维方法,MDS解决的问题是:当n个对象中各对象之间的相似性(或距离)给定时,确定这些对象在低维空间中的表示, ...
- R-GIS: 如何用R语言实现GIS地理空间分析及模型预测
前言:随着地理信息系统(GIS)和大尺度研究的发展,空间数据的管理.统计与制图变得越来越重要.R语言在数据分析.挖掘和可视化中发挥着重要的作用,其中在空间分析方面扮演着重要角色,与空间相关的包的数量也 ...
最新文章
- linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...
- 约瑟夫环双向链表c语言实,双向链表与约瑟夫环代码
- hbase查看表结构_HBase
- C# 入门经典 第三版 下载。
- 以脚本方式直接执行修改密码的passwd命令
- linux进程打开链接数,Linux 进程打开最大文件连接数Too many open files
- mysql游标嵌入式_Oracle与MySQL内嵌游标的使用示例
- 艾宾浩斯记忆表格excel_好的记忆方法是一切学习的关键(艾宾浩斯记忆法)
- 数据仓库组件:Hive环境搭建和基础用法
- java歌词高亮显示滚动_js如何处理音乐播放器的歌词文件达到高亮以及滚动的效果?...
- 20个最强的基于浏览器的在线代码编辑器
- eclipse汉化(傻瓜式)
- lg v35 thinkq刷韩版android9.0教程
- python图像文字识别 - PyTesser
- centos 7之firewalld防火墙配置IP伪装和端口转发案例详解
- Linux下安装sublime汉化版及完美输入中文
- 不会玩可别说节日营销过气了
- Java基础:Java语言简介
- 群晖216j使用web station部署librespeed下载无速度的解决方法
- win7系统下如何关闭UAC,去掉软件图标上的盾牌