【NumPy】重回帰分析(多変量解析)

この記事では、Python言語とNumPyを用いて、重回帰分析(多変量解析)をする方法をソースコード付きで解説します。

重回帰分析(多変量解析)

重回帰分析とは、複数個の説明変数(x_1, x_2, \cdots)で1つの目的変数(y)を推定することです。
式で表すと以下のようになります。

(1)   \begin{eqnarray*} y = a_1x_1+a_2x_2+a_3x_3 + \cdots + b \end{eqnarray*}

a_1, a_2, a_3, \cdots は標準回帰係数

処理手順

プログラムの処理手順です。

①定量データを用意する
②目的変数(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()

おすすめ記事

Python入門 サンプル集
NumPy入門 サンプル集

コメント