In [28]:
import numpy as np
from numpy import linalg as la
import pandas as pd
ギブスサンプラーによる回帰モデルの推定
①ベイズ統計の枠組みに基づく回帰モデルの表現
K個の独立変数$$x_k(k=1, ..., K)$$によって従属変数yを説明する回帰分析のモデル式は、以下のように表すことができる。$$y_i=\beta_1x_{1i}+ ... +\beta_Kx_{Ki}+\epsilon_i$$
標準的なベイズ統計による回帰分析では、誤差項εiの分布がN(0, σ^2)に従うものと仮定する。この時、上の式のy_iは、各β_kx_kiにランダムな正規誤差ε_iが加わって生成されるものと見なすことができる。
私は
In [5]:
x_1 = np.ones(10)
x_2 = np.zeros(10)
for i in range(10):
x_2[i] = np.random.normal(0, 2)
y = 3*x_1+(-2)*x_2
In [15]:
pd.DataFrame({"x_1":x_1, "x_2": x_2, "y":y})
Out[15]:
In [ ]:
beta_given_var =
In [ ]:
class GibbsSampler:
In [25]:
X = np.matrix([x_1, x_2]).T
In [26]:
X.T*X
Out[26]:
In [32]:
X_t_and_X = X.T*X
In [29]:
beta = np.matrix([[1000, 0], [0, 1000]])
In [31]:
beta_inv = la.inv(beta)
In [35]:
beta_inv
Out[35]:
In [37]:
beta_2_inv = beta_inv + X_t_and_X
In [38]:
beta_2 = la.inv(beta_2_inv)
In [39]:
beta_2
Out[39]:
In [ ]: