在多次模拟数据时如何在R中设置种子命令?

时间:2015-07-19 02:37:29

标签: r simulation

以下是模拟数据的功能:

    library(mvtnorm)

    simu <- function(J,n_j,g00,g10,g01,g11,s2_0,s2_1,s01){
        N = sum(rep(n_j,J))  

        x = rnorm(N)        
        z = rnorm(J)         

        mu <- c(0,0)
        sig <- matrix(c(s2_0,s01,s01,s2_1),ncol=2)
        u   <- rmvnorm(J,mean=mu,sigma=sig)

        pi_0 <- g00 + g01*z + u[,1]
        pi_1 <- g10 + g11*z + u[,2]

        eta <- rep(pi_0,each=n_j) + (rep(pi_1,each=n_j))*x
        p = exp(eta)/(1+exp(eta))

        y <- rbinom(N,1,p)
       data <- data.frame(Y=y,X=x,Z=rep(z,each=n_j),cluster=rep(1:J,each=n_j))

       return(data)
  } # end function simu

  a=replicate(5,simu(30,5,-1,.3,.3,.3,.13,1,0)

我希望为参数值的各种组合复制函数simu 1000次,这需要花费很长的处理时间。每次我必须从模拟数据计算许多汇总度量。但是在一次会议中是不可能的。所以我需要设置seed命令,以便a=replicate(5,simu(30,5,-1,.3,.3,.3,.13,1,0))在每个会话中生成相同的数据集。

我该怎么做?

我想到了类似的东西:

for (i in 1:5){
    set.seed(i)
    a[i]=simu(30,5,-1,.3,.3,.3,.13,1,0))
 }

但它没有用。如果我可以在不使用seed命令的情况下在其他地方设置for loop命令会更好。有可能吗?

谢谢!问候。

0 个答案:

没有答案