Знайдіть інтервали щільності ймовірності


9

У мене є вектор

x <- c(1,2,3,4,5,5,5,6,6,6,6,
       7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
       7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,10)

(мій фактичний вектор має довжину> 10 000), і я хотів би знайти інтервали, де лежить 90% щільності. Є quantile(x, probs=c(0.05,0.95), type=5)найбільш підходящим чи є якийсь інший спосіб?


Ваше запитання трохи неясне щодо "інтервалів, де ..." - може бути кілька інтервалів. Вас цікавить виключно внутрішні 90%, тобто симетрично підстригання з кожного боку? Зрештою, від мінімального до 90% ile, 90% даних збирається, аналогічно для 10% ile до максимального значення.
Ітератор

Ви шукаєте найкоротший інтервал, симетричний інтервал (однакова ймовірність з кожного кінця) чи щось інше?
Glen_b -Встановіть Моніку

Відповіді:


19

Як було зазначено вище, існує багато різних способів визначення інтервалу, що включає 90% щільності. Тим, що ще не було зазначено, є найвищий інтервал щільності [задній] ( вікіпедія ), який визначається як "найкоротший інтервал, для якого різниця значень функції емпіричної кумулятивної щільності кінцевих точок є номінальною ймовірністю".

library(coda)
HPDinterval(as.mcmc(x), prob=0.9)

3

Це, безумовно, здається найбільш прямим підходом. Функція досить швидка. Я використовую його весь час на вибірках, які в сотні разів перевищують ту, яку ви використовуєте, і стабільність оцінок повинна бути хорошою для вашого розміру вибірки.

Існують функції в інших пакетах, які надають більш повний набір описової статистики. Я використовую Hmisc::describe, але є кілька інших пакетів з describeфункціями.


3

Ваш шлях здається розумним, особливо з дискретними даними в прикладі,

quantile(x,probs=c(0.05,0.95), type=5)
 5% 95% 
2.8 9.0

але іншим способом було б використання ядра обчисленої щільності:

dx <- density(x)
dn <- cumsum(dx$y)/sum(dx$y)
li <- which(dn>=0.05)[1]
ui <- which(dn>=0.95)[1]
dx$x[c(li,ui)]
[1] 2.787912 9.163246

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.