【統計学】度数分布表とヒストグラム(R)
Rで度数分布表とヒストグラムを実装します。
上の書籍の第1章SECTION5に該当。 この記事ではRで実装する。
データを確認する
データは0から200までの数字をランダムで100個発生させた下のようなものを使用します。
154,196,190,28,122,78,150,99,72,117, 73,195,3,62,190,125,7,63,182,56, 7,29,56,104,154,12,117,63,90,176, 101,168,47,99,69,124,55,173,115,71, 93,31,66,21,5,155,8,54,131,146, 54,160,10,59,140,103,40,23,125,35, 170,145,148,109,22,60,63,13,167,111, 125,78,97,130,118,140,29,156,146,94, 98,12,78,171,161,71,96,198,170,177, 145,5,197,186,15,95,30,162,165,108
Rで度数分布表
cut関数で数値をカテゴリ化して、table関数で集計する。 階級数は5から15までの間で決める(7つくらいが一番妥当と聞いたことがあります)のですが スタージェスの公式が目安になることもあります。 今回は階級数8、階級の幅25で作成します。
#データ読込 data <- c( 154,196,190,28,122,78,150,99,72,117, 73,195,3,62,190,125,7,63,182,56, 7,29,56,104,154,12,117,63,90,176, 101,168,47,99,69,124,55,173,115,71, 93,31,66,21,5,155,8,54,131,146, 54,160,10,59,140,103,40,23,125,35, 170,145,148,109,22,60,63,13,167,111, 125,78,97,130,118,140,29,156,146,94, 98,12,78,171,161,71,96,198,170,177, 145,5,197,186,15,95,30,162,165,108) #数値を階級のカテゴリに変換 caegory_data <- cut(data, breaks =seq(0, 200, by = 25), right = FALSE) category_data # [1] [150,175) [175,200) [175,200) [25,50) [100,125) [75,100) [150,175) # [8] [75,100) [50,75) [100,125) [50,75) [175,200) [0,25) [50,75) # [15] [175,200) [125,150) [0,25) [50,75) [175,200) [50,75) [0,25) # [22] [25,50) [50,75) [100,125) [150,175) [0,25) [100,125) [50,75) # [29] [75,100) [175,200) [100,125) [150,175) [25,50) [75,100) [50,75) # [36] [100,125) [50,75) [150,175) [100,125) [50,75) [75,100) [25,50) # [43] [50,75) [0,25) [0,25) [150,175) [0,25) [50,75) [125,150) # [50] [125,150) [50,75) [150,175) [0,25) [50,75) [125,150) [100,125) # [57] [25,50) [0,25) [125,150) [25,50) [150,175) [125,150) [125,150) # [64] [100,125) [0,25) [50,75) [50,75) [0,25) [150,175) [100,125) # [71] [125,150) [75,100) [75,100) [125,150) [100,125) [125,150) [25,50) # [78] [150,175) [125,150) [75,100) [75,100) [0,25) [75,100) [150,175) # [85] [150,175) [50,75) [75,100) [175,200) [150,175) [175,200) [125,150) # [92] [0,25) [175,200) [175,200) [0,25) [75,100) [25,50) [150,175) # [99] [150,175) [100,125) #8 Levels: [0,25) [25,50) [50,75) [75,100) [100,125) [125,150) ... [175,200) #度数分布表 table(category_data) #category_data # [0,25) [25,50) [50,75) [75,100) [100,125) [125,150) [150,175) # 14 8 17 12 12 12 15 #[175,200) # 10
Rでヒストグラム
hist関数でOK。
h <- hist(data)
ヒストグラム戻り値と度数分布表
実はhist関数の戻り値のなかに度数分布表が隠されています。 breaksが階級幅で、countsが度数です。
h <- hist(data) h #$breaks # [1] 0 20 40 60 80 100 120 140 160 180 200 # #$counts # [1] 11 10 8 13 9 10 9 11 11 8 # #$density # [1] 0.0055 0.0050 0.0040 0.0065 0.0045 0.0050 0.0045 0.0055 0.0055 0.0040 # #$mids # [1] 10 30 50 70 90 110 130 150 170 190 # #$xname #[1] "data" # #$equidist #[1] TRUE # #attr(,"class") #[1] "histogram"
次回はPythonで度数分布表です。