Поведение "квантильной" функции в R

Работая над проблемой, я заметил кое-что интересное. Я не знаю, что именно происходит, но случилось то, чего я не ожидал. Возможно, я допустил ошибку, но позвольте мне начать с примера:

x <- rnorm( 100 )
y <- x[ x > quantile( x, 0.1 ) ]
z <- x[ x > quantile( x, c( 0.1, 0.2 ) ) ]
a <- x[ x > quantile( x, c( 0.1, 0.2, 0.3 ) ) ]

Мы получаем три разных результата, но как их интерпретировать. Это ли ограничения, которые используются?

ОБНОВЛЕНИЕ: я думаю, что задаю неправильный вопрос. Как мы можем объяснить следующее:

> x <- rnorm( 100 )
> length( x[ x > quantile( x, 0.1 ) ] )
[1] 90
> length( x[ x > quantile( x, 0.2 ) ] )
[1] 80
> length( x[ x > quantile( x, c( 0.1, 0.2 ) ) ] )
[1] 85

1 ответ

Решение

Вы смущены > и поведение R по переработке. когда quantile возвращает более 1 значения (как в последних двух примерах), он перезагружает эти векторы, чтобы иметь ту же длину, что и x чтобы сделать векторизованное сравнение через >,

Таким образом, в последних двух примерах он повторяет 2 или 3 значения из quantile снова и снова, пока результирующий вектор не станет такой же длины, как x и они сравнивают их поэлементно с >,

редактировать

Может быть, мое объяснение не было достаточно ясным. В последней строке вашего редактирования, x > quantile( x, c( 0.1, 0.2 ) ) R сравнивает первый элемент x с квантилем 0,1, второй элемент x с квантилем 0,2, третий элемент x с квантилем 0,1, 4-й элемент x с квантиль 0,2 и так далее. Понял?:)

Другие вопросы по тегам