R函数写入-获取错误:tsort[U+;1]中的NaNs producedError仅为0';s可以与负下标混合
我正在创建一个R函数来计算一个自举偏差校正和加速间隔(不使用任何预安装的软件包)。我的代码似乎正常工作,但实际上正在为间隔的下限和上限编写代码。任何建议都会有帮助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") }
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间隔,给出上限/下限,但这就是我正在努力的地方。