2016-11-24 10 views
0

1から100,000までの値を持つ変数を10個のグループに10,000でビンしようとしています。私は次のコードを使用して、エラーを取得しています。Rを使用してデータをビニングするときのエラーR

cut(x, breaks = quantile(x, probs=seq(0, 100000, 10000)), include.lowest = TRUE) 

私は間違っていますか?

+0

データセットを共有できません。 Amountは、1から100,000の値を持つ数値変数であると仮定できます。どのように適切にビンするのどのような例の任意の例 – goutam

+0

@ ZheyuanLiどのように、なぜ彼らは異なるのか?これを読むためのリンクはありますか? – goutam

答えて

1

さて、私はこれを誤植と見ましたが、コメントで議論した後、私は答えを書くことに決めました。

エラーはquantileに発生します.probsは0と1の間である必要があります(?quantile)。あなたは、次の2つを混同されているように見えます


cut(x, breaks = seq(0, 100000, 10000), include.lowest = TRUE) 
cut(x, breaks = quantile(x, prob = seq(0, 1, 0.1)), include.lowest = TRUE) 

私が言ったように、彼らはあなたのデータが均一に分布していない場合は特に、異なる結果が得られます。代表例として

、不均一に分布データを考慮し、ベータ分散言う:

set.seed(0) 
x <- rbeta(10000, 3, 5) 

b1 <- seq(0, 1, 0.1) 

b2 <- quantile(x, prob = seq(0, 1, 0.1), names = FALSE) 
round(b2, 2) 
# [1] 0.01 0.17 0.23 0.28 0.32 0.37 0.41 0.46 0.52 0.60 0.94 

注、b2b1間の差は有意です。あなたはドットがラインから外れて強く表示されます

plot(b1, b2); abline(0, 1) 

:あなたは(経験)分位-分位数プロットを調べることができます。

上記において、b1は均一なビン細胞を与え、b2は不揃いなビン細胞を与える。今すぐビン数を考えてみましょう:

table(cut(x, breaks = b1, include.lowest = TRUE)) 
# [0,0.1] (0.1,0.2] (0.2,0.3] (0.3,0.4] (0.4,0.5] (0.5,0.6] (0.6,0.7] (0.7,0.8] 
#  256  1239  2011  2242  1948  1323  685  245 
#(0.8,0.9] (0.9,1] 
#  48   3 

table(cut(x, breaks = b2, include.lowest = TRUE)) 
#[0.0101,0.169] (0.169,0.228] (0.228,0.276] (0.276,0.321] (0.321,0.365] 
#   1000   1000   1000   1000   1000 
# (0.365,0.412] (0.412,0.463] (0.463,0.519] (0.519,0.598] (0.598,0.935] 
#   1000   1000   1000   1000   1000 

あなたは違いを見たことがありますか?分位点でブレークポイントを配置すると、ビンに均一なカウントが適用されます。

関連する問題