非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】散布データから近似直線(最小二乗法)を算出して描く方法

   

Pythonで散布データから近似直線を描く方法です。実行すると以下のようにプロットから近似直線を描くようにします。

 

ソースコードはこちら

import numpy as np
import matplotlib.pyplot as plt

x = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
y = np.array([143.49,143.37,143.37,143.45,143.28,143.52,143.34,143.19,143.16,142.95,143.01,142.87])

n = len(x)
a = ((np.dot(x, y)- y.sum() * x.sum()/n)/
    ((x ** 2).sum() - x.sum()**2 / n))
b = (y.sum() - a * x.sum())/n

print('傾き: ', a)
print('切片: ', b)

plt.scatter(x, y, color="r")
plt.plot([0, x.max()], [b, a * x.max() + b]) #(0, b)地点から(xの最大値,ax + b)地点までの線
plt.show()
 

 

スポンサーリンク

 - Python