![](/img/trans.png)
[英]Difference between ntile and cut and then quantile() function in R
[英]R - cut2 versus quantile function
誰能告訴我R中的分位數函數與HMISC軟件包中的cut2函數之間的區別嗎?
我知道分位數有9種不同的方法來指定四分位數。 但是,當我使用函數cut2(mydata,g = 4)時,輸出的四分位數不對應任何分位數函數的輸出。
任何幫助,不勝感激。
提前致謝。
從cut2
幫助文件中:
類似於cut但左端點的功能包括在內,標簽的形式為[lower,upper),但最后一個間隔為[lower,upper]。 如果給出切割,默認情況下將確保切割包括整個x范圍。
所以, cut2
基本上cut
與幾個不同的默認值。 那我們來看一下cut
。
從cut
幫助文件中:
cut將x的范圍划分為間隔,並根據x的值落入的間隔對其進行編碼。 最左邊的間隔對應於級別1,下一個最左邊的間隔對應於級別2,依此類推。
從quantile
幫助文件中:
通用函數分位數產生與給定概率相對應的樣本分位數。 最小觀察值對應於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
在這里,您可以清楚地看到每個倉中的不同頻率。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.