Как извлечь значение 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