在 R 中建立相关性的采样

Sampling for making a correlation in R

我有以下数据(这是一个简短的例子):

a=c(110.3,126.6,101,7,105.6,111,131.4,109.7,99.5,107.3)
b=c(210,47.5,234.5,223.9,213.4,250.1,198.3,180.3,170.9,118.9)
c=c(0.6,0.9,0.4,0.5,0.6,0.8,0.8,0.5,0.4,0.6)

val= cbind(a,b,c)
val=as.data.frame(val)

我想生成一个带有函数的样本(a 和 b 之间的相关性) 所以我有以下功能:

acc_func <-function(myVal){
  newPop = sample(myVal,nrow(myVal), replace=TRUE)
  return((cor(newPop$a, newPop$b)^2)/mean(newPop$c))
}

results = matrix(,ncol=1,nrow=0)
for(i in 1:1000){
  accNow = acc_func(val)
  results = rbind(results,accNow)
}

head(results)

但由于某些我不明白的原因,R returns 以下消息:

Error in cor(newPop$a, newPop$b) : 
supply both 'x' and 'y' or a matrix-like 'x' 

有什么想法吗?

非常感谢

您可以在 acc_func() 中放置一个大小参数来确定样本大小,如下所示,

acc_func <-function(myVal,size){
  newPop = myVal[sample(1:nrow(myVal),size=size,replace=T),]

  return((cor(newPop$a, newPop$b)^2)/mean(newPop$c))
}


results = matrix(,ncol=1,nrow=0)
for(i in 1:1000){
  accNow = acc_func(val)
  results = rbind(results,accNow)
}


head(results)

给予,

            [,1]
accNow 0.1008954
accNow 0.2389546
accNow 0.3955409
accNow 0.1851096
accNow 0.1526633
accNow 0.3613495