R: Функция, которая находит диапазон 95% всех значений? - PullRequest
9 голосов
/ 08 августа 2011

Есть ли в языке R функция или изящный способ получить минимальный диапазон, охватывающий, скажем, 95% всех значений в векторе?

Любые предложения очень приветствуются:)

Ответы [ 4 ]

14 голосов
/ 08 августа 2011

95% данных будут находиться между 2,5-м процентилем и 97,5-м процентилем. Вы можете вычислить это значение в R следующим образом:

x <- runif(100)
quantile(x,probs=c(.025,.975))

Чтобы понять, что происходит, вот сюжет:

qts <- quantile(x,probs=c(.05,.95))
hist(x)
abline(v=qts[1],col="red")
abline(v=qts[2],col="red")

Обратите внимание, что это точный / эмпирический интервал 95%; нет предположения о нормальности.

hist of 95% interval

1 голос
/ 08 августа 2011

Функция emp.hpd в пакете TeachingDemos найдет значения в векторе, которые охватывают определенный процент данных (95%), которые также дают кратчайший диапазон между значениями. Если данные примерно симметричны, то это будет близко к результатам использования квантиля, но если данные искажены, это даст более короткий диапазон.

1 голос
/ 08 августа 2011

Не так сложно написать такую ​​функцию:

find_cover_region <- function(x, alpha=0.95) {
    n <- length(x)
    x <- sort(x)
    k <- as.integer(round((1-alpha) * n))
    i <- which.min(x[seq.int(n-k, n)] - x[seq_len(k+1L)])
    c(x[i], x[n-k+i-1L])
}

Функция найдет кратчайший интервал.Если сначала будут выбраны интервалы с одинаковой длиной (от -Inf).

find_cover_region(1:100, 0.70)
# [1]  1 70
find_cover_region(rnorm(10000), 0.9973) # three sigma, approx (-3,3)
# [1] -2.859  3.160 # results may differ

Вы также можете посмотреть области с наивысшей плотностью (например, в пакете hdrcde , функция hdr).Это более статистический способ найти кратчайшие интервалы с заданной вероятностью покрытия (некоторые оценки плотности ядра участвуют).

0 голосов
/ 08 августа 2011

Если значения распределены примерно как нормальное распределение , вы можете использовать стандартное отклонение. Сначала вычислите среднее µ и стандартное отклонение распределения. 95% значений будут находиться в интервале (µ - 1.960 * stdev, µ + 1.960 * stdev).

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