【发布时间】:2017-12-12 14:47:58
【问题描述】:
我想模拟一个与其他两个现有变量相关的向量。到目前为止我尝试了什么
# some correlation matrix
desiredCorrelations = matrix(c(1, .4, 0,
.4, 1, .3,
0, .3, 1), nrow = 3)
# some simulated data based on the correlation matrix
dat = mvrnorm(n = 1000, mu = rep(3, 3), Sigma = desiredCorrelations, empirical = TRUE)
n = nrow(dat)
k = ncol(desiredCorrelations)
x = matrix( rnorm(n*k), nc=k )
x[,1] = dat[,1]
y = x %*% solve(chol(var(x))) %*% chol(desiredCorrelations)
# cor(y) # Desired correlation matrix
apply(dat, 2, summary)
apply(y, 2, summary)
根据这段代码,相关性是正确的,但只有 y 的第一列与原始模拟数据的第一列相同。但是,我希望两列保持不变,而第三列是在考虑所需相关矩阵的情况下进行模拟的。
提前感谢您的任何建议或提示!
【问题讨论】: