यह बूटस्ट्रैप के समान है : अनुमान विश्वास अंतराल के बाहर है
मेरे पास कुछ डेटा है जो एक आबादी में जीनोटाइप के मायने रखता है। मैं शैनन के सूचकांक का उपयोग करके आनुवंशिक विविधता का अनुमान लगाना चाहता हूं और बूटस्ट्रैपिंग का उपयोग करके एक आत्मविश्वास अंतराल भी उत्पन्न करता हूं। मैंने देखा है, हालांकि, बूटस्ट्रैपिंग के माध्यम से अनुमान बेहद पक्षपाती है और एक आत्मविश्वास अंतराल में परिणाम देता है जो मेरे देखे गए आंकड़े के बाहर स्थित है।
नीचे एक उदाहरण है।
# 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
पूर्वाग्रह-सुधार के साथ सीआई जनरेट करना
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 के प्रसरण का उपयोग t0 के विचरण के लिए किया जा सकता है ।
norm.ci(t0 = boot.out$t0, var.t0 = var(boot.out$t[, 1]))[-1]
## [1] 3.55475 3.80421
क्या t0 के आसपास CI केंद्रित रिपोर्ट करना सही होगा ? क्या बूटस्ट्रैप उत्पन्न करने का एक बेहतर तरीका है?