OLS④
OLSシリーズ第4弾。
OLSは本当に重要なのでしつこくやる。
今回は、scipyのstats.linregressを使う。
いつも通り下記の回帰式を推定する。
コードは以下の通り。
# -*- coding: utf-8 -*- import numpy as np from scipy import stats #サンプリング数 N=1000 #データ生成 np.random.seed(0) x=np.random.normal(1,1,N) eps=np.random.normal(0,1,N) y=2+1.5*x+eps #OLS(stats.linregress) beta, intercept, r_value, p_value, std_err = stats.linregress(x,y) beta intercept r_value p_value std_err
結果はいつも通り。係数、定数項、相関係数、係数のp値、係数の標準誤差を返してくれる模様。どうでもいいけど、この変数を並べるMatlab風の書き方はどうも慣れない…
In [132]: beta, intercept, r_value, p_value, std_err = stats.linregress(x,y) In [133]: beta Out[133]: 1.4690941983978636 In [134]: intercept Out[134]: 2.0431240470954477 In [135]: r_value Out[135]: 0.8317899971487972 In [136]: p_value Out[136]: 2.275528428788794e-257 In [137]: std_err Out[137]: 0.031033762367292484
ファイナンスでは、例えばCAPMなんかを推定したときには、定数項であるαの標準誤差とt値を確認したくなるので、その意味ではこれもなかなか使いづらそう。
これでPythonのOLS推定関数も出尽くした感があるので(少なくとも頻度論に基づくいわゆる最小二乗法的なものに限っては)、次はMCMCでもやるか