สิ่งนี้คล้ายกับBootstrap: การประเมินอยู่นอกช่วงความมั่นใจ
ฉันมีข้อมูลบางอย่างที่แสดงถึงจำนวนของจีโนไทป์ในประชากร ฉันต้องการประเมินความหลากหลายทางพันธุกรรมโดยใช้ดัชนีของแชนนอนและสร้างช่วงความมั่นใจโดยใช้การบูตสแตรป อย่างไรก็ตามฉันสังเกตเห็นว่าการประเมินผ่านการบูตสแตรปปิ้งมีแนวโน้มที่จะมีอคติอย่างมากและส่งผลให้เกิดช่วงความมั่นใจที่อยู่นอกสถิติที่ฉันสังเกตเห็น
ด้านล่างเป็นตัวอย่าง
# 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]))
}
การสร้างข้อมูล
set.seed(5000)
X <- rmultinom(1, 100, prob = rep(1, 50))[, 1]
การคำนวณ
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
การสร้าง CIs ด้วยการแก้ไขอคติ
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
สมมติว่าความแปรปรวนของเสื้อสามารถใช้สำหรับการแปรปรวนของt0
norm.ci(t0 = boot.out$t0, var.t0 = var(boot.out$t[, 1]))[-1]
## [1] 3.55475 3.80421
มันจะถูกต้องหรือไม่ที่จะรายงาน CI ที่มีศูนย์กลางอยู่ที่t0 ? มีวิธีที่ดีกว่าในการสร้าง bootstrap หรือไม่?