単回帰モデルとは、一次関数の単純なモデルである

要約

 単回帰モデルとは、説明変数Xによって目的変数Yが大まかに決まるモデルの一つです。Y=aX+bのような一次関数で期待値が表せるので、最も単純なモデルです。例えば、下図があります。

前提

 問いを「単回帰モデルとは何か?」と設定します。

 この記事では以下の定義、仮定、事実を用います。

(1)定義

単回帰モデル

単回帰モデルは、母集団にて

$$Y=\beta_0+\beta_1X+U$$

$$Y:目的変数、X:説明変数$$

$$\beta:母回帰係数、U:誤差項$$

が成立するモデルです。

 次の単回帰モデルにしたがっている標本(データ)を取得できた場合、下図のような散布図になります。

$$Y=1+2X+U$$

図2

目的変数Y、説明変数X

 目的変数とは、結果となる変数です。Yで表されます。被説明変数、従属変数とも言われます。

 説明変数は、原因となる変数です。Xで表されます。説明変数、独立変数とも言われます。

誤差項U

誤差項とは、モデルでは説明しきれない目的変数です。モデルをF(X)とすると、誤差項は次のように表せます。

$$Y=F(X)+U$$

回帰係数

 回帰係数とは、回帰モデルにおける説明変数Xの係数です。なお、定数項β0は「1」の回帰係数と解釈できます。

$$Y=\beta_0 1 + \beta_1 X +U$$

 なお、母回帰係数の母は、母集団の母です。

(2)仮定する条件

必要な仮定

 なお、観測されたデータから単回帰モデルのパラメーターを求めようとする場合(=単回帰分析)、次の仮定が必要になります。

$$1.データ(X,Y)は独立で同一の分布に従い$$

$$単回帰モデルに従う$$

$$2.標本が無作為抽出$$

$$3.説明変数Xの分散が0でない$$

$$4.外生性:E(U|X)=0$$

 仮定1〜4が成り立てば、最小二乗法を用いた単回帰分析から得られる標本回帰係数は、不偏性、一致性を持ちます。

 仮定1〜4に加えて、サンプル・サイズが大きい場合、標本回帰係数は正規分布に従うので、仮説検定が可能です。

必要でない仮定

 仮定1〜4に加えて、次の5〜7の仮定が成り立てばより望ましいですが、必須ではありません。

$$5.誤差項の系列相関はなし$$

$$6.均一分散:Var(U_i)=\sigma^2$$

$$7.誤差項は正規分布に従う$$

(3)仮定しない条件

 この記事では、上の5〜7を仮定しません。

(4)事実

回帰モデルの目的

 回帰モデルを用いる動機には「Yを予測したい!」「XがYに与える効果を知りたい!」の二つがあります。

方法

(1)問題の構造

 「単回帰モデルとは何か?」という問いは

・定義

・性質

・使用法(予測、効果)

に分けられます。

(2)論点と判断基準

 定義についてはすでに述べました。

 そこで、性質について

・β1とは何か

 使用法について

・説明変数が決定したときに、Yはどう予測できるか(期待値)

・説明変数Xが1変化したときに、Yがどれくらい変化するか(限界効果)

という論点を設定します。

 説明したいものが、説明変数、回帰係数、期待値だけで表せれればよいでしょう。

結果

(1)βとは何か

 仮定1〜4が成り立つのであれば、β1は次で表せます。

$$母回帰係数\beta_1=\frac{Cov(X,Y)}{Var(X)}$$

$$Cov(X,Y):XとYの母共分散$$

$$Var(X):Xの母分散$$

 理由は少々長くマニアックですので、付録に載せました。

(2)Yの予測

 説明変数Xが決まったときの目的変数Yの期待値は

$$E(Y|X)=\beta_0+\beta_1X$$

です。なぜなら

$$E(Y|X)=E(\beta_0+\beta_1X+U|X)$$

$$=\beta_0+\beta_1X+E(U|X)$$

$$=\beta_0+\beta_1X$$

となるからです。

(3)Xの限界効果

 Xが微小1単位大きいと、Yが平均的に大きい量を、限界効果といいます。

$$限界効果=\frac{d E(Y|X)}{d X}$$

 説明変数Xが目的変数Xに与える限界効果は、β1です。それは下の式からわかります。

$$E(Y|X)=\beta_0+\beta_1X$$

 例えば、以下の単回帰モデルのとき、Xが1単位大きいとYは平均的に2大きいです。この2が限界効果です。

$$Y=1+2X+U$$

考察

(1)結論

 単回帰モデルには、以下の定義、性質があります。

$$Y=\beta_0+\beta_1X+U$$

$$母回帰係数\beta_1=\frac{Cov(X,Y)}{Var(X)}$$

$$E(Y|X)=\beta_0+\beta_1X$$

