1

Rの分位数関数とHMISCパッケージのcut2関数の違いを教えてください。

分位には、四分位を指定するための 9 つの異なる方法があることを理解しています。ただし、関数 cut2(mydata, g = 4) を使用すると、出力される四分位は、どの四分位関数出力にも対応しません。

どんな助けでも大歓迎です。

前もって感謝します。

4

1 に答える 1

9

ヘルプファイルから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 

ここでは、各ビンの異なる周波数がはっきりとわかります。

于 2016-06-02T16:19:58.753 に答える