Rを学びたい Step19 結局、標準正規分布って何なの？？正規分布との関係性は？

## はじめに
これまで正規分布を使って検定や推測を実施してきました。やっていく中で、ん？？？結局正規分布ってなんだっけって部分が増えてきたので、ここで立ち止まって改めて標準正規分布・正規分布に関して学ぼうと思います！

## そもそもなんで正規分布が必要なのか？
そもそもなんで、正規分布が必要なのか？？
→それはバラバラのデータを比較しやすくするため。

例えば平均点80点の国語のテストで80点、平均点60点の数学のテストで80点。
→この場合、同じ80点でも数学の80点の方が価値ありそうですよね。

では、平均点70点の国語のテストで80点、平均点60点の数学のテストで70点。
→これは、どっちの方が価値が高い？？平均点から同じ10点離れているから、同一の価値？

では、平均点10点のテストで国語20点。平均点990点のテストで数学1000点。
→これは平均点から共に10点離れているから同一の価値？国語は平均点から倍、数学は誤差の範疇。本当に同じ価値？？

:::note info
比較する時に平均や点数は異なるので、一概に比較ができません。
そこで、比較する時に同一の基準を持たせる必要があります。そこで、異なる指標のものでも標準化して、比較しやすくする必要があります。
:::

## 異なるデータの基準を揃える
国語と数学の平均点やばらつき（標準偏差）が違うため、そのままでは比較が難しいです。
そのために標準化を実施します。
で、どうやって標準化するの？？🤔が次の話です。

### 1. 標準化の目的

標準化の目的は、「データを比較しやすくする」こと。
これを達成するには、データを「基準を揃えた形」に変換する必要がある。
	•	平均を揃える
	•	データの中心（基準点）を同じにするために、「データ全体の平均」を引く。
	•	これで、「どれだけ平均から離れているか」を基準にできる。
	•	ばらつきを揃える：
	•	データの広がり（ばらつき）を揃えるために、「標準偏差」で割る。
	•	これで、どのデータも「どれくらい平均から遠いか」を同じ単位で表現できる。

### 2. 平均が必要な理由：基準点を揃える

平均は、データ全体の「中心」を表します。
標準化する際に、各データから平均を引くのは、データの基準点を「ゼロ」に揃えるためです。

例：国語と数学の比較
	•	国語のデータ：80点（平均70）
	•	平均を引くと、 80 - 70 = 10  → 平均から10点上。
	•	数学のデータ：60点（平均50）
	•	平均を引くと、 60 - 50 = 10  → 平均から10点上。

なぜ平均を引くの？
	•	平均を引くことで、「そのデータが中心（平均）からどれだけ離れているか」を明確にできます。
	•	これが標準化の第一ステップで、データを「基準ゼロ」に揃える操作です。

### 3. 標準偏差が必要な理由：ばらつきを揃える

標準偏差（\sigma）は、データの「ばらつき（散らばり具合）」を表します。
標準化では、平均からの差を標準偏差で割ることで、データのばらつきを統一します。

例：国語と数学のばらつき
	•	国語：標準偏差10 → 「1標準偏差」は10点の広がりを意味する。
	•	数学：標準偏差5 → 「1標準偏差」は5点の広がりを意味する。

なぜ標準偏差で割るの？
	•	データのばらつきが違うと、比較が不公平になる。
	•	国語は「±10点」が普通の範囲（ばらつきが大きい）。
	•	数学は「±5点」が普通の範囲（ばらつきが小さい）。
	•	標準偏差で割ることで、どちらも「1標準偏差がどれだけの大きさか」という同じ基準で扱えるようになる。

計算結果
```math
\begin{align}
    •	国語： z = \frac{80 - 70}{10} = 1  → 平均より「1標準偏差」上。　 \\
    •	数学： z = \frac{60 - 50}{5} = 2  → 平均より「2標準偏差」上。　 \\
\end{align}
```

## 正規分布、標準正規分布の図の可視化
では、Rで数学と国語の正規分布を表示します。今回は下記の国語と数学の結果を表示します。

•国語（Kokugo）
・平均： \mu = 70 
・標準偏差： \sigma = 10 

