芋出し画像

📝 盞関係数ず回垰係数が぀ながる

日垞に統蚈・デヌタ分析を取り入れおみたせんか

むントロ


統蚈怜定玚ず統蚈モデルを結ぶ 完党䞀臎シリヌズ の第話は 盞関係数ず単回垰分析 ã§ã™ã€‚
テスト勉匷の思い出を振り返りながら、盞関係数ず単回垰分析が぀ながる様子をご堪胜ください


トピック


1. 今日の䞀蚀

盞関係数 $${r}$$ は、単回垰の 暙準化回垰係数 $${\beta}$$ ず完党に䞀臎する

👉 怜定統蚈量t倀・p倀も同じ、さらに $${R^2 = r^2}$$ も䞀臎したす。

📝📝📝

2. 導入ストヌリヌ

テスト勉匷のずき、友だちが蚀いたした。

  • A君たくさん勉匷すれば点数が䞊がるはず

  • B君いや、そんなに関係ある

「勉匷時間ずテスト埗点の関係」を調べるにはどうしたらよいでしょう

そこで登堎するのが 盞関係数。
でも実は同じこずを 回垰分析 でも確認できるのです。

3. デヌタ䟋

30人の生埒から、勉匷時間ずテストの埗点を聞き取りしたした。
※デヌタはフィクションです。

$$
\begin{array}{cc}
勉匷時間h & 埗点  \\
\hline
\\
5.3 & 71 \\
4.7 & 72 \\
\vdots & \vdots \\
\end{array}
$$

👉 実装では乱数で30人分のデヌタを生成したす。

# むンポヌト
import numpy as np

# デヌタの䜜成
n = 30
rng = np.random.default_rng(seed=0)
study_time = rng.normal(5, 2, n).round(1)  # 勉匷時間平均5, 分散2
score = (50 + 5*study_time + rng.normal(0, 5, n)).round(0)  # テスト埗点

# デヌタの衚瀺
print('【勉匷時間】')
print(study_time)
print('【埗点】')
print(score)

【䜜成した仮想デヌタの内容】

【勉匷時間】
[5.3, 4.7, 6.3, 5.2, 3.9, 5.7, 7.6, 6.9, 3.6, 2.5, 3.8, 5.1, 0.3, 4.6, 2.5, 3.5, 3.9, 4.4, 5.8, 7.1, 4.7, 7.7, 3.7, 5.7, 6.8, 5.2, 3.5, 3.2, 4.1, 5.4]
【埗点】
[71, 72, 81, 79, 71, 80, 85, 84, 72, 70, 63, 83, 58, 77, 64, 66, 77, 82,
88, 92, 75, 82, 68, 82, 78, 78, 70, 69, 65, 74]

勉匷時間ず埗点のデヌタをデヌタフレヌムにたずめたす。

# むンポヌト
import pandas as pd

# デヌタフレヌム化
df = pd.DataFrame({'勉匷時間': study_time, '埗点': score})

# 結果の衚瀺
print('df.shape:', df.shape)
df.head()

【実行結果】

勉匷時間ず埗点を散垃図で可芖化したす。

# むンポヌト
import matplotlib.pyplot as plt
import japanize_matplotlib

# 可芖化散垃図
df.plot.scatter(x='勉匷時間', y='埗点')
plt.title('勉匷時間ず埗点の関係')
plt.ylabel('埗点')
plt.show()

【実行結果】

「勉匷時間が長いほど点数が高い」ずいう正の盞関が芋られたす。

📝📝📝

4. 確かめる

4.1 盞関係数で関係を調べる
勉匷時間ず埗点の盞関係数を蚈算したしょう。
scipy ラむブラリの pearsonrピア゜ンの積率盞関係数を利甚しお、盞関係数の蚈算ず「無盞関の怜定」を同時に行いたす。

# むンポヌト
from scipy.stats import pearsonr

# 盞関係数の蚈算
r, pval = pearsonr(df['勉匷時間'], df['埗点'])

# 結果の衚瀺
print(f"盞関係数 r={r:.5f}, p倀={pval:.5f}")

【実行結果】

盞関係数は 0.83。
勉匷時間ず埗点には 匷い正の盞関 が芋られたす。
無盞関の怜定の p 倀は 0.00。
有意氎準 5% で å‹‰åŒ·æ™‚間ず埗点の間の盞関は有意 ãšèš€ãˆãŸã™ã€‚

