はじめに
線形回帰なんてExcel使えば一発ですよ。という声があるかもしれませんが、Pythonで書いてみます。
使うデータは前にも使ったアボカドデータです。
https://qiita.com/iwasaki_kenichi/items/ea580fd9498ad6950a75
コード
main1.py
#ライブラリインポート
%matplotlib inline
import numpy as np
from pylab import *
import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats
#データ読み込み
df = pd.read_csv("hogehoge.csv")
#散布図
scatter(df["Total Volume"],df["4046"])
main2.py
#順番に、「slope:傾き」「intercept:切片」「r_value:相関係数」「p_value:p値」「std_err:推定値の標準誤差」を求める。
slope,intercept, r_value,p_value, std_err = stats.linregress(df["Total Volume"],df["4046"])
#決定係数を算出する。
r_value **2
#(ここでは0.95という高い値がでた)
#y=ax+bのyを計算する関数
def predict(x):
return slope * x + intercept
#yを計算
fitline = predict(df["Total Volume"])
プロット
plt.scatter(df["Total Volume"],df["4046"])
plt.plot(df["Total Volume"],fitline,c='r')
plt.show()
おわりに
これぐらいのレベルのものはササッと書けるようになりたい。