Как рассчитать доверительные интервалы для ненормального распределения?

21

У меня 383 выборки с большим смещением для некоторых распространенных значений. Как рассчитать 95% ДИ для среднего значения? CI, который я рассчитал, кажется далёким, и я предполагаю, что мои данные не выглядят как кривая, когда я делаю гистограмму. Так что я думаю, что должен использовать что-то вроде начальной загрузки, что я не очень хорошо понимаю.

IhaveCandy
источник
2
Одним из решений будет использование асимптотической CI, которая использует тот факт, что RV имеет ограничивающее стандартное нормальное распределение. Ваша выборка достаточно велика, поэтому она может стать хорошим приближением. X¯μS/N
JohnK
1
Нет, вы найдете действительно плохое покрытие хвоста в обоих хвостах доверительного интервала, используя этот подход. Средний охват может быть удачным, но оба показателя ошибок хвоста будут неправильными.
Фрэнк Харрелл
2
Что означает «тяжелый уклон для некоторых общих ценностей»? Обратите внимание, что уклон имеет особое значение в статистике; Вы должны попытаться избежать этого, если вы не имеете в виду это. Вы просто имеете в виду «некоторые конкретные значения встречаются очень часто»? Можете ли вы показать свои расчеты и некоторые отображения или таблицы ваших данных?
Glen_b

Ответы:

21

Да, бутстрап является альтернативой для получения доверительных интервалов для среднего значения (и вам нужно приложить немного усилий, если вы хотите понять метод).

Идея заключается в следующем:

  1. Повторная выборка с заменой B раз.
  2. Для каждого из этих образцов рассчитывают среднее значение выборки.
  3. Рассчитайте соответствующий доверительный интервал начальной загрузки.

Что касается последнего шага, существует несколько типов доверительного интервала начальной загрузки (BCI). Следующие ссылки представляют обсуждение свойств различных типов BCI:

http://staff.ustc.edu.cn/~zwp/teach/Stat-Comp/Efron_Bootstrap_CIs.pdf

http://www.tau.ac.il/~saharon/Boot/10.1.1.133.8405.pdf

Хорошей практикой является подсчет нескольких BCI и попытка понять возможные расхождения между ними.

В R вы можете легко реализовать эту идею, используя пакет R «boot» следующим образом:

rm(list=ls())
# Simulated data
set.seed(123)
data0 = rgamma(383,5,3)
mean(data0) # Sample mean

hist(data0) # Histogram of the data

library(boot) 

# function to obtain the mean
Bmean <- function(data, indices) {
  d <- data[indices] # allows boot to select sample 
    return(mean(d))
} 

# bootstrapping with 1000 replications 
results <- boot(data=data0, statistic=Bmean, R=1000)

# view results
results 
plot(results)

# get 95% confidence interval 
boot.ci(results, type=c("norm", "basic", "perc", "bca"))
Мюнхгаузен
источник
3
Последний шаг, подсчитать несколько, подразумевает ловлю CI, который вам нравится по результатам. Вы должны определиться с видом CI, который вы хотите, основываясь на том, что они заблаговременно.
Джон
@John Разные CI имеют разные свойства. Рекомендуется проверять возможные несоответствия (и пытаться выяснить источник этого). Речь идет не о рыбалке для удобного результата.
Мюнхгаузен
Абсолютно, но без такого описания причины в вашем ответе это «подразумевает» рыбалку. И вы до сих пор не утверждаете, что на самом деле важно сначала выбрать тот КИ, который вы хотите. Я предлагаю обновить ответ с некоторой критической информацией для наивного спрашивающего. Было бы еще лучше, если бы вы указали, какой CI вы предпочитаете и почему, или какой предпочитаете в подобных случаях и почему.
Джон
2
@IhaveCandy: Нет. Он демонстрирует центральную предельную теорему, то есть, как выборочное распределение среднего значения стремится к нормальному, даже для значений, следующих за очень «ненормальным» распределением. Вот почему простой z-доверительный интервал не будет сильно отличаться от любого другого причудливого решения, например, начальной загрузки.
Майкл М
1
@IhaveCandy Пожалуйста, смотрите мой комментарий выше, Майкл Майер делает то же самое.
JohnK
8

Другая стандартная альтернатива - это расчет КИ с помощью критерия Уилкоксона. В R

wilcox.test(your-data, conf.int = TRUE, conf.level = 0.95)

К сожалению, он дает вам CI вокруг (псевдо) медианы, а не среднего значения, но тогда, если данные сильно ненормальные, возможно, медиана является более информативной мерой.

Жак Вайнер
источник
2

Для логнормальных данных Olsson (2005) предлагает «модифицированный метод Кокса»

ИксЕ(Икс)знак равноθжурнал(θ)

Y¯знак равноS22±TdеS2N+S42(N-1)

Yзнак равножурнал(Икс)YY¯YS2

Функция R ниже:

ModifiedCox <- function(x){
  n <- length(x)
  y <- log(x)
  y.m <- mean(y)
  y.var <- var(y)

  my.t <- qt(0.975, df = n-1)

  my.mean <- mean(x)
  upper <- y.m + y.var/2 + my.t*sqrt(y.var/n + y.var^2/(2*(n - 1)))
  lower <- y.m + y.var/2 - my.t*sqrt(y.var/n + y.var^2/(2*(n - 1)))

 return(list(upper = exp(upper), mean = my.mean, lower = exp(lower)))

}

Повторяя пример из статьи Олссона

CO.level <- c(12.5, 20, 4, 20, 25, 170, 15, 20, 15)

ModifiedCox(CO.level)
$upper
[1] 78.72254

$mean
[1] 33.5

$lower
[1] 12.30929
Тони Ладсон
источник