Запись функции R - получение ошибки: NaNs произвел ошибку в tsort [U + 1], только 0 могут смешиваться с отрицательными индексами - PullRequest
0 голосов
/ 01 октября 2019

Я создаю функцию 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)))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...