使ったソフトはRとpythonです。
参考にしたサイトは
Rで線形単回帰分析 - matsuou1の日記
次のデータは7人の女性の年齢と血圧を示すものである。
被験者 | 年齢x | 血圧y |
---|---|---|
1 | 37 | 112 |
2 | 45 | 132 |
3 | 48 | 120 |
4 | 55 | 154 |
5 | 58 | 136 |
6 | 67 | 162 |
7 | 75 | 164 |
(1)年齢xと血圧yの散布図を描け
(2)xとyの相関係数を求めよ
r = \frac {\frac {1} {n}\sum_{i=1}^n (x_1- \overline{x})(y_1 - \overline{y})} {\sqrt{ \frac {1} {n} \sum_{i=1}^n (x_i - \overline{x})^2} \sqrt{ \frac {1} {n} \sum_{i=1}^n (y_i - \overline{y})^2}}
なので
\overline{x} = \frac {37 + 45 + 48 + 55 + 58 + 67 + 75} {7} = 55
\overline{y} = \frac {112 + 132 + 120 +154 + 136 +162 + 164} {7} = 140
よって
r = \frac {1456} {\sqrt{1026 \times 2520}} = 0.9054978515
Rを使ってスピアマンの相関係数を求める。
> cor(年齢x, 血圧y, method="spearman")
[1] 0.9054979
(3)単回帰モデルを仮定し、回帰直線を求めよ。
5ページの数式
\hat{\beta_1} = \frac {\sum_{i=1}^n x_i y_i - n \overline{x}\overline{y}} {\sum_{i=1}^n x_i^2 - n\overline{x}^2}
\hat{\beta_0} = \overline{y} - \hat{\beta_1}\overline{x}
を使い、回帰直線を求める。
\hat{\beta_1} = \frac {55356 - 53900} {22201 - 21175} = \frac {1456} {1026} = 1.41910
\hat{\beta_0} = 140 - 1.4191 \times 55 = 61.9495
よって求める回帰直線は
y = 61.9495 + 1.4191x
(4)各点における予想値と残差を求めよ
予測値と残差の求め方は、例えば37歳の場合。
\hat{y_1} = 61.9495 + 1.4191 \times 37 = 114.4562
e_1 = 112 - 114.4562 = -2.45619
同様にして求めると
被験者 | 年齢x | 血圧y | 予測値 | 誤差 |
---|---|---|---|---|
1 | 37 | 112 | 114.4562 | -2.45619 |
2 | 45 | 132 | 125.809 | 6.19100 |
3 | 48 | 120 | 130.0663 | -10.0663 |
4 | 55 | 154 | 140.0 | 14.0 |
5 | 58 | 136 | 144.2573 | -8.25729 |
6 | 67 | 162 | 157.0292 | 4.97079 |
7 | 75 | 164 | 168.382 | -4.38200 |
私の場合はpythonのラムダ式を使って計算してみた。
>>> f = lambda x: 61.9495 + 1.4191*x
>>> f(37)
114.4562
>>> f(45)
125.809
(5)回帰直線を用いて、年齢が40歳、50歳、60歳の女性の血圧を予測せよ
先ほど使ったpythonのラムダ式を使って求める。
>>> f(40)
118.71350000000001
>>> f(50)
132.90449999999998
>>> f(60)
147.09550000000002
余談
Rを使って単回帰分析をしてみた。
予測値についてもRで計算可能だが、やり方を忘れてしまった。汗
> summary(lm(血圧y ~ 年齢x))
Call:
lm(formula = 血圧y ~ 年齢x)
Residuals:
1 2 3 4 5 6 7
-2.456 6.191 -10.066 14.000 -8.257 4.971 -4.382
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 61.9493 16.7496 3.699 0.01402 *
年齢x 1.4191 0.2974 4.771 0.00501 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 9.527 on 5 degrees of freedom
Multiple R-squared: 0.8199, Adjusted R-squared: 0.7839
F-statistic: 22.77 on 1 and 5 DF, p-value: 0.005009
- 残差についてpythonで計算した結果と一致
- 回帰式についてもCoefficientsの左側部分(Estimate下)を見ると一致
- 回帰式の係数について
y = \hat{\beta_0} + \hat{\beta_1}x
とした時
\hat{\beta_1} = 0
となった場合
y = \hat{\beta_0}
となり、xはyに影響を与えないことになってしまう。
それでは回帰分析が成立しないので
\hat{\beta_1} = 0
を帰無仮説とし、このことを棄却できるかどうか考える。
この結果を示した部分がt valueとpr(>|t|)の部分である。両方とも見るとそれぞれ有意水準5%でt検定した場合、帰無仮説を棄却することができた。
- 自由度修正済み決定係数Adjusted R-squaredを見ると 0.7839 なので大体1に近いので説明できていると思う。