データから単回帰直線を求めるには、
1)最小二乗法
2)偏微分
のふたつのアプローチがある。
ためしに「10,40,82」を、手書き計算で求めるてみると、
y=36x−28となる。
最小二乗法、偏微分、両方でやってみたけれど、えらく時間がかかったという。
一方、Pandasのライブラリーを使うと、「10,40,82」の単回帰直線はカンタン出来てしまう。
計算により得た直線と、Pandasのライブラリーによる直線を重ねてみると、オー、ぴったり合致してる〜!
ちなみに直線の周りの淡いブルーは信頼区間となっている。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df=pd.DataFrame({'x':[1,2,3],'y':[10,40,82]})
df
fig=plt.figure()
ax=fig.add_subplot(111)
ax.set_xticks([1,2,3])
plt.xlim(0.95,3.05)
sns.regplot(x='x',y='y',data=df)
x=np.arange(1,4)
y=36*x-28
plt.plot(x,y,linewidth=0.9,color='red')
plt.show()