Это похоже на 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
Генерация КИ с коррекцией смещения
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 ? Есть ли лучший способ для создания начальной загрузки?
Как указывает ответ @NRH, проблема не в том, что начальная загрузка дала необъективный результат. Дело в том, что простая «подключаемая» оценка энтропии Шеннона, основанная на данных из выборки, смещена вниз от истинного значения совокупности.
Эта проблема была признана в 1950-х годах, через несколько лет после определения этого индекса. В этой статье рассматриваются основные вопросы, со ссылками на соответствующую литературу.
Проблема возникает из-за нелинейной связи индивидуальных вероятностей с этой мерой энтропии. В этом случае наблюдаемая доля генотипа для гена i в образце n , , является непредвзятой оценкой истинной вероятности, . Но когда это наблюдаемое значение применяется к формуле «подключи» для энтропии по M генам:рн,яp^n,i pn,i
Нелинейное отношение означает, что результирующее значение представляет собой предвзятую заниженную оценку истинного генетического разнообразия.
Смещения зависит от количества генов, и число наблюдений, . Для первого порядка оценка плагина будет ниже, чем истинная энтропия на величину . Исправления более высокого порядка оцениваются в статье, приведенной выше.Н ( М - 1 ) / 2 НM N (M−1)/2N
В R есть пакеты, которые решают эту проблему. В
simboot
частности, пакет имеет функцию,estShannonf
которая вносит эти поправки смещения, и функциюsbdiv
для вычисления доверительных интервалов. Лучше использовать для анализа такие устоявшиеся инструменты с открытым исходным кодом, чем пытаться начать все заново.источник
simboot
пакете выглядит многообещающе, но , кажется , не подходят для моих целей , как это нужно контрольный образец для оценки доверительных интервалов.simboot
не отвечает вашим потребностям, Google «энтропия Шеннона смещения г» ссылки на другие пакеты R , какentropy
,entropart
иEntropyEstimation
.