如何计算0';R中的每个引导中都有什么?
我通过泊松分布使用两部分跨栏模型生成数据。此模型的一部分仅生成0和1的计数数据。我正在使用bootstrap方法生成足够多的观测值,以便在我的模型中找到错误和功率,以查看此模型是否合适 我的问题只是“如何计算每次迭代中0的数量?”。偶尔,R会在其中一次迭代中抛出一个错误,该错误与solve.default(如.matrix(fit_zero$hessian)):Lapack例程dgesv:系统完全是单数的:U[1,1]=0 这使我得出结论,矩阵要么全部为0,要么全部为1。 我的下一步是尝试计算每次迭代中0的数量。然而,我不知道如何做到这一点。我遇到的两个问题是,如果我使用1000个引导进行1000次迭代,如何获得每次迭代,以及如何实际计算(并打印)循环中的零数量。我的尝试如下:如何计算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。 我的下一步是尝试计算每
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。我想我需要先确定它是如何打印的。