2010-08-09 4 views
2

Я ищу встроенную функцию, которая возвращает образец квантиля и предполагаемый доверительный интервал в чем-то отличном от MATLAB (ecdf MATLAB делает это).R, питон или октава: эмпирический квантиль (обратный cdf) с доверительными интервалами?

Я предполагаю, что у R есть этот встроенный модуль, и я его еще не нашел.

Если у вас есть отдельный код для этого, вы также можете указать на него здесь, хотя я надеюсь найти что-то, что входит в большую базу открытого кода.

-Попробуйте, чтобы уйти от MATLAB.

+0

Хорошо googling 'r ecdf' показывает, что в пакете статистики есть функция ecdf, но у нее могут не быть доверительных интервалов. Не знаю, как бы вы ожидали интервалов на кумулятивной функции распределения в любом случае. Что именно вы ищете? – Karl

+0

cdf * оценивается * из набора образцов. По мере роста количества независимых образцов, вы, как правило, ожидаете, что неопределенность будет уменьшаться. То, что я сейчас делаю, это использование ecdf из таблицы, которая возвращает оценку cdf, а также оценку нижней и верхней границ этой оценки. Таким образом, у вас есть три «кривые», оценка cdf и верхняя и нижняя кривые. Затем я инвертирую cdfs и их границы после линейной интерполяции каждого. Это, вероятно, не согласуется с выполнением какой-то оценки бутстрапа для доверительного интервала на квантиле. – mathtick

ответ

4

Функция survfit может использоваться для выживания выживание функция с доверительными интервалами. Поскольку это всего лишь 1-ecdf, между квантилями существует прямая связь. Чтобы использовать эту функцию вам необходимо создать переменную, которая говорит, что каждый из ваших наблюдений завершена (не подвергается цензуре):

library(survival) 
x <- rexp(10) 
ev <- rep(1, length(x)) 
sf <- survfit(Surv(x,ev)~1) 

С выходом:

>summary(sf) 
Call: survfit(formula = Surv(x, ev) ~ 1) 

    time n.risk n.event survival std.err lower 95% CI upper 95% CI 
-1.4143  10  1  0.9 0.0949  0.7320  1.000 
-1.1229  9  1  0.8 0.1265  0.5868  1.000 
-0.9396  8  1  0.7 0.1449  0.4665  1.000 
-0.4413  7  1  0.6 0.1549  0.3617  0.995 
-0.2408  6  1  0.5 0.1581  0.2690  0.929 
-0.1698  5  1  0.4 0.1549  0.1872  0.855 
0.0613  4  1  0.3 0.1449  0.1164  0.773 
0.1983  3  1  0.2 0.1265  0.0579  0.691 
0.5199  2  1  0.1 0.0949  0.0156  0.642 
0.8067  1  1  0.0  NaN   NA   NA 

В самом деле, survfit делает вычисления медианы и его доверительный интервал, но не другие квантили:

>sf 
Call: survfit(formula = Surv(x, ev) ~ 1) 

records n.max n.start events median 0.95LCL 0.95UCL 
10.000 10.000 10.000 10.000 -0.205 -0.940  NA 

фактическая работа для расчета доверительного интервала медианы хорошо спрятан в survival:::survmean, которую вы, вероятно, могли бы использовать для обобщения на другие квантили.

+0

Интересно, не совсем очевидное место для поиска. Благодаря! – mathtick