Ini mirip dengan Bootstrap: perkiraan di luar interval kepercayaan
Saya memiliki beberapa data yang mewakili jumlah genotipe dalam suatu populasi. Saya ingin memperkirakan keragaman genetik menggunakan indeks Shannon dan juga menghasilkan interval kepercayaan menggunakan bootstrap. Namun, saya perhatikan bahwa perkiraan melalui bootstrap cenderung sangat bias dan menghasilkan interval kepercayaan yang berada di luar statistik yang saya amati.
Di bawah ini adalah contohnya.
# 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]))
}
Pembuatan data
set.seed(5000)
X <- rmultinom(1, 100, prob = rep(1, 50))[, 1]
Perhitungan
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
Menghasilkan CI dengan bias-koreksi
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
Dengan asumsi bahwa varian t dapat digunakan untuk varian t0 .
norm.ci(t0 = boot.out$t0, var.t0 = var(boot.out$t[, 1]))[-1]
## [1] 3.55475 3.80421
Apakah benar melaporkan CI terpusat sekitar t0 ? Apakah ada cara yang lebih baik untuk menghasilkan bootstrap?
Sebagaimana dijawab oleh @NRH, masalahnya bukan bahwa bootstrap memberikan hasil yang bias. Itu adalah estimasi "plug in" sederhana dari entropi Shannon, berdasarkan data dari sampel, bias ke bawah dari nilai populasi yang sebenarnya.
Masalah ini diakui pada 1950-an, dalam beberapa tahun setelah definisi indeks ini. Makalah ini membahas masalah mendasar, dengan referensi ke literatur terkait.
Masalah muncul dari hubungan nonlinear dari probabilitas individu dengan ukuran entropi ini. Dalam hal ini, fraksi genotipe yang diamati untuk gen i dalam sampel n , , adalah penaksir yang tidak bias dari probabilitas sebenarnya, . Tetapi ketika nilai yang diamati diterapkan pada formula "plug in" untuk entropi lebih dari gen M:p^n,i pn,i
hubungan non-linear berarti bahwa nilai yang dihasilkan adalah bias di bawah perkiraan keanekaragaman genetik yang sebenarnya.
Bias tergantung pada jumlah gen, dan jumlah pengamatan, . Untuk urutan pertama, estimasi plug-in akan lebih rendah dari entropi sebenarnya dengan jumlah . Koreksi tingkat tinggi dievaluasi dalam makalah yang ditautkan di atas.N ( M - 1 ) / 2 NM N (M−1)/2N
Ada paket di R yang menangani masalah ini. The
simboot
paket khususnya memiliki fungsiestShannonf
yang membuat koreksi Bias ini, dan fungsisbdiv
untuk menghitung interval keyakinan. Akan lebih baik menggunakan alat sumber terbuka yang sudah mapan tersebut untuk analisis Anda daripada mencoba memulai dari awal.sumber
simboot
paket terlihat menjanjikan, tapi tampaknya tidak cocok untuk tujuan saya karena membutuhkan sampel kontrol untuk memperkirakan interval kepercayaan.simboot
tidak memenuhi kebutuhan Anda, Google "shannon entropi Bias r" untuk link ke paket R lainnya sepertientropy
,entropart
, danEntropyEstimation
.