Rによるデータ分析

Rによる個別の因子の寄与率

個別の因子の寄与率 のページで、平方和を使って寄与率を計算する方法の、Rによる実施例です。

Yと説明変数のひとつずつについて、相関係数の2乗を計算する方法は、 Rによる主成分回帰分析 にあります。

重回帰分析を使う方法

基本

Y、X1、X2という変数があり、「X1とX2は独立している」という仮定を置く場合です。

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
Model <- lm(Y~., data = Data)
# 重回帰分析
X1m <- Data$X1 * data.frame(t(Model$coefficients))$X1
# X1に重回帰分析の係数をかける
X1s <- sum((X1m - mean(X1m))^2)
# X1の平方和
X2m <- Data$X2 * data.frame(t(Model$coefficients))$X2
# X2に重回帰分析の係数をかける
X2s <- sum((X2m - mean(X2m))^2)
# X2の平方和
Ys <- sum((Data$Y - mean(Data$Y))^2)
# Yの平方和
X1s / Ys
# X1の寄与率
X2s / Ys
# X2の寄与率
summary(Model)
# "R-squared"が、モデル式の寄与率

主成分回帰分析

元データの説明変数間に、独立の仮定を置けない場合は、 主成分回帰分析 を使います。 主成分分析 で前処理をすることで、仮定を置けるようにします。

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
Y <- Data$Y
# Yの列を別名で保管する
Data$Y <- NULL
# データからYの列を消して、Xの列だけにする
pc <- prcomp(Data, scale=TRUE)
# Xを主成分分析
DataPC <- pc$x
# 主成分のデータを得る
Data2 <-data.frame(cbind(Y,DataPC))
# 主成分のデータとYを合わせる

Model <- lm(Y~., data = Data2)# 重回帰分析
PC1m <- Data2$PC1 * data.frame(t(Model$coefficients))$PC1
# PC1に重回帰分析の係数をかける
PC1s <- sum((PC1m - mean(PC1m))^2)
# PC1の平方和
PC2m <- Data2$PC2 * data.frame(t(Model$coefficients))$PC2
# PC2に重回帰分析の係数をかける
PC2s <- sum((PC2m - mean(PC2m))^2)
# PC2の平方和
Ys <- sum((Y - mean(Y))^2)
# Yの平方和
PC1s / Ys
# PC1の寄与率
PC2s / Ys
# PC2の寄与率
summary(Model)
# "R-squared"が、モデル式の寄与率

元のデータと、主成分の関係の分析は、 Rによる主成分回帰分析 のページがあります。



Tweet データサイエンス教室