学習用記事Pythonによる回帰分析と結果の可視化Pythonを使って回帰分析を行ってみましょう。理論や用語についてはこちらをご覧ください。回帰分析結果のグラフ化まとめデータの読み込みまずは何はともあれ、データを読み込みます。今回は「気温とアイスクリームの売上」データを読み込み、その関係性を調べてみます。それに基づいて翌日以降の予想気温からアイスクリームの売上を予測してみましょう。ちなみに、ファイルは以下のような形式になっています。予測対象データ(sales_future.csv)それでは、以下の通り2つのcsvを読み込みます。pd.read_csv("sales_future.csv")続いてはsales_data.csvに基づいて回帰分析を行い、sales_future.csvに対して売上予測をしてみます。回帰分析の実行Pythonで回帰分析を実行するためのパッケージには幾つかあるのですが、個人的には回帰分析の実行結果が詳細に確認できる「statsmodels」をオススメします。statsmodelsを使うと、以下のように回帰分析が簡単に実行できます。model.fit(disp=0)print(result.summary())まずは読み込んだcsvをxとyに分離します。求めたいもの(目的変数)が「y」で、その計算に使うもの(説明変数)が「x」です。これに関しては人間が指定してあげる必要があります。ちなみに、「add_constant」は、切片を使う場合に指定します。\(y=ax+b\)の\(b\)の項を使う場合には付けます。多くの場合は使うかなと。最後にresult.summary()をprintすると以下が表示されます。43.3==============================================================================何やら色々出てきました。すべて大事な指標なのですが、とりあえず\(a\)と\(b\)と\(R^2\)値は確認しておきましょう。中段にある「coef」と「const」が交わった所にある数字が切片です。今回の例では106.7334です。「coef」と「temperature」が交わったところにある数字が傾きです。今回の例では39.1031です。右上にある「R-squared」が\(R^2\)値になります。今回の例では0.808なので、そこそこ信用に値する結果になっていそうです。いずれもExcelで実行した時と同じ結果が得られているようです。結果として、アイスクリームの売上を\(y\)、気温を\(x\)とすると、\(y=106.7x+39.1\)という関係があるという答えが出ました。未知のデータの推測さて、回帰分析が出来た所で、お次は明日以降の予想気温をもとにアイスクリームの売上を予測してみます。先程計算できた式の\(x\)に数値を入れて計算するだけではありますが・・・。それでは冒頭で読み込んだdf_testを呼び出し、それと先程計算した\(a\)と\(b\)の値を用いて予測売上を計算してみましょう。df_test[x_name][i]y_result.append(y_tmp)print(y_result)result.params.constには切片が、result.params[●]には●の傾きが格納されています。908.3479496550086]df_testの上から順番に\(y\)が計算されました。あとは以下のようにすれば、Excelに推測結果を書き出すことができます。pd.concat([df_test,df_test_y],axis=1)df_result.to_csv("result.csv")冒頭で読み込んだファイルに、\(y\)が追記されたresult.csvが出来ました。グラフも書いてみましょう。result.params.const+result.params[x_name]*x)plt.show()そこそこ良い回帰分析が出来ていそうですね。単回帰分析であれば、何はともあれグラフを書いてみると、回帰分析の精度が直感的に分かりやすくなって良いと思います。まとめさて、今回はPythonで回帰分析を行ってみました。流れとしては、まず人間はデータを読み込ませて、\(x\)と\(y\)を指定してあげる。回帰分析自体はコンピュータにやらせて、出てきた結果をどう解釈するかを人間が考える。・・・おおよそこういった流れとなっています。ちなみに重回帰分析も、xの列が増えるだけの話ですので、ほぼ同様の手続きで行うことができます。読み物お役立ちツールホームお問い合わせ。