📝

4.2 単回垰分析で同じ問いを衚す
単回垰モデルを立おたす。

$$
Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i
$$

  • $${Y_i}$$埗点

  • $${X_i}$$勉匷時間

👉 出力に 勉匷時間の係数 ず、その t倀・p倀 が衚瀺されたす。

# むンポヌト
import statsmodels.formula.api as smf

# 回垰分析の実行
model = smf.ols('埗点 ~ 勉匷時間', data=df).fit()
model.summary().tables[1]  # 係数の衚だけ衚瀺

【実行結果】
勉匷時間の回垰係数coefは 4.05。
p 倀 < 0.05 ですので、有意氎準 5% で勉匷時間の回垰係数は統蚈的に有意ず考えられたす。

📝

4.3 結果の読み取り
🔢ポむント1暙準化回垰係数 = 盞関係数
暙準化したデヌタで単回垰分析を行いたす。

# 暙準化デヌタを䜜成
df_std = (df - df.mean()) / df.std(ddof=1)

# 暙準化デヌタで回垰分析 ※切片を含めない
model_std = smf.ols('埗点 ~ 0 + 勉匷時間', data=df_std).fit()
display(model_std.summary2().tables[1].round(5))
beta = model_std.params.勉匷時間

# 結果の衚瀺
print(f"盞関係数 r   ={r:.5f}")
print(f"暙準化回垰係数 β={beta:.5f}")

【実行結果】

👉 盞関係数 r ず 暙準化回垰係数 β が完党に䞀臎

🔢ポむント2t 倀・p 倀も䞀臎

# 盞関係数の怜定のt倀の算出
r_tval = (r*np.sqrt(n - 2)) / np.sqrt(1 - r**2)

# 無盞関の怜定ず回垰のt倀・p倀の比范
print(f"無盞関の怜定 t倀={r_tval:.5f}, p倀={pval:.5f}")
print(f"回垰     t倀={model.tvalues.勉匷時間:.5f}, "
      f"p倀={model.pvalues.勉匷時間:.5f}")

【実行結果】

👉 無盞関の怜定の t 倀ず、回垰係数の t 倀が同じ。p 倀も䞀臎。

🔢ポむント3決定係数 R² = r²

# 決定係数 R² ず r² の比范
print(f"決定係数    R²={model.rsquared:.5f}")
print(f"盞関係数の二乗 r²={r**2:.5f}")

【実行結果】

👉 単回垰の堎合、決定係数 R² ず 盞関係数の二乗 r² が完党䞀臎。

📝

4.4 盞関ず回垰の぀ながり
単回垰分析の堎合

  • 盞関係数 $${r}$$ = 暙準化回垰係数 $${\beta}$$

  • 無盞関怜定の t 怜定統蚈量 = 回垰の係数の t 怜定統蚈量

  • 回垰の決定係数 R² = 盞関係数の二乗 r²

👉 盞関ず単回垰は“同じ匏を別の顔で芋おいる”だけ

📝📝📝

5. MLブリッゞ

ML は機械孊習の略称です。
scikit-learn の線圢回垰で切片、傟きを算出できたす。

# むンポヌト
from sklearn.linear_model import LinearRegression

# 説明倉数ず目的倉数の準備
X = df[['勉匷時間']]
y = df['埗点']

# モデルの孊習
reg = LinearRegression().fit(X,y)
print(f'切片:{reg.intercept_:.4f}, 傟き:{reg.coef_[0]:.4f}')

【実行結果】

👉 傟きは 勉匷時間が1時間増えるず点数がどれだけ増えるか を衚す。
👉 統蚈的怜定は出ないが、「孊習の流れ」は同じ。

📝📝📝

6. ⚠誀解泚意

  • 今回の䞀臎は「単回垰に限っお成り立぀」。
    説明倉数が耇数ある堎合は通垞、䞀臎しない。

  • 非暙準化回垰係数は 盞関係数ず䞀臎しない単䜍䟝存だから。

  • 倖れ倀に匱い。
    1人の極端な点数が盞関を倧きく動かすこずがある。

  • 盞関は因果を意味しない。
    勉匷時間ず点数に盞関があっおも、必ずしも勉匷時間が原因ずは限らない。

📝📝📝

7. 架け橋のたずめ

  • 盞関係数 r = 単回垰の暙準化回垰係数 β

  • 無盞関の t 怜定ず単回垰の回垰係数の t 怜定は同じ

  • 単回垰の決定係数 R² = r²

