模拟与多个其他向量相关的数据

Simulate data with correlations to multiple other vectors

我正在尝试模拟一个与其他几个向量相关的向量。我想出了用于模拟与另一个向量相关的向量的代码,但无法弄清楚如何通过与多个其他向量的相关性来模拟它:

这是我的代码:

library(faux)
p4<-rnorm_pre(data$p1, mu = 0, sd = 10, r = 0.4, empirical = FALSE)

我想做的是以某种方式为要关联的模拟特征识别多个向量。我不确定这个库是否最好用

我的数据看起来像

 ID  p1  p2  p3 
 1 0.25 0.30 0.02
 2 0.05 0.67 0.18
 3 0.09 0.31 0.38
 4 0.55 0.87 0.21
 5 0.25 0.64 0.01

我想添加另一列名为 p4 的列,它是模拟数据的向量,与 p1 和 p3 相关。

非常感谢任何建议。

新向量可以像vignette说的那样创建。

library(faux)

data$p4 <- rnorm_pre(
  data[-1],             # remove 1st column ID
  mu = 0, 
  sd = 4, 
  r = c(-0.2, 0.2, 0.1)
)

cor(data[-1])
#           p1         p2          p3          p4
#p1  1.0000000  0.5695821 -0.20120754 -0.21833687
#p2  0.5695821  1.0000000 -0.08533300  0.60506386
#p3 -0.2012075 -0.0853330  1.00000000  0.06803646
#p4 -0.2183369  0.6050639  0.06803646  1.00000000

这是一种指定仅与列 p1p3 相关的方法。

data$p5 <- rnorm_pre(
  data[c("p1", "p3")],  # only columns p1 and p3
  mu = 0,
  sd = 1,
  r = c(0.5, -0.2)
)

cor(data[c("p1", "p3", "p5")])
#           p1         p3         p5
#p1  1.0000000 -0.2012075  0.5772403
#p3 -0.2012075  1.0000000 -0.0806465
#p5  0.5772403 -0.0806465  1.0000000

dput 格式的数据

data <-
structure(list(ID = 1:5, p1 = c(0.25, 0.05, 0.09, 0.55, 0.25), 
    p2 = c(0.3, 0.67, 0.31, 0.87, 0.64), p3 = c(0.02, 0.18, 0.38, 
    0.21, 0.01)), class = "data.frame", row.names = c(NA, -5L))