r-复制一个代码以获得m个不同的输出



在此处输入图像描述

数据V呈现从二变量对数正态分布获得的两个数据V1和V2 I。

library(MASS)
set.seed(21)
X<-mvrnorm(n = 40, mu = c(0, 0), Sigma = matrix(c(1, 2, 2, 5), ncol = 2))
Y<-exp(X)
DataV <-as.data.frame(Y)

然后,我根据Fisher的z变换为相关测试产生了95%的置信区间。为了获得这个间隔,我使用了with(DataV, cor.test(V1,V2)$conf.int)

我的目标是复制代码,这样我就有m个不同的置信区间。

我尝试使用"rep"、"replicate",甚至"list"(如您在该示例中看到的(,但它实际上复制了相同的CI,而不是不同的CI。

listA = list() # Make an empty list to save output in
for (i in 1:3) { # Indicate number of iterations with "i"
listA[[i]] = with (DataY, cor.test(V1,V2)$conf.int) # Save output in list for each iteration
}
listA

首先,从要复制的操作中生成一个函数:

library(MASS)
set.seed(0815)
fun_rep <- function(){
X<-mvrnorm(n = 40, mu = c(0, 0), Sigma = matrix(c(1, 2, 2, 5), ncol = 2))
Y<-exp(X)
DataY <-as.data.frame(Y)
with (DataY, cor.test(V1,V2)$conf.int)
}
replicate(10, fun_rep())
#           [,1]      [,2]      [,3]      [,4]      [,5]     [,6]      [,7]      [,8]      [,9]     [,10]
# [1,] 0.3286053 0.6030402 0.2133789 0.8569425 0.5625251 0.471498 0.3792115 0.7632626 0.5622085 0.4234303
# [2,] 0.7555212 0.8722339 0.6968450 0.9584212 0.8567383 0.819872 0.7792942 0.9286401 0.8566151 0.7991648

每一列表示一个新的迭代,行是输出置信区间的边界。对于m个CI,将10替换为m。这有帮助吗?

相关内容

  • 没有找到相关文章

最新更新