👉 盞関ず回垰は別䞖界の話ではなく、同じ匏を違う角床から芋ただけ。

📝📝📝

8. 今日の小テスト

Q1. 盞関係数ず回垰係数が完党に䞀臎するのはどんな堎合
→ 答え 単回垰で暙準化した堎合β = r。

Q2. 無盞関の怜定統蚈量ず単回垰の怜定統蚈量はどう関係する
→ 答え t 倀・p 倀が䞀臎する。

Q3. 単回垰における R² は盞関係数 r ずどう関係する
→ 答え R² = r² で完党䞀臎。

📝📝📝

9. 次回ぞ぀なぐ

今回の蚘事では、盞関係数ず単回垰の暙準化回垰係数が同じこずをしおいるず確認したした。
さらに、単回垰の決定係数 R² ず r² が完党に䞀臎するこずも分かりたした。

では、説明倉数が2぀以䞊ある堎合はどうでしょうか
「勉匷時間」ず「睡眠時間」の䞡方でテスト埗点を説明するずいった状況です。

このずきでも 決定係数 R² がモデル党䜓の説明力を衚したす。
そしお、各説明倉数の寄䞎を分解しお考えるず、そこにも「完党䞀臎」が芋えおきたす。

👉 次回は「決定係数 R² ず寄䞎率の完党䞀臎」を芋おいきたしょう

📝📝📝

おたけ暙準化回垰係数ず盞関係数の䞀臎を数匏で敎理

1⃣ ステップ 1. 非暙準化の回垰係数
単回垰の回垰係数は次匏で定矩されたす。

$$
\beta_1 = \frac{\text{Cov}(X,Y)}{\text{Var}(X)}
$$

2⃣ ステップ 2. 暙準化倉数の定矩
暙準化した倉数を次のように眮きたす。

$$
X^* = \frac{X - \bar{X}}{s_X}, \quad Y^* = \frac{Y - \bar{Y}}{s_Y}
$$

ここで $${s_X, s_Y}$$ はそれぞれ $${X, Y}$$ の暙準偏差です。

3⃣ ステップ 3. 暙準化埌の分散

$$
\text{Var}(X^*) = \text{Var}\left(\frac{X-\bar{X}}{s_X}\right)
$$

分散の性質定数倍は二乗で倖れるから、

$$
\text{Var}(X^*) = \frac{1}{s_X^2}\text{Var}(X-\bar{X})
$$

さらに $${\text{Var}(X-\bar{X}) = \text{Var}(X)}$$ なので、

$$
\text{Var}(X^*) = \frac{1}{s_X^2}\text{Var}(X)
$$

暙準偏差 $${s_X = \sqrt{\text{Var}(X)}}$$ より、

$$
\text{Var}(X^*) = \frac{\text{Var}(X)}{s_X^2} = 1
$$

4⃣ ステップ 4. 暙準化埌の共分散

$$
\text{Cov}(X^*, Y^*) = \text{Cov}\left(\frac{X-\bar{X}}{s_X}, \frac{Y-\bar{Y}}{s_Y}\right)
$$

共分散の性質定数は倖に出せるから、

$$
\text{Cov}(X^*, Y^*) = \frac{1}{s_X s_Y} \text{Cov}(X-\bar{X}, Y-\bar{Y})
$$

共分散は平均を匕いおも倉わらないので、

$$
\text{Cov}(X^*, Y^*) = \frac{1}{s_X s_Y}\text{Cov}(X,Y)
$$

5⃣ ステップ 5. 暙準化回垰係数
暙準化した回垰係数は、

$$
\beta^* = \frac{\text{Cov}(X^*, Y^*)}{\text{Var}(X^*)}
$$

ステップ3ず4を代入するず、

$$
\beta^* = \frac{\text{Cov}(X,Y)}{s_X s_Y}
$$

6⃣ ステップ 6. 盞関係数ずの䞀臎
盞関係数 $${r}$$ の定矩は、

$$
r = \frac{\text{Cov}(X,Y)}{s_X s_Y}
$$

よっお、

$$
\beta^* = r
$$

が導かれたす ✅

📝📝📝

おたけ盞関係数のt倀ず回垰係数のt倀の䞀臎を数匏で敎理

1⃣ ステップ 1. 盞関係数のt怜定
暙本盞関係数 $${r}$$ が 0 かどうかを怜定する無盞関の怜定の統蚈量は、

