フェミニストのための確率分布入門



### 1. 指数分布：通報遅れや対応待機時間に

#### 数式

$$
f(x) = \lambda e^{-\lambda x} \quad (x \geq 0)
$$

* **λ**：発生率（平均待機時間の逆数）

#### フェミニズム応用

* DV通報までの時間
* セクハラ通報の初動対応までの待機時間

#### Python実装例

```python
x = np.linspace(0, 10, 100)
plt.plot(x, expon.pdf(x, scale=1/λ_exp))
plt.title("Exponential Distribution: Waiting Time")
plt.xlabel("Time")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()
```

---

### 2. 二項分布：候補者のうち何人が当選したか？

#### 数式

$$
P(k) = \binom{n}{k} p^k (1 - p)^{n - k}
$$

* **n**：候補者数
* **p**：当選確率
* **k**：当選者数

#### フェミニズム応用

* 女性候補者のうち何人が議席を獲得したか？

#### Python実装例

```python
k = np.arange(0, n_binom + 1)
plt.bar(k, binom.pmf(k, n_binom, p_binom))
plt.title("Binomial Distribution: Women Elected")
plt.xlabel("Number of Wins")
plt.ylabel("Probability")
plt.grid(True)
plt.show()
```

---

### 3. ポアソン分布：SNS上での性差別投稿の回数

#### 数式

$$
P(k) = \frac{\lambda^k e^{-\lambda}}{k!}
$$

* **λ**：単位時間内の平均発生数

#### フェミニズム応用

* 一定期間中の性差別的発言ツイート数
* 1時間に届くセクハラ報告数

#### Python実装例

```python
k = np.arange(0, 15)
plt.bar(k, poisson.pmf(k, λ_poisson))
plt.title("Poisson Distribution: Discriminatory Posts")
plt.xlabel("Number of Incidents")
plt.ylabel("Probability")
plt.grid(True)
plt.show()
```

---

### 4. ガンマ分布：復職にかかる時間や作業負荷

#### 数式

$$
f(x) = \frac{\lambda^\alpha x^{\alpha - 1} e^{-\lambda x}}{\Gamma(\alpha)} \quad (x > 0)
$$

* **α**：形状パラメータ（負荷の複雑さ）
* **λ**：スケール（時間の伸縮）

#### フェミニズム応用

* 出産後の復職にかかる時間
* 育児による日々の家事時間分布

#### Python実装例

```python
x = np.linspace(0, 15, 200)
plt.plot(x, gamma.pdf(x, α_gamma, scale=1/λ_gamma))
plt.title("Gamma Distribution: Recovery Time")
plt.xlabel("Time")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()
```

---

### 5. 対数正規分布：極端な成功と格差

#### 数式

$$
f(x) = \frac{1}{x \sigma \sqrt{2\pi}} \exp\left( -\frac{(\ln x - \mu)^2}{2 \sigma^2} \right) \quad (x > 0)
$$

* **μ, σ**：ログ変換された平均・分散

#### フェミニズム応用

* インフルエンサーのフォロワー数（女性比率の偏り含む）
* 女性起業家の年収の広がり

#### Python実装例

```python
x = np.linspace(0.01, 20, 300)
plt.plot(x, lognorm.pdf(x, s=σ_logn, scale=np.exp(μ_logn)))
plt.title("Log-normal Distribution: Income or Influence")
plt.xlabel("Value")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()
```

---

### 6. ワイブル分布：離職や脱落の傾向

#### 数式

$$
f(x) = \frac{k}{\lambda} \left( \frac{x}{\lambda} \right)^{k - 1} \exp\left( -\left( \frac{x}{\lambda} \right)^k \right) \quad (x \geq 0)
$$

* **k**：形状パラメータ（脱落率の変化）
* **λ**：尺度パラメータ（時間の単位）

#### フェミニズム応用

* 働く女性の離職傾向
* 新卒女性が企業を辞めるまでの期間

#### Python実装例

```python
x = np.linspace(0, 10, 300)
plt.plot(x, weibull_min.pdf(x, c=k_weibull, scale=λ_weibull))
plt.title("Weibull Distribution: Time Until Dropout")
plt.xlabel("Duration")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()
```




## カイ二乗分布（Chi-square Distribution）

### 数式：

$$
f(x) = \frac{1}{2^{k/2} \Gamma(k/2)} x^{k/2 - 1} e^{-x/2}, \quad x > 0
$$

* **x**：検定統計量（観測と期待の差の2乗和）
* **k**：自由度（通常「行数-1 × 列数-1」）

---

### 解説：

**カイ二乗分布は、「観測された頻度」が「期待される頻度」とどれだけズレているかを測る指標**です。ジェンダー研究では、以下のような問いに用います：

#### ✦ 具体例：

* 「IT業界における男性と女性の職種分布は同じか？」
* 「育児休暇取得率における男女の差は統計的に有意か？」

#### ✦ フェミニズム的応用：

* 職業カテゴリ（例：エンジニア、事務、管理職）と性別（男性・女性・その他）との**独立性**を検定。
* 雇用機会の「構造的偏り」があるかをデータから検出可能。

#### ✦ 自由度の意味：

自由度 $k = (\text{行の数} - 1) \times (\text{列の数} - 1)$ は、「どれだけ自由にデータが変動できるか」の指標です。

---

## t分布（Student's t-distribution）

### 数式：

