統計分析の第一歩は「ヒストグラムで分布の形を見る」。代表値や標準偏差を計算する前に、まず形を見ないと、誤った分析をします。本記事では 5 種類の分布 を実例で見比べます。
1. 5 種類の分布パターン
| 分布 | 形 | 代表例 |
|---|---|---|
| 正規分布 | 釣鐘型 (左右対称) | 身長・体重・テスト点数 |
| 右歪み (right-skewed) | 右に裾が長い | 年収・売上・閲覧数 |
| 左歪み (left-skewed) | 左に裾が長い | テストの満点付近、寿命 |
| 二峰性 (bimodal) | ピーク 2 つ | 男女混合の身長、文/理系混合の点数 |
| 一様 (uniform) | 横一直線 | サイコロの目 |
2. Python で 5 種類描く
Colab で動かす
Python
import numpy as npimport matplotlib.pyplot as plt
np.random.seed(42)fig, axes = plt.subplots(2, 3, figsize=(12, 7))
# 1. 正規分布data1 = np.random.normal(170, 7, 1000) # 身長 (平均 170、σ 7)axes[0,0].hist(data1, bins=30, color='steelblue')axes[0,0].set_title('正規分布 (身長)')
# 2. 右歪み (対数正規)data2 = np.random.lognormal(6, 0.6, 1000) # 年収相当axes[0,1].hist(data2, bins=30, color='salmon')axes[0,1].set_title('右歪み (年収)')
# 3. 左歪みdata3 = 100 - np.random.exponential(10, 1000)data3 = data3[data3 > 0]axes[0,2].hist(data3, bins=30, color='gold')axes[0,2].set_title('左歪み (満点近辺)')
# 4. 二峰性 (2 集団混合)data4 = np.concatenate([np.random.normal(40, 5, 500), np.random.normal(80, 5, 500)])axes[1,0].hist(data4, bins=30, color='mediumorchid')axes[1,0].set_title('二峰性 (混合集団)')
# 5. 一様分布data5 = np.random.uniform(0, 100, 1000)axes[1,1].hist(data5, bins=30, color='mediumseagreen')axes[1,1].set_title('一様分布 (ランダム)')
axes[1,2].axis('off')plt.tight_layout()plt.show()3. 形によって変わる分析手法
| 分布の形 | 代表値 | 推奨手法 |
|---|---|---|
| 正規分布 | 平均 + σ | t 検定、線形回帰 |
| 右歪み | 中央値、対数変換後の平均 | ノンパラメトリック検定 / 対数変換 |
| 左歪み | 中央値 | ノンパラメトリック検定 |
| 二峰性 | サブグループごと | サブグループ分割 → 個別分析 |
| 一様 | 範囲 | 「ランダム性」自体を検定 |
4. 対数変換で正規分布に近づける
歪んだデータを log 変換
Python
import numpy as npimport matplotlib.pyplot as plt
# 右歪みの年収データ (対数正規)income = np.random.lognormal(6, 0.6, 1000) # 単位: 万円相当
fig, axes = plt.subplots(1, 2, figsize=(10, 4))axes[0].hist(income, bins=40)axes[0].set_title('元データ (右歪み)')axes[1].hist(np.log(income), bins=40)axes[1].set_title('log 変換後 (正規分布に近づく)')plt.show()5. ヒストグラム作成のコツ
- bin 数は調整必須: 自動 → 違和感あれば bins=N で変更
- density=True: 累積を 1 にして確率密度として描く
- alpha=0.5: 複数分布を重ねる時、透明にすると比較しやすい
- KDE (kernel density estimation): seaborn の `sns.kdeplot()` で滑らかな線で描く
- Excel でも作れる: 「データ分析 → ヒストグラム」、bin 範囲を手動指定推奨
6. 次の話
EP.05 では 正規分布と 68-95-99.7 ルール を扱います。「身長 180cm 以上は何 % か」を計算で答えられるようになります。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。