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

# 2.1 STARプロジェクト

---

## STARプロジェクトの概要

* 1980年代にテネシー州で実施された「生徒と教師の学習達成率プロジェクト」。
* 目的: 学級の大きさが生徒の成績に及ぼす影響を検証すること。
* 幼稚園児を小学3年生の終わりまで、以下のいずれかに**無作為に割り当て**た：
    * **少人数学級** (13人〜17人)
    * **標準規模学級** (22人〜25人)

# 2.2 処置変数と結果変数

---

## 因果関係の方向性

* **因果関係**: 2つの変数の間の原因と結果の関係。
* **処置変数 ($X$)**: 変化が発生する変数（原因）。
* **結果変数 ($Y$)**: 処置変数の変化に応答して変化しうる変数（結果）。

$$ X \rightarrow Y $$

* STARプロジェクトでの関心：
    * **少人数学級** (処置変数) $\rightarrow$ **生徒の学業成績** (結果変数)

---

## 処置変数と結果変数の定義

* **処置変数 ($X$)**:
    * 処置 ($X_i = 1$): 処置があるという状態（少人数学級に通った）。
    * 統制 ($X_i = 0$): 処置がないという状態（標準規模学級に通った）。
* **結果変数 ($Y$)**:
    * `reading` (読解力テストの点数)
    * `math` (算数テストの点数)
    * `graduated` (高校卒業を示す二値変数: 1=卒業, 0=卒業しなかった)

# 2.3 個別因果効果

---

## 潜在的結果と個別因果効果

* **潜在的結果**: 処置を受けた場合と受けなかった場合のそれぞれの結果。
    * $Y_i(X_i = 1)$: 個人$i$が処置を受けた場合の潜在的結果。
    * $Y_i(X_i = 0)$: 個人$i$が統制条件下での潜在的結果。

* **個別因果効果** = $Y_i(X_i = 1) - Y_i(X_i = 0)$

---

## 因果推論の根本問題

* 現実の世界では、同じ個人について**両方の潜在的結果を同時に観察することは決してない**。
* 観察できるのは**現実の結果**のみであり、**反事実の結果**は観察できない。
* したがって、個人レベルでの因果効果を直接計算することは不可能である。

# 2.4 平均因果効果

---

## 平均因果効果（平均処置効果）

* 個人の効果の代わりに、集団における因果効果の平均に注目する。
* もし全員の両方の潜在的結果を観察できれば：

     $$平均処置効果 $$
     $$= 個別因果効果の平均 $$
     $$=\overline{Y(X=1)} - \overline{Y(X=0)}$$

---

## 無作為化実験と平均の差推定量

* **無作為化実験**: 処置の割り当てが無作為に行われる研究デザイン。
* 無作為化により、処置群と統制群は、処置以外のすべての特徴において**平均的に互いに同一（比較可能）**になる。
* この場合、現実の結果を用いて平均処置効果を推定できる：
    * **平均の差推定量** = $\overline{Y}_{\text{処置群}} - \overline{Y}_{\text{統制群}}$

# 2.5 少人数学級は生徒の成績を向上させるか？

---

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

* 因果効果の推定のため、実験データをRに読み込みます。

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

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

---

## データの確認 (2)

\scriptsize
```{r}
# データの最初の数行を表示
head(star)
```
\normalsize

---

## Rの関係演算子と新しい変数の作成

* `==` を用いて、特定の値と等しいかを評価できる。
* `ifelse()` 関数を用いて、条件に基づいて新しい変数を作成する。

```{r}
# 論理テストの例
3 == 3
3 == 4

# 少人数学級に通ったかを示す新しい二値変数 'small' を作成
star$small <- ifelse(star$classtype == "small", 1, 0)
```


---

## 新しい変数 'small' を確認する

* データの最初の数行を表示

```{r}
head(star)
```

---

## 変数の部分集合化と平均の計算 (1)

* `[]` を用いて、特定の条件を満たす観察を抽出する。

```{r}
# 読解力の全体平均
mean(star$reading)

# 処置群（少人数学級）の読解力の平均
mean(star$reading[star$small == 1])
```

---

## 変数の部分集合化と平均の計算 (2)

```{r}
# 統制群（標準規模学級）の読解力の平均
mean(star$reading[star$small == 0])
```

---

## 平均の差推定量の計算（読解力と算数）

\scriptsize

```{r}
# 読解力についての平均の差推定量
mean(star$reading[star$small == 1]) - mean(star$reading[star$small == 0])

# 算数についての平均の差推定量
mean(star$math[star$small == 1]) - mean(star$math[star$small == 0])
```

\normalsize

---

## 平均の差推定量の計算（卒業率）


\scriptsize

```{r}
# 卒業についての平均の差推定量
mean(star$graduated[star$small == 1]) - mean(star$graduated[star$small == 0])
```

```{r}
# 解釈の補助
mean(star$graduated[star$small == 1]) # 処置群の卒業率
mean(star$graduated[star$small == 0]) # 統制群の卒業率
```

\normalsize

* **解釈**: 少人数学級に通うことで、高校を卒業する確率が平均で約0.7パーセンテージポイント上昇した。

# 2.6 まとめ

---

## 第2章のまとめ

* **因果効果**: 処置変数が結果変数に与える影響。
* **因果推論の根本問題**: 反事実の結果は観察できない。
* **無作為化実験**: 処置群と統制群を比較可能にし、**平均の差推定量**を用いて平均因果効果を有効に推定できる。
* Rの操作: `==` 演算子、`ifelse()` による変数の作成、`[]` によるデータの部分集合化を学んだ。
