この記事では、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を用いて株・投資信託のデータを分析し、値動きを予測する方法をソースコード付きで解説します。

コメント