今回の例題はこちらのデータを使うので、コピーして実際に動かしながら見てみてください
データの傾向を読み取る
データに対してそれらしい直線を引く
→未知の値に対して予測ができる
例
勉強時間が8時間
→94点
赤い回帰直線は、\(\hat{y}=\beta_1 x+\beta_0\)の式で表す
\(\beta_1\): 傾き(xが1増えた時yがどれだけ増えるか)
\(\beta_0\): 切片(xが0の時のyの値)
\(\beta_1=\frac{S_{xy}}{S_{xx}}\), \(\beta_0=\bar{y}-b\bar{x}\)
\(S_{xy}=\Sigma(x_i-\bar{x})(y_i-\bar{y})=\Sigma x_iy_i-\frac{(\Sigma x_i)(\Sigma y_i)}{n}\)
\(S_{xx}=\Sigma(x_i-\bar{x})^2=\Sigma x^2_i-\frac{(\Sigma x_i)^2}{n}\)
[1] 19.082
[1] 9.329768
x | y |
---|---|
2 | 3 |
2 | 4 |
4 | 6 |
5 | 5 |
3 | 4 |
問題のデータを、xとyに分けてRに入れる
回帰を行う
回帰直線によって、データのばらつきをどの程度表現できているかみる
\(S_{yy}=\Sigma y_i^2-\frac{(\Sigma{y_i})^2}{n}\)
\(S_{yy}\) / \(TSS\): yの全体のばらつき(実測値から平均までのばらつき)
\(SSR\): yの平均から回帰直線までのばらつき
\(SSE\): 回帰直線から実測値までのばらつき
\(TSS=SSR+SSE\)
MSR: yの平均から回帰直線までの自由度1に対する平均のばらつき
MSE: 回帰直線までから実測値までの自由度1に対する平均のばらつき
Source | df | SS | MS | F |
---|---|---|---|---|
Regression | 1 | \(SSR=\frac{(S_{xy})^2}{S_{xx}}\) | \(MSR=\frac{SSR}{1}\) | \(F=\frac{MSR}{MSE}\) |
Error | n-2 | \(SSE=S_{yy}-\frac{(S_{xy})^2}{S_{xx}}\) | \(MSE=\frac{SSE}{n-2}\) | |
Total | n-1 | \(SST=S_{yy}\) |
この表に従って最終的にF値を求め、この回帰直線が未知の値に対しても予測できるかを調べる→
\(H_0: 有効性=0\)(この回帰直線は役に立たない)
\(H_a: 有効性\neq0\)(この回帰直線は役に立たないことはない)
勉強時間とテストの得点を表すデータを使って、分散分析表を完成させなさい
Source | df | SS | MS | F |
---|---|---|---|---|
Regression | ||||
Error | ||||
Total |
\(S_{xx}=\) 6.8
\(S_{xy}=\) 4.6
# データの個数を記録
n <- length(score) # length(score)でも可
# S_xy
S_xy <- sum(time*score)-sum(time)*sum(score)/n
# S_xx
S_xx <- sum(time^2)-sum(time)^2/n
# S_yy
S_yy <- sum(score^2)-sum(score)^2/n
# SSR
SSR <- S_xy^2/S_xx
# SSE
SSE <- S_yy-S_xy^2/S_xx
# SST
SST <- S_yy
# MSR
MSR <- SSR/1
# MSE
MSE <- SSE/(n-2)
# F
F_value <- MSR/MSE
Source | df | SS | MS | F |
---|---|---|---|---|
Regression | \(1\) | \(SSR=\frac{(S_{xy})^2}{S_{xx}}=\) 4883.2007 | \(MSR=\frac{SSR}{1}=\) 4883.2007 | \(F=\frac{MSR}{MSE}=\) 24.3491 |
Error | \(n-2=\) 8 | \(SSE=S_{yy}-\frac{(S_{xy})^2}{S_{xx}}=\) 1604.3993 | \(MSE=\frac{SSE}{n-2}=\) 200.5499 | |
Total | \(n-1=\) 9 | \(SST=S_{yy}=\) 6487.6 |
回帰直線が、データに対してどれほど当てはまりがいいか
\(決定係数r^2=\frac{SSR}{SST}\)
この値は相関係数の二乗と同じ値になる
Call:
lm(formula = score ~ time)
Residuals:
Min 1Q Median 3Q Max
-14.401 -10.069 -6.077 13.434 19.599
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.082 9.282 2.056 0.07384 .
time 9.330 1.891 4.934 0.00114 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 14.16 on 8 degrees of freedom
Multiple R-squared: 0.7527, Adjusted R-squared: 0.7218
F-statistic: 24.35 on 1 and 8 DF, p-value: 0.001143
Multiple R-squared
が決定係数を示す
2つのデータの間に関係性があるかを検定する
もし傾き\(\beta_1\)が0だったらどうなるのか
傾きが0だとxがどんな値になろうともyの値が一定
→xとyの間に関係がない
\(H_0:\beta_1=0\)を棄却できれば、\(\beta_1\neq0\)ではない
→xとyの間に関係があるといえる
回帰中で使うt検定のdfは\(n-2\)
勉強時間とテストの点数の回帰
Call:
lm(formula = score ~ time)
Residuals:
Min 1Q Median 3Q Max
-14.401 -10.069 -6.077 13.434 19.599
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.082 9.282 2.056 0.07384 .
time 9.330 1.891 4.934 0.00114 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 14.16 on 8 degrees of freedom
Multiple R-squared: 0.7527, Adjusted R-squared: 0.7218
F-statistic: 24.35 on 1 and 8 DF, p-value: 0.001143
t value
が\(\beta_1=0\)とした時のt値を表す
棄却域に入らない
→傾きは0ではない/2つのデータの間には関係性がある
勉強時間とテストの得点を示すデータを使って、この2つの要素間に関係があるか99%信頼区間を用いてt検定しなさい。
作成した回帰式とデータの当てはまりを示す決定係数を算出しなさい。
帰無仮説\(H_0:\beta_1=0\)とした時のt値を算出する
Call:
lm(formula = score ~ time)
Residuals:
Min 1Q Median 3Q Max
-14.401 -10.069 -6.077 13.434 19.599
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.082 9.282 2.056 0.07384 .
time 9.330 1.891 4.934 0.00114 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 14.16 on 8 degrees of freedom
Multiple R-squared: 0.7527, Adjusted R-squared: 0.7218
F-statistic: 24.35 on 1 and 8 DF, p-value: 0.001143
このデータのサンプル数は\(n-2=10-2=8\)なので、自由度\(df=9\)のt分布で99%信頼区間となる棄却域を求める
time
のt value
は4.934で、棄却域は3.36からなので、このt値は棄却域に入る
よってtimeは99%信頼区間においてテストの得点に関係があると示された
# データの個数を記録
n <- length(time) # length(score)でも可
# S_xy
S_xy <- sum(time*score)-sum(time)*sum(score)/n
# S_xx
S_xx <- sum(time^2)-sum(time)^2/n
# SSR
SSR <- S_xy^2/S_xx
# SST
SST <- sum(score^2)-sum(score)^2/n
# r_2
r_2 <- SSR/SST
r_2
[1] 0.7526976
Call:
lm(formula = score ~ time)
Residuals:
Min 1Q Median 3Q Max
-14.401 -10.069 -6.077 13.434 19.599
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.082 9.282 2.056 0.07384 .
time 9.330 1.891 4.934 0.00114 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 14.16 on 8 degrees of freedom
Multiple R-squared: 0.7527, Adjusted R-squared: 0.7218
F-statistic: 24.35 on 1 and 8 DF, p-value: 0.001143
Multiple R-squared: 0.7525
複数の項目を使って、値を予測する
今までの勉強時間とテストの得点のデータに加え、授業の出席割合のデータを加えます
3軸のグラフで回帰を当てはめると面になる
回帰を当てはめ、その回帰がデータに対してどの程度当てはまっているのか、その予測がどれほど正確なのかを検証していく
回帰ではまず予測に使用している項目が予測したい項目に対して影響があるかを調べる
使用しているすべての項目を一括りにして、予測する項目に影響があるかをみる
→\(H_0:\beta_1=\beta_2=0\)
この仮説が棄却される(この項目の中の一つ、またはそれ以上の項目は予測する項目に影響を与えている)
→個々の変数に焦点を絞り検定をする
Source | df | SS | MS | F |
---|---|---|---|---|
Regression | 予測に使う変数の数: \(x\) | \(SSR=SST-SSE\) | \(MSR=\frac{SSR}{df}\) | \(F=\frac{MSR}{MSE}\) |
Error | Total df-x | \(SSE=SST-SSR\) | \(MSE=\frac{SSE}{Total df-x}\) | |
Total | n-1 | \(SST=SSR+SSE\) |
Regressionのdfは予測につかっている変数の数が入る
→Ch12では、テストの点数の予測に勉強時間のみをつかっていたため1
が入る
→今回は予測に勉強時間と出席率の2つを使っているため、2
が入る