R言語とExcelを用いた重回帰分析の方法2(R言語編)

重回帰分析とは、多変量解析のうち複数の説明変数と一つの目的変数が量的なデータの場合に用いることができる解析手法です。

#無相関検定
今回の記事では、元データから相関係数を求めて、無相関検定を行います。


相関関係・・・2つのものが密接に関わりあい、一方が変化すれば他方も変化するような関係

相関係数(ピアソンの相関係数)r・・・2つの変数(変量)間の直線的な相関関係の強さを定量的に示す指標。

相関係数は、-1から1の値をとり、直線的な相関関係の強さを表現し、0以上を正の相関、0未満を負の相関と言います。相関係数は絶対値が大きいほど相関関係が強いことを意味します。

今回用いた元データは下図のとおりです。ここで、用いた数値は適当です。
元データはExcelで打ち込んで、csv形式に出力しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/b29ee31c-284f-e2d2-fe76-d6878260b217.png)

重回帰分析を行う上で、目的変数とは関係のない説明変数を含めてしまっては意味がありません。
そこで、重回帰分析を行う前に各説明変数と目的変数の相関係数から相関関係があるか判断するために無相関検定を行います。

#無相関検定を行うための準備
無相関検定で相関係数を導出するためにR言語を使用しました。
R言語を使用するために統計解析用ソフトであるR、もしくはRStudioをダウンロードする必要があります。
どちらもフリーソフトで、下のURLからダウンロードできます。

R　https://cran.r-project.org/
RStudio　https://www.rstudio.com/products/rstudio/download/#download

上記にもありますが、元データはExcelで打ち込んで、csv形式に出力しておきましょう。

#無相関検定の方法
今回はRStudioを使用します。
1.　RStudioを立ち上げます。
　　すると、下のようなConsoleが出てくると思います。
　　コマンドは赤い丸で示している「>」の隣に書きます。　
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/c2424d6e-5036-4672-daa0-7f594d93f339.png)

2.　RStudio作業用ディレクトリの確認もしくは変更します。
　　作業用ディレクトリ確認コマンド　getwd()
　　作業用ディレクトリ変更コマンド　setwd("パス名")

　　作業用ディレクトリ確認コマンドをConsoleに打ち込みます。
　　作業用ディレクトリが分かるので、そのディレクトリにcsv形式の元データを入れておきます。

　　もしくは、setwd("パス名")で作業用ディレクトリを変更可能です。

3.　Rstudioに元データを読み込み
　　上記にもありますが、先にcsv形式の元データを作業用ディレクトリに入れておきます。
　　その後、Consoleに「(データ名)<-read.csv("(ファイル名)",header=T)」を打ち込みます。
    実際の画面は下のとおりです。
　　保存するデータ名を「datab」にして、元データのファイル名は「ブログ.csv」で保存していたので、下のようになります。
　　header=Tとなっていますが、これは元データの身長(cm)や体重(kg)といったセルをデータと認識させないためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/2085cce6-ae7e-e314-291e-573fa187d190.png)
　　すると、Consoleの上の画面に元データがRStudioに入っていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/09057e51-42f3-a6dd-f153-980d924d1ee8.png)

4.　RStudioから相関係数の導出
　　相関係数を導出するコマンド　cor(データ名)
　　実際の画面は下のとおりです。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/4603d8f2-cc15-f729-71f0-2d8c3ba0ed13.png)
　　各変数同士の相関係数を導出することができました。
　　適当に作ったデータですが、どの相関係数も非常に大きいですね。

5.　無相関検定の帰無仮説と対立仮説の設定
　　無相関検定では、下のような仮説を立てます。
　　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/468226f1-5039-49cb-9549-114100d9b0a0.png)
　　座高、体重、足の大きさが身長と関係していると言いたいので、要はこの帰無仮説を棄却したいわけですね。
　　無相関検定では、このように帰無仮説と対立仮説を設定し、帰無仮説の方を棄却できるか検定します。
　　帰無仮説を棄却できるかどうかを検定するために、統計量t0値を導出する必要があります。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/a42567e8-d7af-1c22-d736-9e8eb196f1ed.png)
　　t0値は上の数式から導出可能です。ここで、rは先ほど導出した相関係数で、nはサンプル数なので今回は15ですね。
　　もちろんこの数式を使用して、t0値を導出するのもいいですが、RStudioでも導出可能です。

　　ピアソンの相関係数に関する検定を行う関数コマンド　cor.test(対象となるデータ)
　　実際の画面は下のとおりです。
　　cor.test(datab[,2],datab[,1])によって2列目の座高と1列目の身長のt0値を導出可能です。
　　図の赤丸がt0値で、青丸が相関係数です。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/a0750d3d-242b-82bb-d251-b5f1d0735077.png)
　　
　　体重と身長は下図の通りです。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/cd6e540b-b2a3-c4cf-ce4e-3b33844efa33.png)

　　足の大きさと身長は下図の通りです。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/595a9d68-9833-13b0-54c4-081621a76edd.png)
　　
　　求めたt0値はt分布表の数値と比較します。
　　t分布表はネット検索するとすぐ見つかると思います。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/1553146c-d7f3-8c31-9065-4fec3895983b.png)
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/8e9fcc90-8b32-d136-3d43-0b65845229d5.png)
　　ここで、nは15なので、n-2=13よりt分布表は13のところを見ると、3.012と書いています(有意水準0.5%)。
　　要はt0値がt分布表のtより大きければ、帰無仮説棄却、
　　反対にt0値がt分布表のtより小さければ、帰無仮説採択となります。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/e8041d5d-89f9-4bdd-0421-20e7ae8ed52e.png)
　　結果として、無相関検定から座高、体重、足の大きさと身長は相関関係があると判定できました。
　　つまり、重回帰分析の説明変数として座高、体重、足の大きさは適していることがわかりました。

#まとめ
・重回帰分析を行う前に無相関検定を行う。
・RStudioで相関係数と統計量t0値を求め、t分布表と比較する。
・帰無仮説が棄却できれば、その変数は重回帰分析の説明変数として適していることがわかる。

#おまけ(散布図作成方法)
元データの散布図はExcelから散布図を作成可能ですが、さらにデータ数が増えた場合、Excelでは255より多い点をプロットできません。
そこで、RStudioから散布図の作成方法を下記に示します。
散布図作成コマンド　plot(データ名)
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/240a113b-d930-3bd3-bfff-6638971df763.png)
このコマンドをConsoleに打ち込むと、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/c5eb6b25-9b67-0b48-4620-c431e776946f.png)
このような散布図が作成できます。

一応、体重と足の大きさについても記しておきます。
plot(datab[,3],datab[,1],main="身長と体重",xlab="体重",ylab="身長")
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/61bb53d7-9193-f1f9-2ea4-8ea5ae0057e3.png)

plot(datab[,4],datab[,1],main="身長と足の大きさ",xlab="足の大きさ",ylab="身長")
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2253181/6b41bc66-d52c-2668-dd57-a3cff1140ab5.png)

散布図を見ただけでも相関がかなり高いことがわかりますね。

#あとがき
今回の記事は割と長めになってしまったと思います。
次回以降はもっと細かく分けて、シンプルにまとめたいと考えております。
また、見づらい箇所が多々あると自覚しているので、時間はかかると思いますができる限り改善していきたいと思っています。

ここまでお読みいただきありがとうございます。