Rによるデータ分析 | Pythonによる隠れ変数の分析

Rによる隠れ変数の分析

隠れ変数の探索 を、Rで進める時のレシピです。

因果推論 として 相関関係による仮説の探索 をやろうと思い、 1対多のグラフ をしたものの、注目している変数と他の変数の間には、何も相関が見つからないことがあります。

このページの方法は、そのような時に、あきらめずにさらにデータを探索するための方法になります。

主成分分析独立成分分析因子分析 の3つの方法がありますが、同じような結果になることもありますし、 どれかの方が、良いこともあります。

実施例

下記のコードが注目している変数が「Y」ということにしています。 他の変数については、名前の付け方に決まりはありません。

finder <- 1
のところを変えると、主成分分析、独立成分分析、因子分析を切り替えられます。

コード

setwd("C:/Rtest") # 作業用ディレクトリを変更
library(fastDummies)
# ライブラリを読み込み
library(ggplot2)
# ライブラリを読み込み
library(fastICA)
# ライブラリを読み込み
library(psych)
# ライブラリを読み込み
library(tidyr)
# ライブラリを読み込み
Data <- read.csv("Data.csv", header=T)
# データを読み込み
Data1 <- Data
Y <- Data1$Y
Data1$Y <- NULL
Data2 <- Data1
#Data2 <- dummy_cols(Data1,remove_first_dummy = FALSE,remove_selected_columns = TRUE)
pc <- prcomp(Data2, scale=TRUE, tol=0.01)
summary(pc)
finder <- 1
# 1 = 主成分分析、2 = 独立成分分析、3 = 因子分析
if(finder == 1) {
Data3 <- as.data.frame(pc$x)
} else if(finder == 2) {
library(fastICA)
ICA <- fastICA(Data1, 2)
# 因子を2個にする場合
Data3 <- as.data.frame(ICA$S)
} else {
fa_result <- fa(Data1, nfactors = 2, fm = "ml", rotate = "varimax")
# 因子を2個にする場合
Data3 <- as.data.frame(fa_result$scores)
}
Data4 <- cbind(Y, Data3)
Data_long <- tidyr::gather(Data4, key="X", value = Xs, -Y)
if(class(Ydata) == "numeric") {

ggplot(Data_long, aes(x=Xs,y=Data_long[,1])) + geom_point() + facet_wrap(~X,scales="free")+ labs(y="Y")
} else {
ggplot(Data_long, aes(x=Data_long[,1],y=Xs)) + geom_jitter(size=1, position=position_jitter(0.1)) + facet_wrap(~X,scales="free")+ labs(x="Y")
}



Tweet データサイエンス教室