$$
t_r = \frac{r \sqrt{n-2}}{\sqrt{1-r^2}}
$$

です。自由床は $${n-2}$$。

2⃣ ステップ 2. 単回垰のt怜定
単回垰の回垰係数 $${\beta_1}$$ の怜定統蚈量は、

$$
t_\beta = \frac{\hat{\beta}_1}{\text{SE}(\hat{\beta}_1)}
$$

です。
ここで、掚定量 $${\hat{\beta}_1}$$ は

$$
\hat{\beta}_1 = r \frac{s_Y}{s_X}
$$

で衚されたす単回垰の係数は盞関係数ず暙準偏差の比で曞ける。

3⃣ ステップ 3. 暙準誀差の圢
$${\hat{\beta}_1}$$ の暙準誀差は、

$$
\text{SE}(\hat{\beta}_1) = \frac{s_e}{\sqrt{(n-1)}\ s_X}
$$

ただし $${s_e}$$ は残差の暙準偏差です。

4⃣ ステップ 4. 残差分散ず盞関の関係
実は残差分散は盞関係数ず盎結しおいお、

$$
s_e^2 = (1-r^2)(n-1) s_Y^2 /(n-2)
$$

ずいう圢になりたす。

5⃣ ステップ 5. t倀の䞀臎
以䞊を代入するず、

$$
t_\beta = \frac{r \frac{s_Y}{s_X}}{s_e / \sqrt{(n-1)}\ s_X}
= \frac{r \sqrt{n-1}\ s_Y}{s_e}
$$

さらに $${s_e^2 = (1-r^2)(n-1) s_Y^2 /(n-2)}$$ を代入しお敎理するず、

$$
t_\beta = \frac{r \sqrt{n-2}}{\sqrt{1-r^2}}
$$

ずなり、盞関の $${t_r}$$ ず完党に䞀臎したす ✅

📝📝📝

おたけ決定係数ず盞関係数の二乗の䞀臎を数匏で敎理

1⃣ ステップ 1. 決定係数 $${R^2}$$ の定矩 
決定係数は「説明された倉動 ÷ 党䜓の倉動」で定矩されたす。

$$
R^2 = \frac{\text{SSR}}{\text{SST}} = 1 - \frac{\text{SSE}}{\text{SST}}
$$

  • $${\text{SST} = \sum (Y_i - \bar{Y})^2}$$党䜓の倉動

  • $${\text{SSR} = \sum (\hat{Y}_i - \bar{Y})^2}$$回垰による説明倉動

  • $${\text{SSE} = \sum (Y_i - \hat{Y}_i)^2}$$残差倉動

2⃣ ステップ 2. 単回垰の回垰匏
単回垰では、

$$
\hat{Y}_i = \hat{\beta}_0 + \hat{\beta}_1 X_i
$$

であり、$${\hat{\beta}_1 = \cfrac{\text{Cov}(X,Y)}{\text{Var}(X)}}$$。

3⃣ ステップ 3. 回垰による説明倉動SSR
単回垰の堎合、次が成り立ち

$$
\begin{align*}
\hat{Y}_i - \bar{Y} &= (\hat{\beta}_0 + \hat{\beta}_1 X_i) - (\hat{\beta}_0 + \hat{\beta}_1 \bar{X}) \\
&= \hat{\beta}_1(X_i - \bar{X})
\end{align*}
$$

回垰による説明倉動 SSR を次のように衚せたす

$$
\text{SSR} = \hat{\beta}_1^2 \sum (X_i - \bar{X})^2
$$

4⃣ ステップ 4. $${R^2}$$ の匏に代入 
$${R^2 = \cfrac{\text{SSR}}{\text{SST}}}$$ に代入するず

$$
R^2 = \frac{\hat{\beta}_1^2 \sum (X_i - \bar{X})^2}{\sum (Y_i - \bar{Y})^2}
$$

5⃣ ステップ 5. 回垰係数ず盞関係数の関係

$$
\hat{\beta}_1 = \frac{\text{Cov}(X,Y)}{\text{Var}(X)} = r \cdot \frac{s_Y}{s_X}
$$

ここで $${r = \cfrac{\text{Cov}(X,Y)}{s_X s_Y}}$$。

6⃣ ステップ 6. $${R^2}$$ を敎理 
代入しお敎理するず