$$限界効果=\frac{d E(Y|X)}{d X}=\beta_1$$

(2)妥当性評価

 次の4つの条件が仮定されていました。

$$1.データ(X,Y)は独立で同一の分布に従い$$

$$単回帰モデルに従う$$

$$2.標本が無作為抽出$$

$$3.説明変数Xの分散が0でない$$

$$4.外生性:E(U|X)=0$$

 仮定1と仮定4は厳しい仮定でしょう。

(3)意義

 数理モデルの中でも、最も単純なモデルが理解できます。

付録:回帰係数βとは

 回帰係数β1は、XとYの共分散Cov(X,Y)、Xの分散Var(X)で表せます。

$$\beta_1=\frac{Cov(X,Y)}{Var(X)}$$

前提

前提1:単回帰モデルが成り立つ

 仮定1より、単回帰モデルが成り立ちます。

$$Y=\beta_0+\beta_1X +U$$

$$U =Y-\beta_0 – \beta_1X $$

前提2:誤差項の条件付き期待値がゼロ

 仮定4より、誤差項の条件付き期待値がゼロ

$$E(U|X)=0$$

前提3:期待値について

 期待値について次が成り立ちます。

$$E(U|X)=0ならば、E(U)=0$$

$$E(U|X)=0ならば、E(XU)=0$$

前提4:母分散、母共分散について

 確率変数Xの母分散Varは、Xの期待値E(X)を用いて、次のように表せることが知られています。

$$Var(X)=E[X^2]-(E[X])^2$$

 確率変数X、Yの母共分散Cov(X,Y)は、次のように表せることが知られています。

$$Cov(X,Y)=E[XY]-E[X]E[Y]$$

結果

結果1:出発点

 E(U)=0、E(XU)=0、U=Y-β0-β1Xより、次が成り立ちます。これを基礎に議論します。

$$E[Y-\beta_0-\beta_1X]=0・・・①$$

$$E[X(Y-\beta_0-\beta_1X)]=0・・・②$$

 ちなみに、これらはモーメント条件と言います。

結果2:β0

 ①より、β0について次が成り立ちます。

$$E[Y]-\beta_0-\beta_1E[X]=0$$

$$\beta_0=E[Y]-\beta_1E[X]・・・③$$

結果3:β1

 ②より

$$E[X(Y-\beta_0-\beta_1X)]=0$$

$$E[XY-\beta_0X-\beta_1X^2]=0$$

$$E[XY]-\beta_0E[X]-\beta_1E[X^2]=0$$

 ③で求めたβ0を用いて

$$E[XY]-(E[Y]-\beta_1E[X])E[X]-\beta_1E[X^2]=0$$

$$E[XY]-E[X]E[Y]+\beta_1(E[X])^2-\beta_1E[X^2]=0$$

$$E[XY]-E[X]E[Y]=\beta_1E[X^2]-\beta_1(E[X])^2$$

$$\beta_1=\frac{E[XY]-E[X]E[Y]}{E[X^2]-(E[X])^2}$$

 ここで共分散Cov、分散Varの公式を用いて

$$\beta_1=\frac{Cov(X,Y)}{Var(X)}$$

と表せます。なお、仮定3より

$$Var(X)≠0$$

であり、分母にVar(X)を使っても問題ありません。

付録:Rコード

分析コード

 Rにて単回帰分析は以下のコードでできます。

#lmは最小二乗法による線形回帰。yが目的変数、xが説明変数、data1が使用するデータの名前
lm(y ~ x, data=data1)

作図

 データは以下のコードで疑似的に生成することができます。その結果の図は、図2として掲載済みです。

#サンプル・サイズ
N <- 500
 
#rnormで「n=サンプル・サイズ、mean=母平均、sd=標準偏差」の正規分布に従う乱数を発生させます
#xにサンプル・サイズN、母平均3、標準偏差1の乱数を格納
x <- rnorm(n=N, mean =4, sd=1)
 
#uにサンプル・サイズN、母平均0、標準偏差1の乱数を格納
u <- rnorm(n=N, mean =0, sd=0.4)
 
#Y=2+X+uのモデルでyを生成します
y <- 1 + 0.5*x+ u
 
#パッケージを呼び出します
library(ggplot2)
 
# データフレームを作成し、data1と名づけます
data1<-  data.frame(x,y)
 
#ggplotで散布図を書きます
ggplot(data1, aes(x = x, y = y))+ #data1のxを横軸に、yを縦軸に
 xlim(0, 10)+ #横軸の範囲を0〜10
 ylim(0, 5)+ #縦軸の範囲を0〜10
 geom_point()+  #点をプロット
 geom_smooth(method = "lm")  #回帰直線を引きます

コメント欄 お気軽にコメントをお寄せください!

タイトルとURLをコピーしました