Jest to podobne do Bootstrap: oszacowanie jest poza przedziałem ufności
Mam pewne dane, które reprezentują liczbę genotypów w populacji. Chcę oszacować różnorodność genetyczną za pomocą indeksu Shannona, a także wygenerować przedział ufności za pomocą ładowania początkowego. Zauważyłem jednak, że oszacowanie za pomocą ładowania początkowego jest zwykle bardzo stronnicze i skutkuje przedziałem ufności, który leży poza moją obserwowaną statystyką.
Poniżej znajduje się przykład.
# 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]))
}
Generowanie danych
set.seed(5000)
X <- rmultinom(1, 100, prob = rep(1, 50))[, 1]
Obliczenie
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
Generowanie elementów CI z korekcją błędów
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
Zakładając, że wariancja t może być wykorzystana do wariancji t0 .
norm.ci(t0 = boot.out$t0, var.t0 = var(boot.out$t[, 1]))[-1]
## [1] 3.55475 3.80421
Czy poprawne byłoby zgłoszenie CI wyśrodkowanego wokół t0 ? Czy jest lepszy sposób na wygenerowanie bootstrapu?
Jak wskazuje odpowiedź @NRH, problemem nie jest to, że ładowanie początkowe dało stronniczy wynik. Chodzi o to, że proste oszacowanie entropii Shannona metodą „plug-in”, oparte na danych z próbki, jest tendencyjne w dół w stosunku do prawdziwej wartości populacji.
Problem ten został rozpoznany w latach 50. XX wieku, w ciągu kilku lat od zdefiniowania tego wskaźnika. W tym artykule omówiono podstawowe problemy z odniesieniami do powiązanej literatury.
Problem wynika z nieliniowej relacji indywidualnych prawdopodobieństw do tej miary entropii. W tym przypadku zaobserwowana frakcja genotypowa dla genu i w próbce n , , jest bezstronnym estymatorem prawdziwego prawdopodobieństwa . Ale kiedy ta zaobserwowana wartość zostanie zastosowana do formuły „plug in” dla entropii ponad genami M:p^n,i pn,i
relacja nieliniowa oznacza, że wynikowa wartość jest tendencyjnym niedoszacowaniem prawdziwej różnorodności genetycznej.
Odchylenie zależy od liczby genów i liczbę obserwacji, . Przy pierwszym zamówieniu oszacowanie wtyczki będzie niższe niż prawdziwa entropia o kwotę . Korekty wyższych rzędów są oceniane w dokumencie powyżej.N ( M - 1 ) / 2 NM N (M−1)/2N
Istnieją pakiety w R, które rozwiązują ten problem. W
simboot
szczególności pakiet ma funkcję,estShannonf
która dokonuje tych poprawek odchylenia, oraz funkcjęsbdiv
obliczania przedziałów ufności. Lepiej będzie używać do analizy takich uznanych narzędzi typu open source, niż próbować zaczynać od zera.źródło
simboot
wygląd opakowania obiecujące, ale nie wydaje się odpowiednie dla moich celów, gdyż potrzebował próbkę kontrolną do oceny przedziałów ufności.simboot
nie spełnia Twoich potrzeb, Google „entropii Shannona bias r” dla linków do innych pakietów, takich jak Rentropy
,entropart
iEntropyEstimation
.