統計的学習入門を読んで自分なりにまとめてみた〜パート2〜線形回帰

今回は線形回帰分析について、まとめてみる。

 

目次

1、線形回帰って何?〜概要

2、何してるの?〜アルゴリズム

3、例えば?どう使う?〜分析、検証

4、終わりに

 

1、線形回帰って何?〜概要

 

線形回帰(単回帰分析)はデータに線を引いて、傾向みたり、線の上にあるか下にあるかみるもの。教師あり学習

2つのものを比べて、一個大きくなったらもう一個は大きくなるのか小さくなるのか、その度合いで、2つのものがどれだけ関係があるのか、どんな関係性なのかを調べる方法。そして、その線をたどったら、1つわかるともう1つもだいたいわかるから未来予知に使える。

 

 

2、何してるの?〜アルゴリズム

まずは、

①線形単回帰のモデル式

{\widehat{y}=\widehat{\beta }_{0}+\widehat{\beta }_{1} x }

{\widehat{y}=}予測値(ワイハットという、初めて知った時こんな見た目通りの名前に笑った(笑))

{\widehat{\beta }_{0}= }推定の切片

{\widehat{\beta }_{1}= }推定の傾き

x=入力

 

次に、

②求め方

{\widehat{\beta }_{0} }{\widehat{\beta }_{1} }を求めるために最小2乗法(LSM: Least Squares Method)を使う。

 

i番目のXのデータについて、Yの予測値を

{ \hat{y}_{i}=\hat{\beta}_{0}+\hat{\beta}_{1} x_{i} } とすると、

{e_{i}=y-\widehat{y} } i番目の残差はこう表せて、i番目の応答変数の実測値と線形モデルが予測した値との差、残差平方和(RSS:residual sum of squares)を

{ \mathrm{RSS}=e_{1}^{2}+e_{2}^{2}+\cdots+e_{n}^{2} }

こう定義する

{ \mathrm{RSS}=\left(y_{1}-\hat{\beta}_{0}-\hat{\beta}_{1} x_{1}\right)^{2}+\left(y_{2}-\hat{\beta}_{0}-\hat{\beta}_{1} x_{2}\right)^{2}+\cdots+\left(y_{n}-\hat{\beta}_{0}-\hat{\beta}_{1} x_{n}\right)^{2}  }

最小二乗法はRSSを最小化するような推定の切片傾きを選ぶ、つまり偏微分*1することで、求められる。

{ \hat{\beta}_{1}=\frac{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}} }

{ \hat{\beta}_{0}=\bar{y}-\hat{\beta}_{1} \bar{x} }

 

 

③評価

今までは、予測をして、式を作っていたが、今度は、真の式との誤差を比べて、どのくらいの精度でこの予測が正しいかを評価する。まず、回帰係数の推定値の精度評価。

{ y=\beta _{0}+\beta_{1} X+\varepsilon }

 

{ \beta _{0}=}切片

{ \beta_{1} =}傾き

{ \varepsilon =}残差

 

予測の切片と傾きと実際の指揮との誤差を調べていく、

 

f:id:song15song1:20211007081652p:plain

 

(SE:標準誤差:Standard error)

{ \sigma } :Yの観測値の標準偏差

{ \sigma^{2}=\operatorname{Var}(\epsilon) } :残差{ \varepsilon }の分散である*2

{ \sigma } :の推定値は残差標準誤差(RSE:residual standard error)

{ \mathrm{RSE}=\sqrt{\mathrm{RSS} /(n-2)} }

 

標準誤差は信用区間を求めるのにつかったり、仮説検定、例えば、ここでは帰無仮説と対立仮説でXとYの間に関係があるかないかを検定したりするのに使う。

 

また、予測の傾きが0から標準語採掘分は慣れているかをt統計量で計算できる。

{ t=\frac{\hat{\beta}_{1}-0}{\operatorname{SE}\left(\hat{\beta}_{1}\right)} }

 

p値も出てくる。検定の仕方で求め方も少し変わるらしい

統計量(確率変数)がデータから計算した統計量の値より極端な値を取る確率をp値と言う。

p値が小さい→帰無仮説が正しくなさそう。

