假设我有一个向量:
Q<-rnorm(10,mean=0,sd=20)
从这个向量我想:
1.
创建 10 个变量(a1...a10)
,每个变量与 Q 的相关性高于 0.5(即介于 0.5 和 1 之间)。
第一部分可以通过以下方式完成:
t1<-sapply(1:10, function(x) jitter(t, factor=100))
2.
这些变量中的每一个(a1...a10)
都应该具有预先指定的相互关系。例如,一些应该是相关的 .8 和一些 -.2。
这两件事能做到吗?
我创建了一个相关矩阵:
cor.table <- matrix( sample( c(0.9,-0.9) , 2500 , prob = c( 0.8 , 0.2 ) , repl = TRUE ) , 50 , 50 )
k=1
while (k<=length(cor.table[1,])){
cor.table[1,k]<-0.55
k=k+1
}
k=1
while (k<=length(cor.table[,1])){
cor.table[k,1]<-0.55
k=k+1
}
diag(cor.table) <- 1
但是,当我应用@SprengMeister 提供的出色解决方案时,我得到了错误:
Error in eigen(cor.table)$values > 0 :
invalid comparison with complex values
继续这里:相关矩阵的特征值分解