この記事では、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()


コメント