Rによるデータ分析

Rによる反実仮想因果効果分析

反実仮想による因果効果の分析 のRによる実施例です。

データの前提

目的変数はYです。 処置あり1、処置なし0の変数はZという名前です。

下記の実施例では、Xという変数が1つある場合ですが、 モデルは、Xが複数あっても作れます。 「X」という変数がないとエラーになるのは、散布図を作る行です。
causal_effect

Rのコード

反実仮想を求めるためのモデルは、 一般化線形モデル を入れています。 この部分を変えると、いろいろなモデルが使えます。

T-Lerner なので、モデルが2つ作られます。

library(ggplot2) # ライブラリを読み込み
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
DataZ <- Data

Data0 <- subset(Data, Data$Z == 0)
# Zが0のサンプルのデータを別に作る
Data1 <- subset(Data, Data$Z == 1)
# Zが1のサンプルのデータを別に作る
DataZ$Z <- NULL
# Zの列を消す
Data0$Z <- NULL
# Zの列を消す
Data1$Z <- NULL
# Zの列を消す
gm0 <- step(glm(Y~., data=Data0, family= gaussian(link = "identity")))
# Z=0の一般化線形モデル
predictedY <- predict(gm0,Data0)
#
Data01 <- cbind(Data0,predictedY)
#
ggplot(Data01, aes(x=Y, y=predictedY)) + geom_point()
# Z=0の予測値と実測値の関係の確認
causal_effect
gm1 <- step(glm(Y~., data=Data1, family= gaussian(link = "identity")))
# Z=1の一般化線形モデル
predictedY <- predict(gm1,Data1)
#
Data10 <- cbind(Data1,predictedY)
#
ggplot(Data10, aes(x=Y, y=predictedY)) + geom_point()
# Z=1の予測値と実測値の関係の確認
causal_effect
s0 <- predict(gm0,DataZ)
#
s1 <- predict(gm1,DataZ)
#
causal_effect <- s1-s0
# 因果効果を計算
DataS <- cbind(Data,s0,s1,causal_effect)
#
ggplot(DataS, aes(x=X, y=causal_effect)) + geom_point()
# Xと因果効果の関係
causal_effect

ggplot(DataS, aes(x=X, y=Y)) + geom_point(aes(colour=Z, shape=Z))# 元のデータのグラフを作る
causal_effect



Tweet データサイエンス教室