如何使用数据集列表上的分组变量进行偏相关分析

问题描述 投票:0回答:1

我正在使用以下可能适合我的情况的可重现示例。如果可能的话,我一直在尝试执行

mpg
disp,  hp, vs
之间的偏相关分析。我不确定
pcor function
是否可以做到这一点,但我准备的代码如下:

 list = list(mtcars, mtcars)
    list = lapply(list, function(x) x %>%
                    mutate(gear = as.factor(gear)))
    library(ggm)
    lapply(list, function(x) x %>% 
             group_by(gear) %>% pcor(c(mpg, disp,  hp, vs), var(x)))

我不确定它出了什么问题,但我收到错误:

Error in pcor(., c(mpg, disp, hp, vs), var(x)) : unused argument (var(x))

您有什么建议来解决这个问题? MoDo 您建议使用不同且分离的数据集来运行此分析,但使用不同的迭代方法(我想使用这种方式)?

谢谢

r iteration correlation partial
1个回答
0
投票

你的语法在这里没有任何意义。

ggm::pcor
函数接受两个参数,但您传递了三个参数(请记住,当您使用管道运算符时,最后一个计算的结果将作为以下函数的第一个参数传递)。

文档还说第一个参数

u
应该是:

长度> 1的整数向量。前两个整数是必须计算其相关性的变量的索引。向量的其余部分是 调理套装。

事实证明,这并不完全正确,因为该示例继续向参数 u 提供由

列名称 
组成的向量,该向量用于对传递给参数
S 的矩阵的行和列进行子集化
.

底线是,如果您想要列表中每个数据帧的每个级别

gear
的部分相关性,您将需要执行以下操作:

library(ggm)

lapply(list, function(x) {
  sapply(split(x, x$gear), function(x) {
    pcor(u = c('mpg', 'disp', 'hp', 'vs'), S = var(x))
  })
})
#> [[1]]
#>          3          4          5 
#> -0.3572209 -0.7089970 -0.2900153 
#> 
#> [[2]]
#>          3          4          5 
#> -0.3572209 -0.7089970 -0.2900153
© www.soinside.com 2019 - 2024. All rights reserved.