この記事では、Python言語とNumPyを用いて、回帰分析による曲線近似(非線形フィッティング)の方法をソースコード付きで解説します。
曲線近似(回帰分析)
PythonモジュールNumPyでは、polyfitメソッドで回帰分析ができます。
書式
a1, a2, ..., an, b = numpy.polyfit(x, y, n)
| パラメータ | 説明 | 
|---|---|
| a1, a2, … ,an | 近似曲線の各変数の重み | 
| b | 近似曲線の切片 | 
| n | 近似曲線の変数の個数(次元数) | 
ソースコード
サンプルプログラムのソースコードです。
(2次曲線の場合)
# -*- coding: utf-8
import numpy as np
import matplotlib.pyplot as plt
def main():
    # CSVのロード(先頭行は読み飛ばす)
    data = np.genfromtxt('nikkei16.csv', delimiter=',', skip_header=1, dtype='float')
    # 5行目(日経平均株価の終値)をスライスして取り出し
    f = data[:,4]
    # 要素の順序反転
    f = f[::-1]
    # x軸の生成
    x = np.linspace(1, len(f), len(f))
    # フィッティング
    a1, a2, b = np.polyfit(x, f, 2)
    # フィッティング曲線
    fh = a1 * x**2 + a2 * x + b
    # 日経平均株価のプロット
    plt.plot(x, f,  label="f")
    # フィッティング曲線のプロット
    plt.plot(x, fh, label="fh")
    # グラフの各種設定
    plt.xlabel("Days")
    plt.ylabel("Stock Price")
    plt.legend()
    plt.grid()
    plt.show()
if __name__ == "__main__":
    main()
| – | リンク | 
|---|---|
| 3次バージョン | 3d.py | 
| 4次バージョン | 4d.py | 
■使用したデータ:nikkei16.csv (2016年の日経平均株価のデータ)
※株価データの入手は下記サイトを参考に行いました。
【参考】【日経平均株価】過去データ(CSV)をダウンロード 
実行結果
サンプルプログラムの実行結果は下記の通りです。
【2次】

【3次】

【4次】

関連ページ

Pythonで株・投資信託のデータ分析【超入門】
Pythonを用いて株・投資信託のデータを分析し、値動きを予測する方法をソースコード付きで解説します。
 

コメント