LoginSignup
2
1

More than 5 years have passed since last update.

単回帰分析偏

Last updated at Posted at 2016-11-30

使ったソフトはRpythonです。
参考にしたサイトは
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の散布図を描け

plot.png

(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 valuepr(>|t|)の部分である。両方とも見るとそれぞれ有意水準5%でt検定した場合、帰無仮説を棄却することができた。

  • 自由度修正済み決定係数Adjusted R-squaredを見ると 0.7839 なので大体1に近いので説明できていると思う。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1