タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

Excelで行った重回帰分析の結果をグラフ化するプログラム【Python】

Python VBA エクセル・スプレッドシート

t f B! P L

ブログのタイトル

データを扱っていると、そのデータ間でどのような影響があるのかを知りたい場合があります。

そんな時は、2つのデータ間なら単回帰分析を行います。これはExcelで散布図を書くと説明変数xに対して、目的変数yがどのような動きをしているのかが分かります。

ではデータが3つある場合はどうでしょう?

データが3つある場合は重回帰分析を行います。

〇分析ツールの表示

Excelで風量、湿度の要素が気温に影響しているのか重回帰分析を行いました。

Excelで重回帰分析を行う場合は、まず分析ツールのアドインを表示させます。

分析ツールのアドインは標準搭載なのでどのバージョンのExcelにもあります。 

Excelの表

Excelで左上の

⓵ファイル

②その他

⓷オプション

④アドイン

⑤設定

とクリックしていきます。 

Excelアドイン

選択メニューから分析ツールにチェックをいれます。 

分析ツールにチェック

リボンのデータタブにデータ分析が追加されました。 

データ分析が追加

VBAで分析ツールの表示

いろいろと設定を行いましたが、VBAで分析ツールの表示を行えば以下の1行のコードを実行するだけです。

AddIns("分析ツール").Installed = True

解除したければ

AddIns("分析ツール").Installed = False

TRUE を FALSEにするだけで非表示になります。

〇重回帰分析の実施

重回帰分析を行いたい場合は、データ分析の「回帰分析」をクリックします。 

データ分析の「回帰分析」をクリック

入力Yが目的変数で、影響が出る結果のデータ、入力Xが説明変数で影響をだしているであろう要素を選択します。

今回は、気温に湿度と風量は影響しているのかを調べたいので、

Yには気温

Xには湿度と風量

を選択しています。

ラベルと有意水準にチェックをいれてOK 

ラベルと有意水準にチェックをいれて

 重回帰分析の結果が出力されます。

重回帰分析の結果は湿度のP値は0.657、風量のP値は0.3477と気温には影響を及ぼしていないという結果となりました。

P値が0.05以下の場合、影響がある(有意差あり)と考えられます。 

重回帰分析の結果

重回帰分析の結果は各要素あまり影響がないとなりましたが、回帰分析は説明変数と目的変数の直線性をみるものなので、指数関数的な関係になっていたり、層別が必要であっても数字だけではなかなかわかりません。

そこでグラフを書いてみたいと思います。

2要素のグラフなら普通にExcelでかけるのですが、3要素となるとExcelでは書けません。

そこでPythonの登場です。

〇3次元の散布図を各Pythonのコード

import pandas as pd

import matplotlib.pyplot as plt

import tkinter.filedialog as fd

aa = fd.askopenfilename()

print(aa)

data = pd.read_excel(aa)

print(data)

x = data["湿度"]

y = data["風向・風速(m/s)"]

z = data["気温(℃)"]

f = plt.figure()

axes = f.add_subplot(projection = '3d')

axes.scatter(x,y,z,color = "blue")

axes.set_xlabel("situdo")

axes.set_ylabel("kiatu")

axes.set_zlabel("onndo")

plt.show()

実行すると・・・

データの選択画面がでます。

選択ダイアログ

データを読み込むと3軸の散布図が表示されます。

全然相関はなさそうですね。

3軸のグラフ


〇コードの解説

・必要なモジュールをインポートしています。

import pandas as pd

import matplotlib.pyplot as plt

import tkinter.filedialog as fd

Excelファイルを選択する画面を表示

aa = fd.askopenfilename()

・選択したExcel名をコンソールに表示

print(aa)

・パンダスでExcelをデータフレームに変換

data = pd.read_excel(aa)

・データフレームを表示

print(data)

・データフレームの各要素を変数に格納

x = data["湿度"]

y = data["風向・風速(m/s)"]

z = data["気温(℃)"]

3次元画面作成

f = plt.figure()

axes = f.add_subplot(projection = '3d')

・散布図を表示

axes.scatter(x,y,z,color = "blue")

・データのラベルを表示

axes.set_xlabel("situdo")

axes.set_ylabel("kiatu")

axes.set_zlabel("onndo")

・グラフを表示

plt.show()

〇まとめ

今回はExcelで重回帰分析を行う方法と、3要素の散布図をPythonで作る方法をまとめました。

なかなかデータが一つの要素だけで決まるということはありません。

そのデータ間の影響度を調べられる重回帰分析はとても便利です。

現状ではExcelで3軸(3次元)の散布図をつくることはできませんが、Pythonのコードで作ることができます。

IDLEで動かすと、マウスでグラフを回転させたりできるので一度やってみてください。

 

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