*3

 

 

{  }

次に、モデルの精度評価、4つ指標がある。RSE、{ R^{2} }相関係数F値だ。

 

 

RSE(残差標準誤差:residual standard error)、モデルがデータに当てはまっていない度合いを図る、小さいと、モデルに当てはまっている

f:id:song15song1:20211015061944p:plain


 

{ R^{2} } (決定係数:R2 Statistic、当てはめ度合いを図るもう一つの方法、割合(分散のうち説明されてる部分の割合)

f:id:song15song1:20211015062233p:plain

相関係数correlation)もXとYの間の線形関係の度合いを図る

f:id:song15song1:20211015062302p:plain

F統計量

F値は説明分散/非説明分散で計算され、大きければ大きい程、その回帰モデルは信頼できることを示す。

*4 

 

3、例えば?どう使う?〜分析、検証

アイスクリーム屋さんのブログ(ブログ下の参照欄)からデータを拝借させていただいて、自分でもRで分析してみた

 

店舗別の平均客数データ(12店舗)【1章4節のデータ】

店舗
駅からの距離(m)
平均客数
1
10
795
2
1200
213
3
500
465
4
50
694
5
740
403
6
30
782
7
10
769
8
360
561
9
150
692
10
930
361
11
620
385
12
65
723

 

まず、xを駅からの距離(m)として、yを平均客数とする。

xとyの値を代入して

 

プログラム
> y <- c(795,213,465,694,403,782,769,561,692,361,385,723)
> x <- c(10,1200,500,50,740,30,10,360,150,930,620,65)
> plot(x,y)

f:id:song15song1:20210923153557p:plain

 

これにlm関数を適用させてその結果をansという変数に代入して、

プログラム
> ans <- lm(y~x)

> ans

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
   755.3496      -0.4761  

すると、こんな感じになる。これから、yの予測式は、

{ y=\755.349+\-0.4761 X }

 

より詳しくはsummary()でできる

プログラム

> s.ans <- summary(ans)
> s.ans

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-75.143 -26.590   4.033  31.998  48.461 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 755.34960   17.06123   44.27 8.31e-13 ***
x            -0.47614    0.03095  -15.38 2.74e-08 ***
---
Signif. codes:  
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 41.9 on 10 degrees of freedom
Multiple R-squared:  0.9595,    

Adjusted R-squared:  0.9554 
F-statistic: 236.7 on 1 and 10 DF,  

p-value: 2.74e-08

Estimate:今回の回帰分析における回帰係数の推定値

(Intercept):切片(定数項)

Std. Error:各回帰係数の推定量の標準誤差

t value:T値

Pr(>|t|) :P値

Adjusted R-squared:自由度修正済み決定係数

Multiple R-squared:決定係数{ R^{2} }

Residual standard error:誤差こうの標準偏差の推定値

F-statistic:統計量 on 自由度1 and 自由度2 で表記される。DFはdegrees of freedom(自由度)の略*5


 

最後に回帰直線を赤くみやすくつけてあげて、プロット

プログラム
> abline(ans, lwd = 3, col = "red")

f:id:song15song1:20210923154121p:plain

分析の後には、検証のターンが最後にある。

試しに出てきた直線に新しくデータを持ってきて、それがどれだけズレがあるかで、この直線の分析器はどのくらい正しいかを判定する。

 

 

 

 

4、終わりに

 

かなりの部分をいろんなサイトから拝借したものを使ったので、著作権とかがわからないので、少し心配ですが、なんとか形にすることができた。この調子で全部読んだ本をまとめて行く。

 

こちらの本やサイトなどを参考にさせていただきました!

式など*6

 

webdemo.myscript.com

cartman0.hatenablog.com

kogolab.chillout.jp

*1:

*1

www.youtube.com

*2:厳密には、以下の指揮がなりつつためにはそれぞれの観測値の誤差εiの間に相関がなく、共通の分散として、シグマ二乗を持つことが必要

*3:manabitimes.jp

*4:www.cbs-j.com

*5:統計検定のための、Rの出力結果からわかること(回帰分析編) - Qiita

*6:www.amazon.co.jp