web-dev-qa-db-ja.com

Rのヒストグラムのビンの正確な数

Rでヒストグラムを作成するのに問題があります。問題は、ビンを5つ作成するように指示することですが、4つ作成し、5つ作成するよう指示し、8つ作成します。

data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82);

hist(data, nclass = 5,freq=FALSE,col="orange",main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

それを修正する方法についてのアイデアはありますか?

14
Eduardo

Breaks引数を使用します。

hist(data, breaks=seq(0,80,l=6),
       freq=FALSE,col="orange",main="Histogram",
       xlab="x",ylab="f(x)",yaxs="i",xaxs="i")

enter image description here

21
Rob Hyndman

nclassの引数として指定された整数は、提案として使用されます。

番号は提案のみです

別の解決策は、ベクトルを指定された数のグループにcutして、結果をプロットすることです:

plot(cut(data, breaks = 4))

enter image description here

12
Sven Hohenstein

Rob Hyndmanからの回答に基づいて:

より一般的な解決策は、データの最小値と最大値、およびブレーク数= number_of_bins + 1を考慮してブレークすることです。

hist(data,breaks=seq(min(data),max(data),l=number_of_bins+1), 
     freq=FALSE,col="orange",
     main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i")
9
jlainoc

私は自分のデータポイントについて非常に正確であることを好みます:

hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1))))

これにより、ほとんど手動で入力することなくプロセスが自動化されます。

2
mjp

基本グラフィックス以外の何かを使用することに反対していない場合は、常にggplot2の方法があります。

ライブラリ(ggplot2)

データ<-data.frame(x = data)

    ggplot(data, aes(x=x))+
      geom_histogram(binwidth=18,color="black", fill="grey")+
      scale_x_continuous(breaks=c(0,20,40,60,80)

ggplot2には素晴らしいドキュメントがあります:docs.ggplot2.org/current/

ヒストグラム固有の例: http://docs.ggplot2.org/current/geom_histogram.html

2
Sardimus