Rの分位数関数とHMISCパッケージのcut2関数の違いを教えてください。
分位には、四分位を指定するための 9 つの異なる方法があることを理解しています。ただし、関数 cut2(mydata, g = 4) を使用すると、出力される四分位は、どの四分位関数出力にも対応しません。
どんな助けでも大歓迎です。
前もって感謝します。
ヘルプファイルからcut2
:
カットのように機能しますが、左端点は包括的であり、ラベルは [lower, upper) の形式です。ただし、最後の間隔は [lower,upper] です。カットが指定されている場合、デフォルトで、カットが x の全範囲を含むようにします。
したがって、cut2
基本的cut
にいくつかの異なるデフォルトがあります。それでは見ていきましょうcut
。
ヘルプファイルからcut
:
cut は x の範囲を区間に分割し、どの区間に該当するかに従って x の値をコード化します。左端の間隔はレベル 1 に対応し、次に左端の間隔はレベル 2 に対応します。
ヘルプファイルからquantile
:
ジェネリック関数 quantile は、指定された確率に対応するサンプル分位数を生成します。最小の観測値は確率 0 に対応し、最大の観測値は確率 1 に対応します。
1 つは の範囲をカットし、もう 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]"
しかし、特に 0 から 50 の間の値については、より多くの「データポイント」が存在out2
します。したがって、それらは範囲に沿って同じ周波数を持ちません。
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
ここでは、各ビンの異なる周波数がはっきりとわかります。