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 多重图 的相关文章

  • mclapply 调用应该嵌套吗?

    正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
  • 自定义 colorRampPalette 中的颜色条

    我定义了一个 colorRampPalette my colors colorRampPalette c light green yellow orange red 如何为其绘制颜色条 图例 项目 最好仅使用基本包 我正在寻找一个充满该颜色
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 向图像添加坐标,以用作 R 中的 Leaflet、Shiny 和 Shinydashboard 包中的地图

    我计划使用 Leaflet Shiny 和 Shinydashboard 沿着以下很棒的路线创建一个带有医院 OHS 事件标记的交互式地图交互式地图和直方图模板 http shiny rstudio com gallery superzip
  • 如何管理和处理 R 包中的补充数据

    我想在我的 R 包中添加补充数据 我知道关于LazyData true in DESCRIPTION 但不想使用它 因为示例数据相当大 所以我创建了一个目录 data 其中包含两个 RData文件和一个datalist 我添加使用tools
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • 使用 purrr::map() 更改和分配新变量名称

    我刚刚开始掌握编写函数并使用 lapply purrr map 使我的代码更加简洁 但显然还没有完全理解它 在我当前的示例中 我想重命名 lm robust 对象的系数名称 然后更改 lm robust 对象以合并新名称 我目前这样做 li
  • 列槽不足

    当尝试为 data table 中的每个变量 108 个变量 创建 12 个滞后时 我收到一条错误 指出列槽不足 此操作应创建大约 1200 个变量或列 Data A as data table Datos A Varnames names
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1
  • ggplot堆叠条 - 隐藏标签但保留标签位置

    我在 ggplot 中有一个堆积条形图 其中 geom text 标签位于每个条形的中心 我想隐藏小条上的标签 以便图表看起来不会过于拥挤 我可以使用下面的代码来完成此操作 但它会弄乱标签的位置 正如您在下面的链接图片中看到的那样 它们不再
  • 在 R 中使用 spplot 将多个绘图放在一个页面上?

    我知道如何在使用简单函数图时绘制两个图 old par lt par mfrow c 1 2 plot faithful main Faithful eruptions plot large islands main Islands yla
  • 再现频率矩阵图

    我想在 R 中重新创建一个情节 情节如下 来源 Boring E G 1941 作为动态平衡的统计频率 心理学评论 48 4 279 这略高于我的工资等级 能力 因此在这里询问 无聊的状态 第一次 A 只能出现 从不 0 或 总是 1 在
  • 在单个显示器中绘制多个 jpeg 图像

    我需要在单个组合显示器 或画布 中绘制和显示多个 jpeg 图像 例如 假设我有图像 a b c d jpg 每个图像的大小不同 我想将它们绘制在 2x2 网格的一页上 能够为每个子图设置标题也很好 我一直在彻底寻找解决方案 但不知道如何去
  • 哪里可以找到可靠的 K-medoid(不是 k-means)开源软件/工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在学习 K medoids 算法 所以如果我提出不恰当的问题 我很抱歉 据我所知 K medoid
  • 使用 R 读取和转换二进制原始数据

    我有一个file https drive google com file d 0BxMpk0nhnJy6SFhxd2xuMzJYYlk edit usp sharing其中包含原始 二进制数据和 ascii 它包含一个时间戳和一个代表速度的
  • read.table 和 read.delim 函数之间的区别

    两者有什么区别read table and read delim R语言中的函数 当您不确定函数的作用时 除了阅读帮助页面之外 您还可以检查函数的实际代码 例如 输入read delim显示该函数包含以下代码 gt read delim f
  • 栅格堆叠后如何写入?

    我想操作几个光栅文件 然后再次写入它们 rasterfiles lt list files C data envi full names TRUE d1 lt overlay stack rasterfiles fun function x
  • Shiny可以识别用鼠标选择的文本(突出显示的文本)吗?

    我需要用户将文本片段分配给 Shiny 中的类别或 代码 基本上 我希望用户突出显示输出中的文本 在下面的示例中 来自table or text输出 然后按一个按钮 code 并将选定的文本分配给应用程序内的对象 在下面的应用程序中 所选文
  • 将天气 iframe 嵌入到 Shiny Dashboard 中

    我正在尝试将 Forecast io 的天气预报嵌入到闪亮的仪表板中 我最初在使用 符号时遇到了麻烦 但看到一篇文章提供了如何使用特殊字符格式化 HTML 代码的示例 但是 当我运行该应用程序时 我看到一个简单的 未找到 即使我知道该链接有

随机推荐

  • 为什么 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