R 模拟与多个其他向量相关的数据
我试图模拟一个与其他几个向量相关的向量。我找到了模拟一个与另一个向量相关的向量的代码,但不知道如何模拟与多个其他向量相关的向量: 这是我的密码:R 模拟与多个其他向量相关的数据,r,simulation,correlation,R,Simulation,Correlation,我试图模拟一个与其他几个向量相关的向量。我找到了模拟一个与另一个向量相关的向量的代码,但不知道如何模拟与多个其他向量相关的向量: 这是我的密码: library(faux) p4<-rnorm_pre(data$p1, mu = 0, sd = 10, r = 0.4, empirical = FALSE) 我想添加另一列,称为p4,它是模拟数据的向量,与p1和p3相关 非常感谢您的任何建议。新的向量可以像上面所说的那样创建 数据采用dput格式 data By“与多个其他参数的相关性”
library(faux)
p4<-rnorm_pre(data$p1, mu = 0, sd = 10, r = 0.4, empirical = FALSE)
我想添加另一列,称为p4,它是模拟数据的向量,与p1和p3相关
非常感谢您的任何建议。新的向量可以像上面所说的那样创建 数据采用
dput
格式
data By“与多个其他参数的相关性”你是指“与多个其他向量的相关性”吗?你能发布样本数据吗?请使用dput(数据$p1)
的输出编辑问题。或者,如果使用dput(head(data$p1,20))
@RuiBarradas的输出太大,我已经使用示例数据(如果非常大,则使用完整的数据集)进行了更新。是的,我指的是矢量。谢谢你的回复!我只想模拟一个向量(p4)。其他向量已经存在。创建数据关联矩阵时,它还创建了所有其他p#向量之间的关联。例如,我希望p4与p1的相关性为-0.3,与p3的相关性为0.2。我认为我不理解代码的过程@芮Barradas@Cae.rich函数rnorm_pre
创建具有给定平均值、标准差和相关性的新向量。这些是人口统计,因为默认情况下,emerical=FALSE
。数据相关矩阵仅用于查看函数设法与其他向量生成的向量p4
的实际相关值。@Cae.rich例如,我要求cor(p1,p4)==-0.2
并获得-0.21833687
cor(p2,p4)
甚至与作为参数传递给函数的所需值相差很远。明白了!这是有道理的。所以r=c(-0.2,0.2,0.1)分别表示p4和p1、p2和p3之间的期望相关性?是否有一种方法可以确定某些向量的相关性,而不是所有向量的相关性。例如,p1和p3,但没有p2的特定相关性?谢谢你所有的帮助help@Cae.rich如果将data.frame作为子集,则可以指定某些向量的相关性。frame将使用示例进行编辑。
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
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
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
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))