Tableau+R連携で回帰分析をやってみる(重回帰分析)

投稿者:

単回帰分析に引き続き、重回帰分析を実施してみましょう。

 

  • 重回帰分析とは

単回帰分析が、1つの目的変数を1つの説明変数で予測したのに対し、重回帰分析は1つの目的変数を複数の説明変数で予測しようというものです。式で表すと以下のようになります。

 

ここでは、Rに搭載されているデータセット airquality を利用します。データセット airquality 19735月から9月までのニューヨークの大気状態を、6つの変数で観測・記録した154の観測値を記録しています。

 

詳細:

Ozone: Roosevelt 島における 1300 時から 1500 時までの 平均オゾン量 (parts per billion 単位)。

Solar.R: セントラルパークにおける 0800 時から 1200 時 の周波数 4000~7700 オングストロームの日射量 (単位 Langleys)。

Wind: La Guardia 空港における毎日の 0700 時から 10000 時の 平均風速 (単位 マイル)。

Temp: La Guardia 空港における一日の最大温度 (単位 華氏)。

Rのコンソールから airqualityのデータを確認してみましょう。

> airquality

それぞれのデータの相関をザックリつかむために、対散布図を描いてみます。

いかがでしょうか、オゾン量は風力が増加すると減少する、気温が増加するにつれて増加するという相関関係が見えてきそうです。

> pairs(airquality[,1:4])

オゾン量(Ozone)を目的変数、太陽の放射量(Solar.R)、風力(Wind)、気温(Temp)を説明変数とした重回帰分析を行います。関数としてlm()を利用します。

 

> air.lm <- lm (Ozone~Solar.R+Wind+Temp,data=airquality)

>summary(air.lm)

小数点以下の桁数を指定す、回帰係数を丸めます。

> round(coefficients(air.lm),2)

 

返された結果を用いたオゾン量の回帰式は以下のようになります。

Ozone = -64.34 +  0.06 x Solar.R  -3.33 x Wind  + 1.65 x Temp

 

  • Tableau で可視化してざっくりデータの傾向を把握する

では、ここでTableauを使ってデータの可視化をしてみましょう。

まずは添付のデータセットをダウンロードしてTableauから接続します。

+ Ozone、Solar.R、Wind,Tempを列にドラッグします。

+ 同じOzone、Solar.R、Wind,Tempを行にもドラッグします。

+ 分析→ 傾向線の表示 で傾向線を表示します。

+ 色と形状を好みのものに変更します。

以上で散布図が完成します。

 

こちらはTableau Publicの画面です。Monthのフィルタなど選択可能です。

同じデータで時系列のオゾン量などの変化を可視化します。

+ Month , Day を列にドラッグします。

+ Ozoneを行にドラックします。

+ Solar.R をダブルクリックし、メジャーバリューが行に追加されます。

+ Tempをダブルクリックします。

+ Windをダブルクリックします。

以上で出来上がりです。

以下はTableau Public にアップロードしたビューです。Monthをフィルター可能です。

 

  • Tableau からRを連携させる

Tableau からRを連携させるための前準備として、RコンソールからRserve()を起動する必要があります。

詳細はこちらを参照ください→ Tableau + R 連携で回帰分析をやってみる(線形単回帰分析)

 

まず計算フィールド「lm(Ozone~Temp+Wind+Solar.R)」を作成します。

 

SCRIPT_REAL(”

Ozone <- .arg1;
Temp <- .arg2;
Wind <- .arg3;
Solar.R <- .arg4;

fit <- lm(Ozone ~ Temp+Wind+Solar.R);
fit$fitted;
“,
SUM([ZN-Ozone]), SUM([Temp]),SUM([Wind]),SUM([Solar.R])
)

 

+ Month,Dayを列にドラッグします。

+ フィルターにMonthをドラッグし、9 (月)をチェックします。(9月はSolar.Rに欠損がないため、これを利用します。)

+ フィルターにメジャーネームをドラッグし、表示するメジャーバリューとして、

Ozone 、 Temp、Wind、Solar.R、 lm(Ozone ~ Temp+Wind+Solar.R) のみチェックします。

+ メジャーバリューを行にドラッグします。

+ マークの表示形式を線に変更します

+ メジャーネームを色にドラッグします。

+ メジャーバリューのOzoneを右クリックし、個別のカウントから合計に変更します。

 

 

以上で、実際のOzoneと、Wind,Temp,Solar.Rの値および、Wind,Temp,Solar.Rから重回帰分析により予測されたOzoneの予測値の推移が表示されます。

赤色のOzone実測値 と 紫いろのOzone予測値を比べてみるとどうでしょうか? まぁ、いい線の予測ができているでしょうか。

赤色のOzone実測値がないところについても、他の説明変数からOzoneの予測値が計算できていることが分かります。

 

使用したワークブックlm重回帰分析0721はこちらからダウンロードください。

 

以上です。

 

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です