python 回帰直線を求めてグラフ化する

python 回帰直線を求めてグラフ化する

pythonで、回帰直線を求めてグラフ化するサンプルコードを記述してます。pythonのバージョンは3.10.0を使用してます。

環境

  • OS windows11 home
  • python 3.10.0

numpy・matplotlibインストール

numpyとmatplotlibをインストールされていない方は、pipでインストールしておきます。

pip install numpy
pip install matplotlib

回帰直線を計算

まずは、回帰直線の傾きと切片を求めて、1次関数のグラフを作成します。

import matplotlib.pyplot as plt
import numpy as np
 
x = np.array([100, 200, 300, 700, 900, 1100, 1200, 1500])
y = np.array([300, 450, 550, 800, 1100, 2000, 2400, 3100])
 
# 傾きと切片を求める
a = ((x * y).mean() - (x.mean() * y.mean())) / ((x ** 2).mean() - x.mean() ** 2)
b = -(a * x.mean()) + y.mean()

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

# グラフ描画
def f():
    
    z = a * x + b
 
    plt.scatter(x, y)
    plt.plot(x, z, color='green')
 
    plt.xlim(0, 2000) # x軸の表示範囲
    plt.ylim(0, 3500) # y軸の表示範囲
    plt.xlabel("x", fontsize=10) # x軸のラベル
    plt.ylabel("y", fontsize=10) # y軸のラベル
    plt.grid(True) # 目盛線の表示
    plt.tick_params(labelsize = 8) # 目盛線のサイズ
    
    plt.show()
 
f()

実行結果