R函数写入-获取错误:tsort[U+;1]中的NaNs producedError仅为0';s可以与负下标混合

R函数写入-获取错误:tsort[U+;1]中的NaNs producedError仅为0';s可以与负下标混合,r,R,我正在创建一个R函数来计算一个自举偏差校正和加速间隔(不使用任何预安装的软件包)。我的代码似乎正常工作,但实际上正在为间隔的下限和上限编写代码。任何建议都会有帮助 BCa <- function(stat,X,k,level=0.95,...){ if(!is.numeric(k)||k<=0){ stop("The number of bootstrap resamples 'k' must be a numeric value greater than 0") }

我正在创建一个R函数来计算一个自举偏差校正和加速间隔(不使用任何预安装的软件包)。我的代码似乎正常工作,但实际上正在为间隔的下限和上限编写代码。任何建议都会有帮助

BCa <- function(stat,X,k,level=0.95,...){

if(!is.numeric(k)||k<=0){
    stop("The number of bootstrap resamples 'k' must be a numeric value greater than 0")
}

  t.star <- stat(X,...)
  t.k <- rep(NA,k)

   for(i in 1:k){
    Xi <- sample(X,replace=TRUE)
    t.k[i] <- stat(Xi,...)
   }

  z0 <- qnorm(mean(t.k<t.star))

  n <- length(X)
  t.minus.j <- rep(NA,n)
  for(j in 1:n){
    Xj <- X[-j]
     t.minus.j[j]<- stat(Xj,...)
  }

  t.bar.minus <- mean(t.minus.j)
  t.diff <- t.bar.minus - t.minus.j
  a <- ((sum(t.diff^3))/(6*(t.diff^2)^3/2))  
  alpha <- 1-level
  tsort <- sort(t.k, decreasing = FALSE)

  L <- pnorm(z0 + ((z0+qnorm(alpha/2))/((1-a)*z0+qnorm(alpha/2))))

  U <- qnorm(z0 + ((z0+qnorm(alpha/2))/((1-a)*z0+qnorm(alpha/2))))

  if(!is.integer(L)){
 L <- floor(L*(k+1))
  }
  if(!is.integer(U)){
 U <- ceiling(U*(k+1))
  }

  lower.limit <- tsort[L]
  upper.limit <- tsort[U+1]

  return(list(t.star=t.star,ci=c(lower.limit,upper.limit)))
}

BCa查看上面的代码很难理解您要做什么。你能展示你对函数的输入和相应的预期输出吗?@Ronak Shah,输入看起来是这样的:BCa(stat=mean,X=Nile,k=9999,level=0.95),例如,使用R中的Nile数据。输出应该给出这个数据的BCa间隔,给出上限/下限,但这就是我正在努力的地方。