Bu, Bootstrap'e benzer : tahmin, güven aralığının dışında
Bir popülasyondaki genotiplerin sayısını temsil eden bazı verilerim var. Shannon dizinini kullanarak genetik çeşitliliği tahmin etmek ve ayrıca bootstrapping kullanarak bir güven aralığı oluşturmak istiyorum. Bununla birlikte, önyükleme yoluyla tahminin son derece önyargılı olduğunu ve gözlemlediğim istatistik dışında kalan bir güven aralığıyla sonuçlandığını fark ettim.
Aşağıda bir örnek verilmiştir.
# Shannon's index
H <- function(x){
x <- x/sum(x)
x <- -x * log(x, exp(1))
return(sum(x, na.rm = TRUE))
}
# The version for bootstrapping
H.boot <- function(x, i){
H(tabulate(x[i]))
}
Veri üretimi
set.seed(5000)
X <- rmultinom(1, 100, prob = rep(1, 50))[, 1]
Hesaplama
H(X)
## [1] 3.67948
xi <- rep(1:length(X), X)
H.boot(xi)
## [1] 3.67948
library("boot")
types <- c("norm", "perc", "basic")
(boot.out <- boot::boot(xi, statistic = H.boot, R = 1000L))
##
## CASE RESAMPLING BOOTSTRAP FOR CENSORED DATA
##
##
## Call:
## boot::boot(data = xi, statistic = H.boot, R = 1000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* 3.67948 -0.2456241 0.06363903
Önyargı düzeltme ile CI oluşturma
boot.ci(boot.out, type = types)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 1000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = boot.out, type = types)
##
## Intervals :
## Level Normal Basic Percentile
## 95% ( 3.800, 4.050 ) ( 3.810, 4.051 ) ( 3.308, 3.549 )
## Calculations and Intervals on Original Scale
T varyansının t0 varyansı için kullanılabileceğini varsayarsak .
norm.ci(t0 = boot.out$t0, var.t0 = var(boot.out$t[, 1]))[-1]
## [1] 3.55475 3.80421
CI etrafında bildirmek doğru olur t0 ? Bootstrap'i oluşturmanın daha iyi bir yolu var mı?