4

Hmiscのcut2を使用して、ベクトルの等分位カットを計算しようとしていました。

library(Hmisc)
c <- c(-4.18304,-3.18343,-2.93237,-2.82836,-2.13478,-2.01892,-1.88773,
       -1.83124,-1.74953,-1.74858,-0.63265,-0.59626,-0.5681)

cut2(c, g=3, onlycuts=TRUE)

[1] -4.18304 -2.01892 -1.74858 -0.56810

しかし、私は次の結果を期待していました (33%、33%、33%):

[1] -4.18304 -2.13478 -1.74858 -0.56810

cut2 を使用するか、別の方法を試す必要がありますか? どうすればそれを機能させることができますか?アドバイスありがとうございます。

4

2 に答える 2

4

カットポイントが表示されていますが、表形式のカウントが必要であり、それらを合計の一部として使用する必要があるため、代わりに次のようにします。

> prop.table(table(cut2(c, g=3) ) )

[-4.18,-2.019) [-2.02,-1.749) [-1.75,-0.568] 
     0.3846154      0.3076923      0.3076923 

(明らかに、要素数が 3 で割り切れない場合、cut2 が正確な分割を作成することは期待できません。)

于 2013-05-03T00:09:24.847 に答える
2

元のデータ セットには、12 個ではなく、誤って 13 個の値があったようです。13 個の値を 3 つの分位グループに均等に分割することはできません (BondedDust で述べられているように)。これが元の問題ですが、選択された 1 つのデータ値 (-1.74953) が除外され、12 個の値になります。これにより、当初予想されていた結果が得られます。

library(Hmisc)

c<-c(-4.18304,-3.18343,-2.93237,-2.82836,-2.13478,-2.01892,-1.88773,-1.83124,-1.74858,-0.63265,-0.59626,-0.5681)

cut2(c, g=3,onlycuts=TRUE)
#[1] -4.18304 -2.13478 -1.74953 -0.5681


パッケージに慣れていない人cut2(今朝の私のような) にわかりやすくするために、整数 1 から 12 を使用することを除いて、同様の問題があります ( vector に割り当てられます)。Hmiscdozen_values

library(Hmisc)

dozen_values <-1:12

quantile_groups <- cut2(dozen_values,g=3)

levels(quantile_groups)
## [1] "[1, 5)" "[5, 9)" "[9,12]"

cutpoints <- cut2(dozen_values, g=3, onlycuts=TRUE)

cutpoints
## [1]  1  5  9 12

# Show which values belong to which quantile group, using a data frame
quantile_DF <- data.frame(dozen_values, quantile_groups)
names(quantile_DF) <- c("value", "quantile_group")

quantile_DF
##    value quantile_group
## 1      1         [1, 5)
## 2      2         [1, 5)
## 3      3         [1, 5)
## 4      4         [1, 5)
## 5      5         [5, 9)
## 6      6         [5, 9)
## 7      7         [5, 9)
## 8      8         [5, 9)
## 9      9         [9,12]
## 10    10         [9,12]
## 11    11         [9,12]
## 12    12         [9,12]

最初の分位グループには 5 までのすべてが含まれますが、5 は含まれません(つまり、この場合は 1 から 4 まで)。2 番目の分位数グループには、5から 9 まで (この場合は 5 から 8 まで)が含まれます。3 番目 (最後) の分位グループには 9 ~ 12 が含まれ、これには最後の値 12 が含まれます。他の分位グループとは異なり、3 番目の分位グループには表示される最後の値が含まれます。

とにかく、「カットポイント」159、および12が最も簡潔な方法で分位点グループの開始点と終了点を記述していることがわかりますが、関連するドキュメントを読まないとわかりにくいです(単一ページの Inside-R サイトへのリンクではなく、ほぼ 400 ページの PDF マニュアル)。

よくわからない場合は、括弧と角括弧の表記に関するこの説明を参照してください。

于 2014-10-23T18:07:11.030 に答える