R 中的 PCA 多重图

2024-03-02

我有一个如下所示的数据集:

India   China   Brasil  Russia  SAfrica Kenya   States  Indonesia   States  Argentina   Chile   Netherlands HongKong
0.0854026763    0.1389383234    0.1244184371    0.0525460881    0.2945586244    0.0404562539    0.0491597968    0   0   0.0618342901    0.0174891774    0.0634064181    0
0.0519483159    0.0573851759    0.0756806292    0.0207164181    0.0409872092    0.0706355932    0.0664503936    0.0775285039    0.008545575 0.0365674701    0.026595575 0.064280902 0.0338135148
0   0   0   0   0   0   0   0   0   0   0   0   0
0.0943708876    0   0   0.0967733329    0   0.0745076688    0   0   0   0.0427047276    0   0.0583873189    0
0.0149521013    0.0067569437    0.0108914448    0.0229991162    0.0151678343    0.0413174214    0   0.0240999375    0   0.0608951432    0.0076549109    0   0.0291972756
0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0.0096710124    0.0095669967    0   0.0678582869    0   0   0.0170707337    0.0096565543    0.0116698364    0.0122773071
0.1002690681    0.0934563916    0.0821680095    0.1349534369    0.1017157777    0.1113249348    0.1713480649    0.0538715423    0.4731833978    0.1956743964    0.6865919069    0.2869189344    0.5364034876
1.5458338337    0.2675380321    0.6229046372    0.5059107039    0.934209603 0.4933799388    0.4259769181    0.3534169521    14.4134845836   4.8817632117    13.4034293299   3.7849346739    12.138551171
0.4625375671    0.320258205 0.4216459567    0.4992764309    0.4115887595    0.4783677078    0.4982410179    0.2790259278    0.3804405781    0.2594924212    0.4542162376    0.3012339384    0.3450847892
0.357614592 0.3932670219    0.3803417257    0.4615355254    0.3807061655    0.4122433346    0.4422282977    0.3053712842    0.297943232 0.2658160167    0.3244018409    0.2523836582    0.3106600754
0.359953567 0.3958391813    0.3828293473    0.4631507073    0.3831961707    0.4138590365    0.4451206879    0.3073685624    0.2046559772    0.2403036541    0.2326305393    0.2269373716    0.2342962436
0.7887404662    0.6545878236    0.7443676393    0.7681244767    0.5938002158    0.5052305973    0.4354571648    0.40511005  0.8372481106    0.5971130339    0.8025313223    0.5708610817    0.8556609579
0.5574207497    1.2175251783    0.8797484259    0.952685465 0.4476585005    1.1919229479    1.03612509  0.5490564488    0.2407034171    0.5675492645    0.4994121344    0.5460544861    0.3779468604
0.5632651223    1.0181714714    1.1253803155    1.228293512 0.6949993291    1.0346288085    0.5955221073    0.5212567091    1.1674901423    1.2442735568    1.207624867 1.3854352274    0.7557131826
0.6914760031    0.7831502333    1.0282730148    0.750270567 0.7072739935    0.8041764647    0.8918512571    0.6998554585    2.3448306081    1.2905783367    2.4295927684    1.3029766224    1.9310763864
0.3459898177    0.7474525109    0.7253451876    0.7182493014    0.3081791886    0.7462088907    0.5950509439    0.4443221541    3.6106852374    2.7647504885    3.3698608994    2.6523062395    1.8016571476
0.4629523517    0.6549211677    0.6158018856    0.7637088814    0.4951554309    0.6277236471    0.6227669055    0.383909839 2.9502307101    1.803480973 2.3083113522    1.668759497 1.7130459012
0.301548861 0.5961888126    0.4027007075    0.5540290853    0.4078662541    0.5108773106    0.4610682726    0.3712800134    0.3813402422    0.7391417247    1.0935364978    0.691857974 0.4416304953
2.5038287529    3.2005148394    2.9181517373    3.557918333 1.8868234768    2.9369926312    0.4117894127    0.3074815035    3.9187777037    7.3161555954    6.9586996112    5.7096144353    2.7007439732
2.5079707359    3.2058093222    2.9229791182    3.563804054 1.8899447728    2.9418511798    0.4124706194    0.269491388 3.9252603798    7.3282584169    6.9702111077    5.7190596205    2.7052117051
2.6643724791    1.2405320493    2.0584120188    2.2354369334    1.7199730388    2.039829709 1.7428132997    0.9977029725    8.9650886611    4.6035139163    8.1430131464    5.2450639988    6.963309864
0.5270581435    0.8222128903    0.7713479951    0.8785815313    0.624993821 0.7410405193    0.5350834321    0.4797121891    1.3753525725    1.2219267886    1.397221881 1.2433155977    0.8647136903
0.2536079475    0.5195514789    0.0492623195    0.416102668 0.2572670724    0.4805482899    0.4866090738    0.4905212099    0.2002506403    0.5508609827    0.3808572148    0.6276294938    0.3191452919
0.3499009885    0.5837491529    0.4914807442    0.5851537888    0.3638549977    0.537655052 0.5757185943    0.4730102035    0.9098072064    0.6197285737    0.7781825654    0.6424684366    0.6424429128
0.6093076876    0.9456457011    0.8518013605    1.1360347777    0.511960743 0.9038104168    0.5048413575    0.2777622235    0.2915840525    0.6628516415    0.4600364351    0.7996524113    0.3765721177
0.9119207879    1.2363073271    1.3285269752    1.4027039939    0.9250782309    2.1599381031    1.312307839 0   0   0.8253250513    0   0   0.8903632354

