Как извлечь значение Ecdf из возврата Ecdf()?

Ответ на этот вопрос здесь предлагает способ применения ecdf,

Однако я использую Ecdf() из пакета Hmisc поскольку он предоставляет удобный способ создания графика ccdf(дополнительная функция кумулятивного распределения). (установив what вариант "1-F")

По умолчанию, Ecdf() строит график и возвращает вложенный список, содержащий x а также y,

Как я могу извлечь y значение определенного x значение? а затем нанести его на исходный сюжет?

FYI:

 > str(Ecdf(rnorm(20), lwd = 2))
    List of 2
     $ x: num [1:21] -1.46 -1.46 -1.18 -1.17 -1.16 ...
     $ y: num [1:21] 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 ...
     - attr(*, "N")=List of 2
      ..$ n: num 20
      ..$ m: num 0

Сначала я рассматриваю возможность преобразования этого списка в data.frame, используя методы, предложенные из R List в Data Frame, но мои данные огромны и rbind кажется очень медленным

1 ответ

Решение

Ecdf возвращает список, тогда как ecdf возвращает функцию. Намного проще использовать функцию R-stats ecdf чем использовать что-то замученное, как: Ecdf(.)$y[ min(which(Ecdf(.)$x>val))], Если вы хотите значение ecdf(x=0) из Ecdf-object тогда это должно работать:

 ecdf( Ecdf(rnorm(20), lwd = 2)$x ) (v=0)
[1] 0.5238095

(Оказывается, формальный параметр для функции возвращается ecdf is "v".) Но если вам нужен менее элегантный метод, и вы уже присвоили результат объекту с именем 'oneEcdf':

oneEcdf <- Ecdf(rnorm(20), lwd = 2)
oneEcdf$y[ min( which(oneEcdf$x > 0 ))]
[1] 0.6
Другие вопросы по тегам