Rによるデータ分析

Rによる部分的最小二乗回帰分析(PLS)

部分的最小二乗回帰分析 の使い方の紹介になります。

普通の重回帰分析による分析

CドライブのRtestというフォルダに、Data.csvというファイルがある状況を想定しています。 目的変数は「Y」という名前になっている必要があります。 Y以外のすべての変数を主成分分析するようになっていますので、説明変数の名前はなんでも良いです。

データの観察

library(psych) # ライブラリを読み込み
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
pairs.panels(Data)
# グラフにする
PLS

X1、X2、X3間も相関があることがわかります。

X4とX4は、相関があることがわかります。 YとXの相関は、何となくありそうにも見えますが、よくわからない感じです。

X6とX7は、どれとも相関がないらしいことがわかります。

重回帰分析

md<-step(lm(Y~.,data=Data))# 重回帰分析(step関数で変数の選択)
summary(md)
# 結果
PLS

普通の重回帰分析で調べたところ、X1、X3、X4で作ったモデルがベストということがわかりました。 X1とX3は相関が高いので、どちらか片方になってもおかしくないですが、ステップ関数で変数の選択をすると、X1とX3の両方が残りました。

この分析方法だと、「X2、X3はX1と相関があるから・・・」、というような考察になります。

部分的最小二乗回帰分析

主成分回帰分析 です。

モデル作成

library(pls) # ライブラリを読み込み
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
pls_model <- plsr(Y~.,data= Data)
# PLS
summary(pls_model)
# 結果
PLS

説明変数のXについては、累積寄与率が99%になるまでには、主成分が6個必要なことがわかります。

また、目的変数と説明変数の相関は、第2主成分以降が加わっても、累積寄与率があまり増えていないです。 そのため、第1主成分のみで求まるモデルで、ほとんど決まっていることがわかります。

主成分の作成

この例の場合は、累積寄与率(Cumulative Proportion)がPC4までで98%になっているので、4個の成分で回帰分析をすることにします。

Data1 <- Data
Data1$Y <- NULL
nc <- ncol(Data1)

nr <- nrow(Data1)
scr <- pls_model$scores
scr <- scr[1:nr,]

主成分と説明変数の関係の分析

Data1scr <- cbind(Data1,scr)
cor2 <- cor(Data1scr)^2
# 寄与率を計算
cor2 <- round(cor2[nc+1:ncol(scr),1:nc],4)
# いらない部分を取る
cor2
# 結果を出力
PLS
この結果を見ると、 Comp1と2で、X1,2,3,4,5が表されていて、Comp1と2の割合の違いが、X1,2,3のグループと、X4,5のグループの違いになっています。

pc3 <- cor2 # 寄与率(相関係数の2乗)を計算
pc3[pc3 < 0.1] <- 0
# 寄与率が以下の関係は見ないことにする
pc3

library(igraph) # パッケージを読み込み
pc4<-pc3*10 
# 線の太さを変更
DM.g<-graph_from_incidence_matrix(pc4,weighted=T)
# グラフ用のデータを作る
V(DM.g)$color <- c("steel blue", "orange")[V(DM.g)$type+1]
# 色を変える
V(DM.g)$shape <- c("square", "circle")[V(DM.g)$type+1]
# マークの形を変える
plot(DM.g, edge.width=E(DM.g)$weight)
# グラフを作る
PLS
表のデータが、グラフで見やすくなりました。



Rによるデータ分析

データサイエンス教室