統計検定2級　非正規分布

## はじめに
統計検定2級の非正規分布に関して学んでいきます！


## ✅ 非正規分布とは？

**非正規分布**とは、文字通り「正規分布ではない分布」のことです。

---

## 📌 正規分布とは？

- よくある釣鐘型（ベル型）の分布
- 平均 ＝ 中央値 ＝ 最頻値
- 左右対称
- テストの点数や身長などに多く見られる

---

## 🤔 非正規分布ってどんなの？

- 左右が **非対称**
- **外れ値が多い**
- **平均・中央値・最頻値が一致しない**
- 山が尖っていたり平たかったりする

---

## 💡 例：非正規分布っぽいデータ

| データの種類 | なぜ非正規？ |
|--------------|-------------|
| 年収          | 一部の高収入者が平均を引き上げる |
| サイトのアクセス数 | バズると一気に跳ね上がる日がある |
| 待ち時間       | 0分の人が多く、一部に長時間の人もいる |

---

## 🧭 見分け方のヒント

- **平均 > 中央値 > 最頻値** → 右に歪んでいる（正の歪度）
- **平均 < 中央値 < 最頻値** → 左に歪んでいる（負の歪度）

---

## 📈 なぜ非正規分布を知ることが大切？

- **平均だけ見て判断すると危険！**
- 分布の形に合った統計手法を使わないと、結果がズレてしまう

---

## まとめ

- 非正規分布は、正規分布のように「きれいな釣鐘型」じゃないデータ
- 実社会のデータ（年収・アクセス数・寿命など）は、非正規なものが多い
- 見かけの「平均」ではなく、**分布の形をちゃんと見る**ことが大切！



## 問
例題：年収データの非正規分布
一般的に「年収」は多くの人が300〜500万円に集中しており、一部の高収入者（1000万円以上など）が平均を押し上げています。これが典型的な右に歪んだ非正規分布です。

```python:
# ✅ 日本語フォントをインストール（Colab 用）
!apt-get -y install fonts-ipafont-gothic > /dev/null

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
from scipy.stats import skew
from matplotlib.font_manager import FontProperties

# ✅ 正しいフォントパス（ttfではなくttc）
font_path = "/usr/share/fonts/opentype/ipafont-gothic/ipag.ttf"
jp_font = FontProperties(fname=font_path)

# ✅ matplotlibのフォント設定（オプション）
plt.rcParams['font.family'] = jp_font.get_name()

# データ生成（対数正規分布）
np.random.seed(0)
incomes = np.random.lognormal(mean=5, sigma=0.5, size=1000)

# 統計量
mean_income = np.mean(incomes)
median_income = np.median(incomes)
skew_value = skew(incomes)

print("【年収データの統計量】")
print(f"平均年収: {mean_income:.2f} 万円")
print(f"中央値年収: {median_income:.2f} 万円")
print(f"歪度（skewness）: {skew_value:.2f}")

# グラフ描画
plt.figure(figsize=(10, 5))
ax = sns.histplot(incomes, bins=40, kde=True, color='skyblue', label="年収の分布")
ax.axvline(mean_income, color="red", linestyle="--", label=f"平均（{mean_income:.0f} 万円）")
ax.axvline(median_income, color="green", linestyle="-.", label=f"中央値（{median_income:.0f} 万円）")

plt.title("年収の分布（非正規分布の例）", fontproperties=jp_font)
plt.xlabel("年収（万円）", fontproperties=jp_font)
plt.ylabel("人数", fontproperties=jp_font)
plt.legend(prop=jp_font)
plt.grid(True)
plt.show()
```

```shell:
【年収データの統計量】
平均年収: 163.96 万円
中央値年収: 144.17 万円
歪度（skewness）: 1.50
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/1f781b93-1713-4ea8-bd15-b30e3ea5be20.png)


## 📘 練習問題：非正規分布における信頼区間の推定

ある商品の月間販売数は、非正規分布に従うことがわかっている。ただし、過去のデータ100件から次のような情報が得られた：
	•	標本平均：μ̂ = 250個
	•	標本標準偏差：s = 60個
	•	標本サイズ：n = 100

このとき、販売数の母平均の 95%信頼区間を求めると、最も近いものはどれか。
※母分布は正規分布ではないが、標本サイズは十分大きいとする。

### ✅ 解き方

母分布が非正規でも、$n$ が大きいため中心極限定理により標本平均は正規分布に近似できる。  
よって、標本平均の95%信頼区間は以下の式で求められる：

$$
\hat{\mu} \pm z \cdot \frac{s}{\sqrt{n}}
$$

---

### ① 標準誤差（Standard Error, SE）の計算：

$$
SE = \frac{s}{\sqrt{n}} = \frac{60}{\sqrt{100}} = \frac{60}{10} = 6
$$

---

### ② 信頼区間の幅：

$$
z = 1.96 \quad（95\%信頼水準に対応する値）
$$

$$
1.96 \times SE = 1.96 \times 6 = 11.76
$$

---

### ③ 信頼区間：

$$
250 \pm 11.76 = [238.24, 261.76]
$$

---

### ✅ 結論：

この商品の母平均の95%信頼区間は

$$
\boxed{238 \text{個} \sim 262 \text{個}}
$$

と推定される。


---

## ✅ 結果と考察

- 緑の線：約95本 → **95%の信頼区間が母平均を含んだ**
- 赤の線：約5本 → **5%は外れた**

この結果は、理論通り：
> 「95%信頼区間は、母平均を95%の確率で含む」

ことを視覚的に確認できたと言えます。

---

## 💡 ポイントまとめ

| 観点 | 内容 |
|------|------|
| 母集団分布 | 非正規分布（lognormal） |
| 標本平均の分布 | 近似的に正規分布（中心極限定理による） |
| 信頼区間 | 標本平均 ± Z × 標準誤差（SE） |
| 教訓 | 母分布が非正規でも、**十分なサンプルサイズがあれば信頼区間は有効** |


:::note info
なんとなくわかってきました！非正規分布で信頼区間を割り出す時は、中心極限定理を利用する。
毎回、そうだ、そうだ、中心極限定理だってなるんですが、あまりよくわかっていない中心極限定理。
試行回数重ねれば、中心によるでしょってくらいの理解。もう一回学習しようかなl
:::