它存储在一个data.txt file.

I want to have a PCA multiplot that looks like this: THIS

我在做什么:

d <- read.table("data.txt", header=TRUE, as.is=TRUE)
model <- prcomp(d, scale=TRUE)

在此之后我迷失了。

如何根据PCA投影对数据集进行聚类并获得与上述类似的图片?


您实际上在问两个不同的问题:

  1. 如何在 PCA 投影后对数据进行聚类。
  2. 如何获得上述图。

然而,在讨论这些之前,我想补充一点,如果您的样本位于列中,那么您没有正确执行 PCA。您应该在转置数据集上执行此操作,如下所示:

model <- prcomp(t(d), scale=TRUE)

但要使其发挥作用,您必须删除数据中的所有常量行。


现在我假设您已按照您想要的方式完成了 PCA 步骤。

当您指定 retX=TRUE 时,prcomp 返回旋转矩阵(默认情况下为 true)。所以你会想使用model$x.

下一步是根据主成分对数据进行聚类。这可以通过多种方式来完成。一是层次聚类。如果你最终想要 5 组,这是一种方法:

fit <- hclust(dist(model$x[,1:3]), method="complete") # 1:3 -> based on 3 components
groups <- cutree(fit, k=5)                            # k=5 -> 5 groups

此步骤将为您提供稍后用于着色的组。

最后一步是绘图。在这里,我编写了一个简单的函数来一次完成所有操作:

library(rgl)
plotPCA <- function(x, nGroup) {
    n <- ncol(x) 
    if(!(n %in% c(2,3))) { # check if 2d or 3d
        stop("x must have either 2 or 3 columns")
    }

    fit <- hclust(dist(x), method="complete") # cluster
    groups <- cutree(fit, k=nGroup)

    if(n == 3) { # 3d plot
        plot3d(x, col=groups, type="s", size=1, axes=F)
        axes3d(edges=c("x--", "y--", "z"), lwd=3, axes.len=2, labels=FALSE)
        grid3d("x")
        grid3d("y")
        grid3d("z")
    } else { # 2d plot
        maxes <- apply(abs(x), 2, max)
        rangeX <- c(-maxes[1], maxes[1])
        rangeY <- c(-maxes[2], maxes[2])
        plot(x, col=groups, pch=19, xlab=colnames(x)[1], ylab=colnames(x)[2], xlim=rangeX, ylim=rangeY)
        lines(c(0,0), rangeX*2)
        lines(rangeY*2, c(0,0))
    }
}

这个函数很简单:它需要两个参数:1)分数矩阵,其中主成分在列中,样本在行中。如果你想要(例如)第一个、第二个和第四个组件,你基本上可以使用 model$x[c(1,2,4)] 。 2)聚类的组数。

然后,它根据传递的主成分和图对数据进行聚类(2D 或 3D,具体取决于传递的列数)

以下是一些例子:

plotPCA(model$x[,1:2], 5)

3D 示例(基于 3 个第一主成分):

plotPCA(model$x[,1:3], 5)

最后一个图将是交互式的,因此您可以将其旋转或放大/缩小。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中的 PCA 多重图 的相关文章

