単回帰モデル¶
ある変数を別の変数から予測する問題を考える。
は予測変数(predictor variable)、は基準変数(criterion variable)と呼ばれる確率変数である。
は予測誤差を表現する確率変数であり誤差変数といい、以下の性質を仮定する。
(誤差は正負バランスよく出現する)
(予測変数の値が大きくても小さくても誤差は大きくなったり小さくなったりする傾向はない)
パラメータの推定には最尤法や最小二乗法やモーメント法などが使われる
モーメント法による単回帰モデルの推定¶
単回帰モデルの両辺の期待値をとると
となる。
次に、単回帰モデルの両辺にをかけてから期待値をとると
を代入すると
分散は
であり、
\renewcommand{\b} when command \b does not yet exist; use \newcommand
\renewcommand{\b}[1]{ \boldsymbol{#1} }
\begin{align}
\b{\Sigma}
&= E[(\b{x} - \b{\mu})(\b{x} - \b{\mu})^\top]\\
&= E[\b{x x}^\top] - E[\b{x}]\b{\mu}^\top - \b{\mu} E[\b{x}^\top] + \b{\mu\mu}^\top\\
&= E[\b{x x}^\top] - 2\b{\mu\mu}^\top + \b{\mu\mu}^\top\\
&= E[\b{x x}^\top] - \b{\mu\mu}^\top\\
\end{align}であり、2変数だと
Undefined control sequence: \b at position 15: \begin{align}
\̲b̲{\Sigma}
&=
E\l…
\begin{align}
\b{\Sigma}
&=
E\left[ \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}
\begin{pmatrix} x_1 & x_2 \end{pmatrix} \right]
-
\begin{pmatrix} E[x_1] \\ E[x_2] \end{pmatrix}
\begin{pmatrix} E[x_1] & E[x_2] \end{pmatrix}\\
&=
\begin{pmatrix}
E[x_1^2] & E[x_1 x_2]\\
E[x_2 x_1] & E[x_2^2]
\end{pmatrix}
-
\begin{pmatrix}
E[x_1]^2 & E[x_1]E[x_2]\\
E[x_2]E[x_1] & E[x_2]^2
\end{pmatrix}
\end{align}であることを利用すると
推定では標本の統計量を用いて
とする。
import semopy
import numpy as np
import pandas as pd
# 適当なデータを生成
n = 1000
np.random.seed(0)
x = np.random.uniform(size=n)
e = np.random.normal(size=n)
y = 10 + 3 * x + e
data = pd.DataFrame(dict(y=y, x=x))
# モデルを構築
desc = "y ~ x"
model = semopy.Model(desc)
model.fit(data)
model.inspect()Loading...
# パス図
semopy.semplot(model, filename="/tmp/path_diagram.png")Loading...