•数学（Math）
•平均： \mu = 50 
•標準偏差： \sigma = 5 

```r:seikibunpu.r
# 必要なパッケージを読み込む（初回のみインストール）
if(!require(ggplot2)) install.packages("ggplot2", dependencies = TRUE)
library(ggplot2)

# データの設定
# 国語: 平均70, 標準偏差10
mu_kokugo <- 70
sigma_kokugo <- 10

# 数学: 平均50, 標準偏差5
mu_math <- 50
sigma_math <- 5

# x軸の範囲を設定
x_kokugo <- seq(40, 100, by = 0.1)  # 国語のスコア範囲
x_math <- seq(30, 70, by = 0.1)    # 数学のスコア範囲

# 正規分布の確率密度を計算
y_kokugo <- dnorm(x_kokugo, mean = mu_kokugo, sd = sigma_kokugo)
y_math <- dnorm(x_math, mean = mu_math, sd = sigma_math)

# 国語と数学のデータを結合
data <- data.frame(
  Score = c(x_kokugo, x_math),
  Density = c(y_kokugo, y_math),
  Subject = rep(c("Kokugo", "Math"), c(length(x_kokugo), length(x_math)))
)

# 正規分布をプロット
ggplot(data, aes(x = Score, y = Density, color = Subject)) +
  geom_line(size = 1) +
  labs(title = "Normal Distribution of Math and Kokugo",
       x = "Score",
       y = "Probability Density",
       color = "Subject") +
  theme_minimal() +
  scale_color_manual(values = c("blue", "red"))
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/06f7ed86-81cf-91c0-b4e0-234093ddbb5c.png)


では、次に標準正規分布に落とし込みます。

```r:
# 必要なパッケージをインストール＆読み込む（初回のみインストールが必要）
if(!require(ggplot2)) install.packages("ggplot2", dependencies = TRUE)
library(ggplot2)

# データ入力
# 教科ごとの平均値と標準偏差
mu_kokugo <- 70     # 国語の平均
sigma_kokugo <- 10  # 国語の標準偏差
mu_math <- 50       # 数学の平均
sigma_math <- 5     # 数学の標準偏差

# 点数の範囲を設定
x_kokugo <- seq(40, 100, by = 0.1)  # 国語のスコア範囲
x_math <- seq(30, 70, by = 0.1)    # 数学のスコア範囲

# 標準化したスコアを計算
z_kokugo <- (x_kokugo - mu_kokugo) / sigma_kokugo
z_math <- (x_math - mu_math) / sigma_math

# 標準正規分布の確率密度を計算
y_z_kokugo <- dnorm(z_kokugo, mean = 0, sd = 1)
y_z_math <- dnorm(z_math, mean = 0, sd = 1)

# 標準正規分布のデータを結合
z_data <- data.frame(
  Z_Score = c(z_kokugo, z_math),
  Density = c(y_z_kokugo, y_z_math),
  Subject = rep(c("Kokugo", "Math"), c(length(z_kokugo), length(z_math)))
)

# データフレームの内容を表示
cat("Data Frame Head (First 6 rows):\n")
print(head(z_data))  # データの先頭部分を表示

cat("\nSummary of Data Frame:\n")
print(summary(z_data))  # データの要約統計量を表示

# 標準正規分布をプロット
ggplot(z_data, aes(x = Z_Score, y = Density, color = Subject)) +
  geom_line(size = 1) +
  labs(title = "Standard Normal Distribution of Math and Kokugo",
       x = "Standardized Score (Z-Score)",
       y = "Probability Density",
       color = "Subject") +
  theme_minimal() +
  scale_color_manual(values = c("blue", "red"))
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599049/8d7e490c-8871-f46a-0c6f-0541756d5b06.png)




### 最後に
 なるほど。なんとなくわかってきた💡比較する時に平均や分散が異なるとそのままで比較できないから、標準化しようって話なのか。
 あれ？？？でも、標準化する必要性はわかったけど、なんで？確率と関係が出てくるのか？信頼区間の算出の時に、標準正規分布使っているけど、直接関係なくない？？？😅なので、次は標準正規分布と確率の関係性を解き明かしていきます。