最小二乗法 scipy

最小二乗法

scipyを使用して実際の問題である最小二乗法を解決し、結果をグラフ化します。

まず、scipyと必要なライブラリをインポートします。

1
2
3
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

次に、データを作成します。ここでは、実際の問題として、ある物体の自由落下の時間と距離の関係を考えます。

1
2
time = np.array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])
distance = np.array([0.05, 0.20, 0.45, 0.80, 1.25, 1.80, 2.45, 3.20, 4.05, 5.00])

次に、最小二乗法を使用してデータをフィットさせる関数を定義します。

1
2
def linear_func(x, a, b):
return a * x + b

最小二乗法を実行し、最適なパラメータを取得します。

1
2
params, params_covariance = curve_fit(linear_func, time, distance)
a, b = params

結果をグラフ化します。

1
2
3
4
5
6
7
plt.scatter(time, distance, label='Data')
plt.plot(time, linear_func(time, a, b), label='Linear Fit')
plt.xlabel('Time')
plt.ylabel('Distance')
plt.title('Linear Fit using Least Squares Method')
plt.legend()
plt.show()

これにより、データポイントに最も適合する直線が表示されます。

グラフ解説

このグラフは、時間と距離の関係を示しています。
x軸は時間を表し、y軸は距離を表しています。
データポイントは青い点で表示されており、それぞれの点は実際の観測値を表しています。

また、青い線は最小二乗法によってフィットされた回帰直線を表しています。
この回帰直線は、データポイントに最も適合する直線を表しており、時間と距離の関係を近似的に表現しています。

回帰直線の傾きと切片は、最小二乗法によって求められた最適なパラメータです。
傾きは直線の傾きを表し、切片はy軸との交点を表しています。
これらのパラメータは、時間と距離の関係を数値的に表現するために使用されます。

このグラフを通じて、時間と距離の関係を視覚的に理解することができます。
データポイントが回帰直線に近い位置にある場合、回帰直線がデータによく適合していることを示しています。
逆に、データポイントが回帰直線から離れている場合、回帰直線がデータに適合していないことを示しています。

このようなグラフを使用することで、時間と距離の関係を視覚化し、傾向やパターンを把握することができます。
また、回帰直線を使用することで、未知の時間における距離を予測することも可能です。