Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算0';R中的每个引导中都有什么?_R_Loops_Foreach - Fatal编程技术网

如何计算0';R中的每个引导中都有什么?

如何计算0';R中的每个引导中都有什么?,r,loops,foreach,R,Loops,Foreach,我通过泊松分布使用两部分跨栏模型生成数据。此模型的一部分仅生成0和1的计数数据。我正在使用bootstrap方法生成足够多的观测值,以便在我的模型中找到错误和功率,以查看此模型是否合适 我的问题只是“如何计算每次迭代中0的数量?”。偶尔,R会在其中一次迭代中抛出一个错误,该错误与solve.default(如.matrix(fit_zero$hessian)):Lapack例程dgesv:系统完全是单数的:U[1,1]=0 这使我得出结论,矩阵要么全部为0,要么全部为1。 我的下一步是尝试计算每

我通过泊松分布使用两部分跨栏模型生成数据。此模型的一部分仅生成0和1的计数数据。我正在使用bootstrap方法生成足够多的观测值,以便在我的模型中找到错误和功率,以查看此模型是否合适

我的问题只是“如何计算每次迭代中0的数量?”。偶尔,R会在其中一次迭代中抛出一个错误,该错误与solve.default(如.matrix(fit_zero$hessian)):Lapack例程dgesv:系统完全是单数的:U[1,1]=0

这使我得出结论,矩阵要么全部为0,要么全部为1。 我的下一步是尝试计算每次迭代中0的数量。然而,我不知道如何做到这一点。我遇到的两个问题是,如果我使用1000个引导进行1000次迭代,如何获得每次迭代,以及如何实际计算(并打印)循环中的零数量。我的尝试如下:


    errors <- 0
    no.zeros <- 0

    results <- foreach(iiii=icount(iterations), .combine = rbind) %do%{
      message("Parameter set: ",parameters.index, "/", nrow(kParameters$matrix), '\t', "Iteration: ", iiii, "/", iterations)
      data  = data.frame(gen.hurdle(n, a, b, b, c, c, i, i, i))
      data0 = data.frame(gen.hurdle(n, a, 0, 0, c, c, i, i, i))

      p_0     =1-mean(data$z_p)
      p_0_hat =1-mean(data$tstar)
      p_0_b0     =1-mean(data0$z_p)
      p_0_hat_b0 =1-mean(data0$tstar)

      #power

      fit1      = lm(m ~ x, data=data)
      fit2      = hurdle(formula = y ~ m + x, data=data, dist = "poisson", zero.dist = "binomial")

      a_hat     = summary(fit1)$coef[2,1]
      b1_hat    = summary(fit2)[[1]]$count[2,1]
      b2_hat    = summary(fit2)[[1]]$zero[2,1]
      ab1_hat   = prod(a_hat,b1_hat)
      ab2_hat   = prod(a_hat,b2_hat)

      #type I error

      fit3       = lm(m ~ x, data=data0)
      fit4       = hurdle(formula = y ~ m + x, data=data0, dist = "poisson", zero.dist = "binomial")

      a_hat_b0   = summary(fit3)$coef[2,1]
      b1_hat_b0  = summary(fit4)[[1]]$count[2,1]
      b2_hat_b0  = summary(fit4)[[1]]$zero[2,1]
      ab1_hat_b0 = prod(a_hat_b0,b1_hat_b0)
      ab2_hat_b0 = prod(a_hat_b0,b2_hat_b0)


      message(paste0("Bootstrapping..."))
      # bootstrap
      boot <- foreach(jjjj = icount(r), .combine = rbind, .errorhandling = "remove", .packages = c("pscl")) %dopar%{

        #power

        boot.data = data[sample(nrow(data), replace = TRUE), ]

        has.zero <- prod(boot.data$y) > 0
        if(!has.zero) {
          no.zeros <- no.zeros + 1
          boot.data$y[1] = 0
          warning(paste0("Iteration #",iiii, "  Bootstrap #",jjjj, " had no zeros!"), immediate. = TRUE, call. = FALSE)
        }


错误我认为
sum(boot.data$y==0)
应该给出零的数量。或者您可以测试
all(boot.data$y==0)
(对于所有零)还是
any(boot.data$y!=0)
(对于非零)。

谢谢您这么快回复我。我面临的一个大问题是,在打印时,我只打印大组初始索引中54个变化的数字。因此,我不会得到1000*1000条不同的线来告诉我有多少个0。我想我需要先确定它是如何打印的。