回帰モデルの考え方と推定
(Press ?
for help, n
and p
for next and previous slide)
村田 昇
回帰式 : \(y\) を \(x_1,\dotsc,x_p\) で説明するための関係式
\begin{equation} y=f(x_1,\dotsc,x_p) \end{equation}
観測データ : n個の \((y,x_1,\dotsc,x_p)\) の組
\begin{equation} \{(y_i,x_{i1},\dotsc,x_{ip})\}_{i=1}^n \end{equation}
\(f\) として 1次関数 を考える
ある定数 \(\beta_0,\beta_1,\dots,\beta_p\) を用いた式 :
\begin{equation} f(x_1,\dots,x_p)=\beta_0+\beta_1x_1+\cdots+\beta_px_p \end{equation}
線形回帰式
\begin{equation} y=\beta_0+\beta_1x_1+\cdots+\beta_px_p \end{equation}
確率モデル : データのばらつきを表す項 \(\epsilon_i\) を追加
\begin{equation} y_i=\beta_0+\beta_1 x_{i1}+\cdots+\beta_px_{ip}+\epsilon_i\quad (i=1,\dots,n) \end{equation}
回帰係数 \(\boldsymbol{\beta}=(\beta_0,\beta_1,\dotsc,\beta_p)^{\mathsf{T}}\) を持つ回帰式の残差
\begin{equation} e_i(\boldsymbol{\beta})= y_i-(\beta_0+\beta_1 x_{i1}+\dotsb+\beta_px_{ip}) \quad (i=1,\dotsc,n) \end{equation}
残差平方和 (residual sum of squares)
\begin{equation} S(\boldsymbol{\beta}) = \sum_{i=1}^ne_i(\boldsymbol{\beta})^2 \end{equation}
最小二乗推定量 (least squares estimator)
残差平方和 \(S(\boldsymbol{\beta})\) を最小にする \(\boldsymbol{\beta}\)
\begin{equation} \boldsymbol{\hat{\beta}} = (\hat{\beta}_0,\hat{\beta}_1,\dotsc,\hat{\beta}_p)^{\mathsf{T}} = \arg\min_{\boldsymbol{\beta}}S(\boldsymbol{\beta}) \end{equation}
デザイン行列 (design matrix)
\begin{equation} X= \begin{pmatrix} 1 & x_{11} & x_{12} & \cdots & x_{1p} \\ 1 & x_{21} & x_{22} & \cdots & x_{2p} \\ \vdots & \vdots & \vdots & & \vdots \\ 1 & x_{n1} & x_{n2} & \cdots & x_{np} \end{pmatrix} \end{equation}
目的変数,誤差,回帰係数のベクトル
\begin{equation} \boldsymbol{y}= \begin{pmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{pmatrix},\quad \boldsymbol{\epsilon}= \begin{pmatrix} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{pmatrix},\quad \boldsymbol{\beta}= \begin{pmatrix} \beta_0 \\ \beta_1 \\ \vdots \\ \beta_p \end{pmatrix} \end{equation}
確率モデル
\begin{equation} \boldsymbol{y} =X\boldsymbol{\beta}+\boldsymbol{\epsilon} \end{equation}
残差平方和
\begin{equation} S(\boldsymbol{\beta}) =(\boldsymbol{y}-X\boldsymbol{\beta})^{\mathsf{T}} (\boldsymbol{y}-X\boldsymbol{\beta}) \end{equation}
解 \(\boldsymbol{\beta}\) では残差平方和の勾配は零ベクトル
\begin{equation} \nabla S(\boldsymbol{\beta})= \Bigl( \frac{\partial S}{\partial\beta_0}(\boldsymbol{\beta}), \frac{\partial S}{\partial\beta_1}(\boldsymbol{\beta}),\dotsc, \frac{\partial S}{\partial\beta_p}(\boldsymbol{\beta}) \Bigr)^\mathsf{T}=\boldsymbol{0} \end{equation}
成分 (\(j=0,1,\dotsc,p\)) ごとの条件式
\begin{equation} \frac{\partial S}{\partial\beta_j}(\boldsymbol{\beta}) = -2\sum_{i=1}^n\Bigl(y_i-\sum_{k=0}^p\beta_kx_{ik}\Bigr)x_{ij} =0 \end{equation}ただし \(x_{i0}=1\; (i=1,\dotsc,n)\)
正規方程式 (normal equation)
\begin{equation} X^{\mathsf{T}}X\boldsymbol{\beta} =X^{\mathsf{T}}\boldsymbol{y} \end{equation}
正規方程式の解
\begin{equation} \boldsymbol{\hat{\beta}} = (X^{\mathsf{T}}X)^{-1}X^{\mathsf{T}}\boldsymbol{y} \end{equation}
関数 stats::lm()
による推定
lm(formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset, ...) #' formula: 目的変数名 ~ 説明変数名(複数ある場合は + で並べる) #' data: 目的変数,説明変数を含むデータフレーム #' subset: 推定に用いるデータフレームの部分集合を指定(指定しなければ全て) #' na.action: 欠損の扱いを指定(既定値はoption("na.action")で設定された処理) #' model,x,y,qr: 返値にmodel.frame,model.matrix,目的変数,QR分解を含むか指定
配布データ wine.csv
の回帰分析
bw_data <- read_csv(file="data/wine.csv") # データの読み込み bw_fit <- lm(formula = LPRICE2 ~ . - VINT, # VINTを除く全て data = bw_data)
bw_fit # 推定結果の簡単な表示
Call: lm(formula = LPRICE2 ~ . - VINT, data = bw_data) Coefficients: (Intercept) WRAIN DEGREES HRAIN -12.145334 0.001167 0.616392 -0.003861 TIME_SV 0.023847
データセット Advertising.csv
は
広告費 (TV, radio, newspapers) と売上の関係を調べたものである.
このデータセットを用いて以下の回帰式を推定しなさい.
formula = sales ~ TV formula = sales ~ radio formula = sales ~ TV + radio
データに関する記載事項 (https://www.statlearning.com より)
Datasets in this presentation are taken from “An Introduction to Statistical Learning, with applications in R” (Springer, 2013) with permission from the authors: G. James, D. Witten, T. Hastie and R. Tibshirani.
データセット tokyo_weather.csv
は
気象庁より取得した東京の気候データを回帰分析用に整理したものである.
このデータセットのうち,9月の気候データを用いて,以下の回帰式を推定しなさい.
formula = temp ~ solar + press
最小二乗推定量がただ一つだけ存在する条件
これらは同値条件
あてはめ値 / 予測値 (fitted values / predicted values)
\begin{equation} \boldsymbol{\hat{y}} = X\boldsymbol{\hat{\beta}} = \hat{\beta}_{0} X_\text{第0列} + \dots + \hat{\beta}_{p} X_\text{第p列} \end{equation}
Figure 1: \(n=3\) , \(p+1=2\) の場合の最小二乗法による推定
残差 (residuals) \(\boldsymbol{\hat{\epsilon}}=\boldsymbol{y}-\boldsymbol{\hat{y}}\) はあてはめ値 \(\boldsymbol{\hat{y}}\) に直交
\begin{equation} \boldsymbol{\hat{\epsilon}}\cdot\boldsymbol{\hat{y}}=0 \end{equation}
説明変数および目的変数の標本平均
\begin{align} \boldsymbol{\bar{x}} &=\frac{1}{n}\sum_{i=1}^n\boldsymbol{x}_i, &\bar{y} % \overline{\boldsymbol{x}^2}&=\frac{1}{n}\sum_{i=1}^n\boldsymbol{x}_i\boldsymbol{x}_i^{\mathsf{T}},& &=\frac{1}{n}\sum_{i=1}^ny_i,& % \overline{\boldsymbol{x}y}&=\frac{1}{n}\sum_{i=1}^n\boldsymbol{x}_iy_i \end{align}
\(\boldsymbol{\hat{\beta}}\) が最小二乗推定量のとき以下が成立
\begin{equation} \bar{y} = (1,\boldsymbol{\bar{x}}^{\mathsf{T}})\boldsymbol{\hat{\beta}} \end{equation}
関数 lm()
の出力には様々な情報が含まれる
#' lmの出力を引数とする base R の関数の例 base::summary(lmの出力) # 推定結果のまとめ stats::coef(lmの出力) # 推定された回帰係数 stats::fitted(lmの出力) # あてはめ値 stats::resid(lmの出力) # 残差 stats::model.frame(lmの出力) # modelに必要な変数の抽出 (データフレーム) stats::model.matrix(lmの出力) # デザイン行列
base::summary()
の tidyverse 版
関数 stats::lm()
の結果を tibble 形式で表示
#' 推定結果の tibble 形式での表示 broom::tidy(lmの出力) # 推定結果のまとめ.coef(summary(lmの出力)) と同様 broom::glance(lmの出力) # 評価指標(統計量)のまとめ.決定係数やF値などを整理 broom::augment(lmの出力) # 入出力データのまとめ.あてはめ値・残差などを整理
必要であれば明示的に変換できる
as.vector(データフレーム[列名]) # base::as.vector() as_vector(データフレーム[列名]) # purrr::as_vector() as.matrix(データフレーム) # base::as.matrix() #' データフレームを行列に変換する場合は全て同じデータ型でなくてはならない
行列 \(A,B\) の積 \(AB\) および ベクトル \(a,b\) の内積 \(a\cdot b\)
A %*% B # 行列の大きさは適切である必要がある a %*% b # ベクトルは同じ長さである必要がある
正方行列 \(A\) の逆行列 \(A^{-1}\)
solve(A) # 他にもいくつか関数はある
\(X^{\mathsf{T}}Y\) および \(X^{\mathsf{T}}X\) の計算
crossprod(X, Y) # cross product の略 #' X: 行列 (またはベクトル) #' Y: 行列 (またはベクトル) crossprod(X) # 同じものを掛ける場合は引数は1つで良い
推定された係数が正規方程式の解
\begin{equation} \boldsymbol{\hat{\beta}} = (X^{\mathsf{T}}X)^{-1}X^{\mathsf{T}}\boldsymbol{y} \end{equation}
となること
観測値と推定値 \(\boldsymbol{\hat{\beta}}\) による予測値の差
\begin{equation} \hat{\epsilon}_i= y_i-(\hat{\beta}_0+\hat{\beta}_1 x_{i1}+\dotsb+\hat{\beta}_px_{ip}) \quad (i=1,\dotsc,n) \end{equation}
残差ベクトル
\begin{equation} \boldsymbol{\hat{\epsilon}} =\boldsymbol{y}-\boldsymbol{\hat{y}} =(\hat{\epsilon}_1,\hat{\epsilon}_2,\dotsc,\hat{\epsilon}_n)^{\mathsf{T}} \end{equation}
3つのばらつき(平方和)の関係
\begin{equation} (\boldsymbol{y}-\bar{\boldsymbol{y}})^{\mathsf{T}} (\boldsymbol{y}-\bar{\boldsymbol{y}}) = (\boldsymbol{y}-\boldsymbol{\hat{y}})^{\mathsf{T}} (\boldsymbol{y}-\boldsymbol{\hat{y}})+ (\boldsymbol{\hat{y}}-\bar{\boldsymbol{y}})^{\mathsf{T}} (\boldsymbol{\hat{y}}-\bar{\boldsymbol{y}}) \end{equation}\begin{equation} S_y=S+S_r \end{equation}
以下の分解が成り立つこと
\begin{equation} (\boldsymbol{y}-\bar{\boldsymbol{y}})^{\mathsf{T}} (\boldsymbol{y}-\bar{\boldsymbol{y}}) = (\boldsymbol{y}-\boldsymbol{\hat{y}})^{\mathsf{T}} (\boldsymbol{y}-\boldsymbol{\hat{y}})+ (\boldsymbol{\hat{y}}-\bar{\boldsymbol{y}})^{\mathsf{T}} (\boldsymbol{\hat{y}}-\bar{\boldsymbol{y}}) \end{equation}\begin{equation} S_y=S+S_r \end{equation}
ばらつきの分解
\begin{equation} S_y\;\text{(目的変数)} =S\;\text{(残差)} +S_r\;\text{(あてはめ値)} \end{equation}
回帰式で説明できるばらつきの比率
\begin{equation} \text{(回帰式の寄与率)} = \frac{S_{r}}{S_{y}} = 1-\frac{S}{S_{y}} \end{equation}
決定係数 (R-squared)
\begin{equation} R^2 = 1-\frac{\sum_{i=1}^n\hat{\epsilon}_i^2}{\sum_{i=1}^n(y_i-\bar{y})^2} \end{equation}
自由度調整済み決定係数 (adjusted R-squared)
\begin{equation} \bar{R}^2 = 1-\frac{\frac{1}{n{-}p{-}1}\sum_{i=1}^n\hat{\epsilon}_i^2} {\frac{1}{n{-}1}\sum_{i=1}^n(y_i-\bar{y})^2} \end{equation}
広告費と売上データ
sales ~ TV sales ~ radio sales ~ TV + radio
東京の9月の気候データ
temp ~ solar temp ~ solar + press temp ~ solar + press + cloud