```{r setup, echo=FALSE}
knitr::opts_chunk$set(echo = TRUE,
                      message = FALSE,
                      warning = FALSE)
```

# 2.1 労働市場における人種差別

---

## 架空履歴書実験

* **問い**: 労働市場において、人種に基づく差別は存在するか？
* **実験デザイン**: 
    * 架空の履歴書を多数作成し、実際の求人に応募する。
    * 履歴書の名前を「白人的な名前」と「黒人的な名前」に**無作為（ランダム）に割り当てる**。
    * その他の経歴（学歴や経験など）は同一。
* **結果変数**: 雇用主から面接の連絡（コールバック）があったかどうか。

# 2.1.1 データの読み込みと確認

---

## resume データの読み込み (1)

* 実験で収集されたデータをRに読み込みます。

\scriptsize
```{r}
# 1. ローカルに保存したresumeデータの読み込み（推奨）
resume <- read.csv("resume.csv")

# （参考）URLから直接読み込むことも可能
# resume <- read.csv("https://ayumu-tanaka.github.io/QSS/QSS_Data/resume.csv")

# 2. データの次元（行数と列数）を確認
dim(resume)
```
\normalsize

---

## resume データの読み込み (2)

* データの最初の数行を表示して、変数の並びや中身を確認します。

\scriptsize
```{r}
# 最初の3行を表示
head(resume, n = 3)
```
\normalsize

# 2.1.2 クロス集計表

---

## 人種とコールバックの関係

* `table()` 関数を使って、人種（`race`）とコールバック（`call`）のクロス集計表を作成します。

\scriptsize
```{r}
# 人種とコールバックの2変数のクロス集計表を作成
# race="black" または "white"
# call=1 (連絡あり), call=0 (連絡なし)
race.call.tab <- table(race = resume$race, call = resume$call) 

# 作成した表を表示
race.call.tab
```
\normalsize

# 2.1.3 コールバック率の計算

---

## 人種別のコールバック率

* 集計表から、特定の人種のコールバック率を計算します。

\scriptsize
```{r}
# 全体のコールバック率: 連絡があった合計 / 全体の履歴書数
sum(race.call.tab[, 2]) / nrow(resume)

# 黒人のコールバック率: 黒人で連絡あり / 黒人の合計
# [1, 2] は「1行目(black), 2列目(call=1)」を意味する
race.call.tab[1, 2] / sum(race.call.tab[1, ]) 

# 白人のコールバック率: 白人で連絡あり / 白人の合計
# [2, 2] は「2行目(white), 2列目(call=1)」を意味する
race.call.tab[2, 2] / sum(race.call.tab[2, ]) 
```
\normalsize

# 2.1.4 まとめ

---

## このセクションのまとめ

* **無作為化比較試験 (RCT)**: 処置を無作為に割り当てることで、因果関係を科学的に検証する。
* **履歴書実験**: 名前の響き（人種）を無作為に変えることで、労働市場における差別の存在を証明した。
* **Rの操作**: 
    * `read.csv()` によるデータの読み込み。
    * `table()` を使ったクロス集計。
    * 行列や表のインデックス `[行, 列]` による要素の抽出。
    * 計算結果に基づく割合（確率）の算出。