$$
\begin{align*}
R^2 &= \frac{(r \cdot \tfrac{s_Y}{s_X})^2 \cdot (n-1)s_X^2}{(n-1)s_Y^2} \\
&= r^2 \cdot \frac{s_Y^2}{s_X^2} \cdot \frac{s_X^2}{s_Y^2} \\
&= r^2 \\
\end{align*}
$$

🔑 結論
「回垰の説明倉動の割合」が「盞関係数の2乗」ず同じ匏に垰着する。

📝📝📝

おわり


シリヌズ蚘事

次の蚘事

前の蚘事

目次

ブログの玹介


note で぀のシリヌズ蚘事を曞いおいたす。
ぜひ芗いおいっおくださいね

のんびり統蚈

統蚈怜定玚の問題集を手がかりにしお、確率・統蚈をざっくり掘り䞋げるブログです。
雑談感芚で倧䞈倫です。ぜひ芗いおいっおくださいね。
統蚈怜定玚公匏問題集CBT察応版に察応しおいたす。
Python、EXCELのサンプルコヌドの配垃もありたす。

統蚈・デヌタ分析ず぀ながる

シリヌズ「統蚈・デヌタ分析ず぀ながる」は、統蚈・デヌタ分析ずの「぀ながり」を発掘しお、コラム颚に仕立おたブログシリヌズです。
生成 AI の力を借りながら、統蚈・デヌタ分析の入り口をむメヌゞしお、自由気たたに曞きたした。
たずえば 
・日垞生掻ず統蚈の぀ながり
・統蚈怜定玚からその先ぞの぀ながり
気楜にお読みいただけたら嬉しいです🍀

実隓たのしいベむズモデリングをPyMC Ver.5で

曞籍「たのしいベむズモデリング」・「たのしいベむズモデリング」の心理孊研究に甚いられたベむズモデルを PyMC Ver.5で描いお分析したす。
この曞籍をはじめ、倚くのベむズモデルは 蚀語Stanで曞かれおいたす。
PyMCの可胜性を探り出し、手軜にベむズモデリングを実践できるように努めたす。
身近なテヌマ、むメヌゞしやすいテヌマですので、ぜひぜひPyMCで動かしお、䞀緒に楜しみたしょう

実隓岩波デヌタサむ゚ンス1のベむズモデリングをPyMC Ver.5で

曞籍「実隓岩波デヌタサむ゚ンスvol.1」の人のベむゞアンによるベむズモデルを PyMC Ver.5で描いお分析したす。
この曞籍はベむズプログラミングのむロハをざっくりず孊ぶこずができる良曞です。
楜しくPyMCモデルを動かしお、ベむズず仲良しになれた気がしたす。
みなさんもぜひぜひPyMCで動かしお、䞀緒に遊んで孊びたしょう

楜しい写経 ベむズ・Python等

ベむズ、Python、その他の「曞籍の写経掻動」の成果をブログにしたす。
䞻にPythonぞの翻蚳に取り組んでいたす。
写経に取り組むお仲間さんのサンプルコヌドになれば幞いです🍀

RずStanではじめる心理孊のための時系列分析入門 を PythonずPyMC Ver.5 で

曞籍「RずStanではじめる心理孊のための時系列分析入門」の時系列分析をPythonずPyMC Ver.5 で実践したす。
この曞籍には時系列分析のテヌマが盛りだくさん
時系列分析の懐の深さを実感いたしたした。
倧奜きなPythonで楜しく時系列分析を孊びたす。

デヌタサむ゚ンスっぜいこずを綎る

統蚈、デヌタ分析、AI、機械孊習、Pythonのコラムを䞍定期に綎っおいたす。
統蚈・デヌタサむ゚ンス曞籍にた぀わる蚘事が倚いです。
「統蚈」「Python」「数孊ずPython」「R」のシリヌズが生たれおいたす。

Python機械孊習プログラミング実践蚘

曞籍「Python機械孊習プログラミング PyTorch & scikit-learn線」を孊んだずきのさたざたな思いを蚘事にしたした。
この曞籍は、scikit-learnずPyTorchの教科曞です。
よかったらぜひ、お詊しくださいたせ。

最埌たでお読みいただきたしお、ありがずうございたした。

いいなず思ったら応揎しよう

ネむピア DS 応揎ありがずうございたす。これからもがんばっお蚘事を䜜成したす

この蚘事が参加しおいる募集