ggpairs 中的部分 cor (pcor.test)

2024-01-04

我可以用吗pcor (from ppcor)或者实际上将我预先制作的任何相关矩阵放入以下代码中ggpairs(在里面upper =) 代替cor?

我想在 ggpairs 中集成一个部分相关矩阵或 pcor。

library(GGally)
a <- as.numeric(1:10)
b <- as.numeric(a*a)
c <- as.numeric(a/b)
D <- as.factor(c("A", "B", "C", "A", "B", "C","A", "B", "C","A"))
abcd <- data.frame(a,b,c, D)

p <- ggpairs(abcd, columns = c("a", "b", "c"), title = "All Bivariate analysis", 
           upper = list(continuous = wrap("cor",   size = 6)),
           lower = list(continuous = wrap("smooth", alpha = 0.6, size = 0.1)),      
           mapping = aes(color = D))

for (i in 1:p$nrow) {
  for (j in 1:p$ncol) {
    p[i,j] <- p[i,j] + 
      scale_fill_manual(values=c("grey25", "slategrey", "grey85")) +
      scale_color_manual(values=c("grey37", "slategrey", "grey75"))  
  }
}

d <- p + theme(axis.text.x = element_text(face = "bold", size = 10 ),
             axis.text.y = element_text(face = "bold", size = 10),
             strip.text = element_text(size = 20))
d

我想用奇妙的ggpairs但具有偏相关矩阵。
是否可以? 我想我应该在这部分这样做:

upper = list(continuous = wrap("cor",   size = 6))

查看代码GGally::ggpairs你可以看到你可以提供一个函数upper需要产生一个ggplot。当提供这样的函数存根时:

 upper = list(continuous = function(data, mapping) { print(list(data, mapping)) })

您将看到,对于每个面板,您都会获得整个面板data.frame and an aes映射描述 x 轴和 y 轴上的内容以及您可能设置的其他美学,例如:

[[1]]
    a   b         c D
1   1   1 1.0000000 A
2   2   4 0.5000000 B
3   3   9 0.3333333 C
4   4  16 0.2500000 A
5   5  25 0.2000000 B
6   6  36 0.1666667 C
7   7  49 0.1428571 A
8   8  64 0.1250000 B
9   9  81 0.1111111 C
10 10 100 0.1000000 A

[[2]]
Aesthetic mapping: 
* `x`      -> `b`
* `y`      -> `a`
* `colour` -> `D`

根据这些信息,我们需要

  1. 计算pcor
  2. 提取相关系数

这有点棘手,因为我们需要计算分组pcor(每个级别一个系数colour -> D+ 您稍后可能想要包含的其他分组),我们需要从映射中获取分组结构,这也不是那么简单。

长话短说,下面的存根向您展示了方向,您可以从那里进一步微调上图的外观:

library(tidyverse)
pcor_panel <- function(data, mapping, ...) {
  ## remove x, y mapping
  grp_aes <- mapping[setdiff(names(mapping), c("x", "y"))]
  ## extract the columns to which x and y is mapped
  xy <- sapply(mapping[c("x", "y")], rlang::as_name)
  ## calculate pcor per group
  stats <- data %>%
    group_by(!!!unname(unclass(grp_aes))) %>%
    group_modify(function(dat, grp) {
      res <- pcor(dat)$estimate %>%
        as_tibble() %>%
        setNames(names(dat)) ## needed b/c in pcor names are sometimes messed up
      res <- res %>%
        mutate(x = names(res)) %>%
        gather(y, pcor, -x)
      res %>%
        filter(x == xy[1], y == xy[2]) ## look only at the pcors of this panel
    }) %>% 
    ungroup() %>%
    mutate(x = 1, y = seq_along(y))
  ggplot(stats, aes(x, y, label = round(pcor, 3))) +
    geom_text(grp_aes) +
    ylim(range(stats$y) + c(-2, 2))
}

ggpairs(abcd, columns = c("a", "b", "c"), title = "All Bivariate analysis", 
        upper = list(continuous = pcor_panel),
        lower = list(continuous = wrap("smooth", alpha = 0.6, size = 0.1)),      
        mapping = aes(color = D))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggpairs 中的部分 cor (pcor.test) 的相关文章

