2016-06-02 5 views
0

Не могли бы рассказать мне разницу между функцией квантиля в R и функцией cut2 из пакета HMISC?R - cut2 по сравнению с функцией квантиля

Я понимаю, что квантил имеет 9 различных методов для определения квартилей. Однако, когда я использую функцию cut2 (mydata, g = 4), выводимые квартили не соответствуют какому-либо из выходных функций квантильной функции.

Любая помощь очень ценится.

Заранее спасибо.

ответ

6

Из cut2 HelpFile:

Функция как срезанные, но левые концы включают и метки имеют форма [нижняя, верхняя), за исключением того, что последний интервал [снизу, сверху]. Если указаны разрезы, по умолчанию убедитесь, что разрезы включают весь диапазон .

Таким образом, cut2 в основном cut с несколькими различными значениями по умолчанию. Давайте посмотрим на cut.

cut От HelpFile:

разреза делит диапазон й на интервалы и коды значений х в соответствии с которым они падают интервал. Самый левый интервал соответствует уровню первый, следующий слева до уровня два и так далее.

От quantile HelpFile:

Родовой функции квантиль производит выборки квантилей, соответствующие для заданных вероятностей. Наименьшее наблюдение соответствует вероятности 0 и самый большой в вероятности 1.

Один режет диапазон x, другие подрезает «частоты» в x.

Иллюстрация:

out <- 0:100 
out2 <- c(seq(0, 50, 0.001), 51:100) 

Оба имеют один и тот же диапазон. От 0 до 100.

levels(cut(out,4, include.lowest = T)) 
[1] "[-0.1,25]" "(25,50]" "(50,75]" "(75,100]" 
levels(cut(out2,4, include.lowest = T)) 
[1] "[-0.1,25]" "(25,50]" "(50,75]" "(75,100]" 

Но есть еще много «точек данных», живущие в out2, в частности, для значений от 0 до 50. Таким образом, они не имеют те же частоты вдоль диапазона:

quantile(out) 
    0% 25% 50% 75% 100% 
    0 25 50 75 100 
quantile(out2) 
     0%  25%  50%  75%  100% 
    0.0000 12.5125 25.0250 37.5375 100.0000 

В этом разница между cut и quantile.

Приведенный выше пример также показывает вам, когда оба соглашаются, а именно в случае равномерных распределений. Например, последовательность от 0 до 100 равномерно распределяется в диапазоне от 0 до 100. Здесь оба они в основном идентичны.

Чтобы проиллюстрировать еще дальше, рассмотрим:

outdf <- data.frame(out=out, cut=cut(out,4, include.lowest = T)) 
out2df <- data.frame(out=out2, cut=cut(out2,4, include.lowest = T)) 

table(outdf$cut) 
[-0.1,25] (25,50] (50,75] (75,100] 
     26  25  25  25 
table(out2df$cut) 
[-0.1,25] (25,50] (50,75] (75,100] 
    25001  25000  25  25 

Здесь вы четко увидеть различные частоты в каждом бункере.

+1

Благодарим вас за хорошо объясненный ответ - это очень помогло. – Maeve90

+0

Рад, что я мог помочь. – coffeinjunky

Смежные вопросы