$$
f(t) = \frac{\Gamma\left( \frac{\nu + 1}{2} \right)}{\sqrt{\nu \pi} \, \Gamma\left( \frac{\nu}{2} \right)} \left( 1 + \frac{t^2}{\nu} \right)^{-\frac{\nu + 1}{2}}
$$

* **t**：標準化された平均の差
* **ν（ニュウ）**：自由度（例：$n_1 + n_2 - 2$）

---

### 解説：

**t分布は、標本サイズが小さいときの「平均の差の信頼性」を評価する分布**です。

#### ✦ 具体例：

* 「女性と男性の月給の平均に有意差はあるか？」
* 「育児後に復職した女性と復職していない女性の労働時間に違いはあるか？」

#### ✦ フェミニズム的応用：

* 男女別に収集した賃金データを使い、「平均賃金に差がある」と主張する前に、\*\*その差が統計的に信頼できるか（偶然でないか）\*\*を検証。
* 特に少数サンプル（例：女性管理職の給与）において有用。

#### ✦ 自由度の意味：

自由度 $\nu = n - 1$ は、標本平均の変動に関してどれだけの情報があるかを示す。

---
```Python



# ライブラリのインストール / Install necessary libraries
!pip install numpy scipy matplotlib

# ライブラリのインポート / Import libraries
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import expon, binom, poisson, gamma, lognorm, weibull_min, chi2, t

# ---------------------------
# 数値パラメータの定義 / Define all parameters centrally
# ---------------------------
λ_exp = 0.5                      # Exponential rate / 指数分布 λ（待機率）
n_binom = 10                     # Number of trials / 二項分布 試行回数
p_binom = 0.3                    # Success probability / 成功確率
λ_poisson = 4                    # Mean events per interval / 平均発生数
α_gamma = 2.0                    # Shape parameter / ガンマ分布形状
λ_gamma = 1.0                    # Rate parameter / ガンマ分布尺度
μ_logn = 1.0                     # Mean of log / 対数正規分布μ
σ_logn = 0.5                     # Std dev of log / 対数正規分布σ
k_weibull = 1.5                  # Shape parameter / ワイブル分布形状
λ_weibull = 2.0                  # Scale parameter / ワイブル分布尺度
df_chi2 = 4                      # Degrees of freedom / カイ二乗分布 自由度
df_t = 10                        # Degrees of freedom / t分布 自由度

# ---------------------------
# 1. 指数分布 / Exponential Distribution
# ---------------------------
x_exp = np.linspace(0, 10, 200)
plt.plot(x_exp, expon.pdf(x_exp, scale=1/λ_exp))
plt.title("Exponential Distribution: Waiting Time")
plt.xlabel("Time")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()

# ---------------------------
# 2. 二項分布 / Binomial Distribution
# ---------------------------
k_binom = np.arange(0, n_binom + 1)
pmf_binom = binom.pmf(k_binom, n_binom, p_binom)
plt.bar(k_binom, pmf_binom)
plt.title("Binomial Distribution: Women Elected")
plt.xlabel("Number of Successes")
plt.ylabel("Probability")
plt.grid(True)
plt.show()

# ---------------------------
# 3. ポアソン分布 / Poisson Distribution
# ---------------------------
k_poisson = np.arange(0, 15)
pmf_poisson = poisson.pmf(k_poisson, λ_poisson)
plt.bar(k_poisson, pmf_poisson)
plt.title("Poisson Distribution: Discriminatory Posts")
plt.xlabel("Event Count")
plt.ylabel("Probability")
plt.grid(True)
plt.show()

# ---------------------------
# 4. ガンマ分布 / Gamma Distribution
# ---------------------------
x_gamma = np.linspace(0, 15, 200)
pdf_gamma = gamma.pdf(x_gamma, a=α_gamma, scale=1/λ_gamma)
plt.plot(x_gamma, pdf_gamma)
plt.title("Gamma Distribution: Recovery Time")
plt.xlabel("Time")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()

# ---------------------------
# 5. 対数正規分布 / Log-normal Distribution
# ---------------------------
x_logn = np.linspace(0.01, 20, 300)
pdf_logn = lognorm.pdf(x_logn, s=σ_logn, scale=np.exp(μ_logn))
plt.plot(x_logn, pdf_logn)
plt.title("Log-normal Distribution: Income or Influence")
plt.xlabel("Value")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()

# ---------------------------
# 6. ワイブル分布 / Weibull Distribution
# ---------------------------
x_weibull = np.linspace(0, 10, 300)
pdf_weibull = weibull_min.pdf(x_weibull, c=k_weibull, scale=λ_weibull)
plt.plot(x_weibull, pdf_weibull)
plt.title("Weibull Distribution: Time Until Dropout")
plt.xlabel("Duration")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()

# ---------------------------
# 7. カイ二乗分布 / Chi-square Distribution
# ---------------------------
x_chi2 = np.linspace(0.01, 20, 300)
pdf_chi2 = chi2.pdf(x_chi2, df=df_chi2)
plt.plot(x_chi2, pdf_chi2)
plt.title("Chi-square Distribution: Gender × Job Category")
plt.xlabel("Chi-square Value")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()

# ---------------------------
# 8. t分布 / Student's t-Distribution
# ---------------------------
t_vals = np.linspace(-5, 5, 300)
pdf_t = t.pdf(t_vals, df=df_t)
plt.plot(t_vals, pdf_t)
plt.title("Student's t-Distribution: Mean Wage Difference")
plt.xlabel("t-value")
plt.ylabel("Probability Density")
plt.grid(True)
plt.show()

```