随机推荐

  • 未设置对象变量或 With 块变量(错误 91)

    我有以下代码 Sub AddSources Dim pubPage As Page Dim pubShape As Shape Dim hprlink As Hyperlink Dim origAddress As String Dim e
  • mac osx:无法使用 virtualenv

    我正在尝试使用 virtualenv 创建一个环境 virtualenv test New python executable in test bin python Error Errno 2 No such file or directo
  • jquery从外部页面循环链接到特定幻灯片?

    仔细研究了所有其他问题 但我无法弄清楚这一点 我有一个主页 其中包含我使用 jquery 循环插件的另一个页面的某些幻灯片 我需要做的是将主页上的链接直接链接到不是组中第一张幻灯片的幻灯片 没什么那么复杂 我的主页上有一个这样的链接 a h
  • PHP preg_replace 的 JavaScript 等效项

    我一直在寻找 PHP 的 js 等效项preg replace功能和我到目前为止发现的只是string replace 但是我不知道如何将我的正则表达式转换为 JavaScript 这是我的 PHP 代码 preg replace str
  • ios 7 模拟器不会为针对 ios 6.1 sdk 编译的应用程序提供回退用户界面

    我们的 ios6 1 sdk 编译的应用程序在 ios 6 1 iPhone 4 4s 和 5 设备上运行良好 当在 ios7 iphone 5s 上运行该应用程序时 用户界面仍然看起来像 ios 6 黑色按钮等 但我们对大部分内容都很好
  • 找不到协议socket.getprotobyname

    我正在尝试连接到rabbitMQ服务器 但它在与a的连接时始终失败socket error protocol not found错误 In 1 import pika In 2 pika BlockingConnection pika Co
  • Python PIL 错误地解码 TIFF 颜色(使用不正确的色彩空间)?

    当我使用PIL 1 1 7加载 TIFF 图像时 颜色空间似乎错误 这是怎么回事 The tiff是使用创建的convert test jpg test tiff 但其他 tiff 文件似乎也会发生 可以在以下位置找到 http hul w
  • 以编程方式对 JTable 进行排序

    有没有办法以编程方式对 JTable 进行排序 我让 JTable 的排序工作 使用 setRowSorter 这样当用户按下任何列时 表就会被排序 我知道 SWingX JXTable 可能会工作 但我不想经历这个麻烦 因为其他一切现在都
  • Android 通知有一个彩色图标,而不是变成白色

    我的 Android 应用使用 Firebase Cloud Messaging 进行通知 当收到通知时 该图标不会像其他图标一样变成白色 我在用着targetSdkVersion 23 我的清单中有这个
  • 正则表达式: ?: 符号(问号和冒号符号)[重复]

    这个问题在这里已经有答案了 我有以下 Java 正则表达式 它不是我编写的 我正在尝试修改 class map s match all s match any s x21 x7e 1 40 它类似于this one https stacko
  • 如何配置 php.ini 以使用 gmail 作为邮件服务器

    I want to learn yii as my first framework And I m trying to make the contact form work But I got this error 我已经配置了 php i
  • 通知通过旧意图附加

    我正在通过以下代码在 BroadcastReceiver 内创建通知 String ns Context NOTIFICATION SERVICE NotificationManager mNotificationManager Notif
  • 像导航抽屉一样实现 Gmail 平板电脑

    我正在研究 Gmail 应用程序的平板电脑设计 在那里面Navigation Drawer实施与其他不同 我已附上图片供您参考 而且当我展开抽屉时 它应该像正常的导航抽屉行为一样发生 我想以同样的方式实施 我正在寻找 但我只找到了这个lin
  • C++ STL 分配器与 new 运算符

    根据C Primer第4版 第755页 有一条注释说 现代 C 程序通常应该使用分配器类 来分配内存 它更安全 更灵活 我不太明白这个说法 到目前为止 我读过的所有材料都教授使用new在C 中分配内存 书中展示了向量类如何使用分配器的示例
  • 创建一个 PHP 文件来下载某个站点的所有链接

    我最近在我的 Firefox 中安装了附加组件 DownThemAll 当我看到它下载大量的 pk3 文件 开源第一人称射击游戏的地图文件 时 我想知道我是否可以使用 PHP 做同样的事情 这就是我的想法 foreach glob http
  • gitignore 除了子子文件夹中的文件之外的所有文件

    我已经尝试了 gitignore 的多种组合 但没有一个能满足我的需要 我有这棵树 jobs jobs projecta config xml jobs projecta garbage jobs projecta more garbage
  • 如何从 jar/bat/ 运行独立的 TestNG 项目

    我有一个 TestNG 项目 没有任何主类 目前它像 Run As TestNG 一样运行 我想将其导出为可运行的 jar 或 jar 以便任何人都可以从命令行输入命令并开始运行测试用例 有人可以帮我解决这个问题吗 或建议任何其他方式以可运
  • 又一个浮点问题

    我已经阅读了这里有关浮点的大部分帖子 并且我了解使用 IEEE 754 并且仅根据以二进制存储数字的性质 无法表示某些分数的基本问题 我试图弄清楚以下问题 如果Python和JavaScript都使用IEEE 754标准 为什么在Pytho
  • 返回 PL/SQL 函数中的表

    我正在开发一个 SQL 项目 我想创建一个返回表的 sql Plus 函数 我做了这样的事情 但它不起作用 我不知道为什么 CREATE OR REPLACE FUNCTION changeNbPersonnes recette IN in
  • ggpairs 中的部分 cor (pcor.test)

    我可以用吗pcor from ppcor 或者实际上将我预先制作的任何相关矩阵放入以下代码中ggpairs 在里面upper 代替cor 我想在 ggpairs 中集成一个部分相关矩阵或 pcor library GGally a lt a