この記事では、Python言語とNumPyを用いて、重回帰分析(多変量解析)をする方法をソースコード付きで解説します。
重回帰分析(多変量解析)
重回帰分析とは、複数個の説明変数()で1つの目的変数()を推定することです。
式で表すと以下のようになります。
(1)
は標準回帰係数
処理手順
プログラムの処理手順です。
①定量データを用意する
②目的変数(obj)と説明変数(exp)を設定する
③linalg.lstsq関数を用いて目的変数と説明変数から偏回帰係数を計算する
④計算結果を表示する
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import numpy as np # 偏回帰係数の計算 def stat(o, e): e = np.vstack([np.ones(e.shape[1]), e]) # 定数項, 説明変数 return np.linalg.lstsq(e.T, o)[0] # 偏回帰係数 def main(): # 定量データ y = (45, 38, 41, 34, 59, 47, 35, 43, 54, 52) x1 = (17.5, 17.0, 18.5, 16.0, 19.0, 19.5, 16.0, 18.0, 19.0, 19.5) x2 = (30, 25, 20, 30, 45, 35, 25, 35, 35, 40) obj = np.array(y) # 目的変数 exp = np.array([x1, x2]) # 説明変数 # 偏回帰係数の計算 b, a1, a2 = stat(obj, exp) # 求めた係数を表示 print("a1 = ", a1) # a1 = 3.46981263012 print("a2 = ", a2) # a2 = 0.533009484155 print("b = ", b) #b = -34.7129308351 if __name__ == '__main__': main()
コメント