【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()
スポンサーリンク