随机推荐

  • 为什么 Nuget Javascript 包复制到 Scripts 文件夹

    当我安装时将 jQuery 从 Nuget 导入到我的 VS C 项目中 jquery js 最终出现在我的包文件夹中 这很好 因为我不想将此文件签入我的源代码管理中 因为它不是我的代码 而且我永远不会更改它 在这种情况下 它相当于我可能通
  • Safari 5.1 打破 CSS 表格单元格间距

    在更新到 Safari 5 1 之前 我的网站在所有主要浏览器上都运行良好 现在 主要导航已失效 我正在使用display table cell在列表元素内的锚元素上 并且还使用了font size 0hack 删除菜单元素之间的间距 有其
  • 在R中导入带有特殊字符的数据

    下图显示了我在 R 中导入数据 记事本 之前和导入之后的数据 我使用以下命令将其导入到 R 中 Data lt read csv data csv stringsAsFactors FALSE header TRUE quote 可以看到a
  • vim:希望它仅针对某些文件类型打开设置

    我看过this https stackoverflow com questions 158968 changing vim indentation behavior by file type但这并没有太多帮助 可能是我读得不太好 基本上我想
  • 从 Django 中的第 3 方应用程序收集消息

    如何从位于 virtualenv 目录中的第 3 方库生成消息 manage py makemessages 我尝试简单地将消息添加到 po 文件中 但每次运行 makemessages 命令时 我的翻译都会消失 非常感谢 manage p
  • Angular 6:错误:安装 google-translate-api 后无法解析“./package”

    我刚刚安装了google translate api via npm with npm install save google translate api 我没有收到任何错误消息 但是当我尝试运行时npm start它显示以下错误 ERRO
  • 如果属性与过滤器不匹配则隐藏 div 元素

    我正在我的网站上构建一个简单的过滤功能 一旦用户从位置选择 start address and end address下拉菜单 然后按 go button 我如何只显示包含 a 的 div span class waypoint span
  • 参数数据类型文本对于下层函数的参数 1 无效

    在我的应用程序的搜索功能中 我实现了一个搜索功能 该功能对数据库执行以下语句 resultsquery db DBMovies Where m gt m Actors ToLower Contains q ToLower 在部分q ToLo
  • 从 Dropbox 获取直接文件链接

    有没有办法在 Android 代码中从 Dropbox 获取 直接文件链接 而不使用 Dropbox API 我对此进行了很多搜索 但没有找到解决方案 任何回应将不胜感激 获取文件链接例如https www dropbox com s bl
  • VS中如何选择重载方法建议顺序?

    假设一个类有一些具有相同名称和不同参数的方法 我如何告诉 VS 按特定顺序建议它们 这是不可能的 简单 重载按参数数量升序排列 怀疑您确实需要编写一个插件
  • automapper 带有动作的地图集合

    我有以下代码 IList
  • Python 函数可选参数 - 可以添加为条件吗?

    是否可以以某种方式将条件语句分配给可选参数 我最初的尝试使用以下结构 但没有成功 y some value if x someValue else anotherValue 其中 x 已预先分配 更具体地说 我希望我的函数签名看起来像 de
  • 批量插入语法 SQL

    我无法通过 C 在我的 Web 服务器或本地运行 SQL 批量插入语句 我正在尝试将数据从文本文件导入到 SQL Web Server 连接到 Web 服务器 SQL Server 后 我使用的声明如下 BULK INSERT dbo FN
  • TypeScript - 添加动态命名属性以返回类型

    假设我有一个函数 它接受一个对象 一个键和一个值 然后返回一个新对象 该新对象扩展了原始对象并添加了键和值 function addKeyValue obj Object key string value any return obj ke
  • 无法使用cmake构建Opencv项目

    因此 我尝试使用 cmake 构建一个 opencv 项目 但同时使用 GUI 实用程序和命令行工具 但仍然弹出相同的错误 CMake Warning at cmake modules FindOpenCV cmake 160 messag
  • Googletest - 生成模板类实例化的值

    我在使用 Google 测试时遇到问题 我有一个相当于以下内容的代码 A h template
  • 如何使用vbscript编写事件日志

    我想在这个 vbscript 运行时写入事件日志 我怎样才能 谢谢你的帮助 Like so Set shell CreateObject WScript Shell shell LogEvent 4 Your Message Here 4
  • 适用于 iOS 的具有 Retina 显示屏的本地化应用程序图标

    我在显示具有视网膜显示支持的本地化应用程序图标时遇到问题 这怎么可能做到呢 我尝试制作 Icon png 和 电子邮件受保护 cdn cgi l email protection本地化 然后我尝试将 proj Info plist 本地化并
  • 可视化 XML 树结构

    我有几个 XML 文件 它们具有相似的结构 但有一些我不能忽视的差异 它们都是 TEI 文件 我正在寻找一种概述主要结构的方法 以下面的文字为例
  • R 中的 PCA 多重图

    我有一个如下所示的数据集 India China Brasil Russia SAfrica Kenya States Indonesia States Argentina Chile Netherlands HongKong 0 0854