1.2.2 ①幹葉図 〜統計検定2級対応・統計学入門まとめ〜

当まとめでは統計検定$2$級の公式テキストの副教材に用いることができるように、統計学入門に関して取り扱います。当記事では「統計検定$2$級対応 統計学基礎」の$1.2.2$節「幹葉図」の内容を元にヒストグラムと同様の目的で用いられる幹葉図に関して取り扱いました。
統計検定$2$級のテキストとの対応がわかりやすいように、目次を「統計検定$2$級対応 統計学基礎」と対応させました。学びやすさの観点からあえて目次を対応させましたが、当まとめは「統計の森」オリジナルのコンテンツであり、統計検定の公式とは一切関係ないことにご注意ください。

・統計検定$2$級対応・統計学入門まとめ
https://www.hello-statisticians.com/stat_basic

幹葉図の概要

概要

幹葉図(stem and leaf plots)はヒストグラムと同様に、度数分布の可視化にあたってよく用いられます。幹葉図は下記のように表されます。

stem: 4, leaves: 5599
stem: 5, leaves: 22599
stem: 6, leaves: 0244445557777
stem: 7, leaves: 022224445555577999
stem: 8, leaves: 01359

上記は「人文・社会科学の統計学の演習$2.1$」の結果を用いました。図を元に$6$〜$7$の間のサンプルが多いことが確認できます。このように幹葉図はヒストグラムと同様な用途で用いることができます。

必要な数学

幹葉図の作成にあたって必要な数学知識は特にありませんが、プログラムを用いて作成する場合は割り算の商と余りの演算を重点的に抑えておくと良いと思います。

幹葉図

幹葉図のプログラム

幹葉図は下記のようなプログラムを実行することで作成できます。

import numpy as np

x = np.array([5.6, 8.8, 7.5, 6.2, 9.2, 7.2, 7.1, 7.7, 8.2, 7.5, 6.8, 8.5, 6.8, 8.8, 7.6])

stem = np.unique(x//1)
leaf = x%1

leaves = dict()

for i in range(stem.shape[0]):
    leaves[int(stem[i])] = list()

for i in range(x.shape[0]):
    leaves[int(x[i]//1)].append(int(np.floor(((x[i]+0.01)%1)*10)))

for i in range(stem.shape[0]):
    leaves[int(stem[i])] = np.sort(leaves[int(stem[i])])
    l = ""
    for j in range(len(leaves[int(stem[i])])):
        l += str(leaves[int(stem[i])][j])
    print("stem: {}, leaves: {}".format(int(stem[i]),l))

・実行結果

stem: 5, leaves: 6
stem: 6, leaves: 288
stem: 7, leaves: 125567
stem: 8, leaves: 2588
stem: 9, leaves: 2

9.29.1999999などのように表されたので、$14$行目でx[i]+0.01を計算しました。厳密な取り扱いではないので、プログラム自体は修正を行う可能性があります。