カテゴリカルなX(2群)のYの平均値差と,連続量であるXとYとの関係というのを,同様に見なしてはいけないという前提付きで,dとrとの関係が分かると,結果の解釈で便利かと思った。
library(ltm)
library(irtoys)
\[ d = \frac{2r}{\sqrt{1-r^2}}\]
\[r = \frac{d}{\sqrt{d^2+4}}\]
\[Slope = r \times (\frac{SD_y}{SD_x})\]
\[\pi_d = \Phi(\frac{d}{\sqrt{2}})\]
#引数 N:乱数の数、Mu:平均、Sd:標準偏差、R:相関係数
#返り値: N行2列の行列(それぞれの列が相関を持つ乱数ペア)
CorRand <- function(N, Mu, Sd, R){
x <- rnorm(n=N, mean=Mu, sd=Sd)
e1 <- rnorm(n=N, mean=Mu, sd=Sd)
e2 <- rnorm(n=N, mean=Mu, sd=Sd)
return(cbind(sqrt(R)*x+sqrt(1-R)*e1, sqrt(R)*x+sqrt(1-R)*e2))
}
d <- 0.93
control <- c("何もしない")
intervention <- c("練習テスト")
ここはいじらなくてもいい
min <- d/sqrt(2)
max <- -3.5
i <- 200
mu <- 0
sd <- 1
# Distribution Difference plot
par(family = "HiraKakuProN-W3")
par(mar = c(4, 4, 1, 1))
curve(dnorm(x, d, 1), -4, 4, bty = "n", col = "black", xlab = "", ylab = "", xaxt = "n", yaxt = "n", ylim = c(0, 0.6), xlim = c(-3.5, 3.5))
# polygon(xx, yy, col="grey")
par(new=T)
curve(dnorm(x, 0, 1), -4, 4, bty = "n", col = "black", xlab = "SD", ylab = "", xaxt = "n", yaxt = "n", ylim = c(0, 0.6), xlim = c(-3.5, 3.5), lty=2)
axis(side=1, at=-4:4, labels = c("-4","-3","-2","-1","0","1","2","3","4"))
lines(c(0, 0), c(0, dnorm(0, 0, 1) + 0.05), col = "black", lty = 2)
lines(c(d, d), c(0, dnorm(0, 0, 1) + 0.05), col = "black", lty = 1)
text(d/2, 0.48, paste(d,"SD"), adj=0.5)
text(d/2, 0.45, paste("→"), adj=0.5)
text(-1.50, 0.30, paste(control), adj=0.5)
text( d + 1.50, 0.30, paste(intervention), adj=0.3)
par(family = "HiraKakuProN-W3")
par(mar = c(4, 4, 1, 1))
curve(dnorm(x, mu, sd), -4, 4, bty = "n", col = "black", xlab = "", ylab = "", xaxt = "n", yaxt= "n", ylim = c(0, 0.6), xlim = c(-3.5, 3.5))
axis(side=1, at=-4:4, labels = c("-4","-3","-2","-1","0","1","2","3","4"))
## Polygon作図用のデータ作成
## 関数部分
xx <- seq(min, max, length=i) #min〜maxまでをi等分したデータを作成
yy <- dnorm(xx, mu, sd) #変数にベクトルを入れると関数の結果もベクトルで出力される
## 下限・上限を付加
xx<- c(min, xx, max, min)
yy<- c(0, yy, 0, 0)
## Polygonで作図
polygon(xx, yy, col="black")
## 積分範囲を示す線
lines(c(min, min), c(0, dnorm(min, mu, sd)+0.05), col="black")
## 積分範囲を示す文字(srt=90:90度回転、adj=0:アライメント左揃え(0.5中央揃え、1:右揃え))
text(min, dnorm(min, mu, sd)+0.10, expression(paste(Phi, ~bgroup("(",
frac(d, sqrt(2))
,")")
)), adj=0.5)
text(-1.1, 0.10, paste("優越率"), adj=0, col="white")
text(-1.0, 0.05, paste(round(pnorm(d/sqrt(2))*100),"%"), adj=0, col="white")
# dを相関に
r = d/sqrt(d^2 + 4)
#相関を持つ乱数ペア(r=1.00)
mt <- CorRand(1000, 0, 1, r)
# Y = 1 + 2 * X
x <- mt[,1] #Memo: 関数「CorRand」内とは別物(関数内の変数は外には影響しない)
y <- 1 + 2 * mt[,2]
#図化:乱数ペアのプロット、破線は回帰直線(Y = 1 + 2 * X)
par(family = "HiraKakuProN-W3")#Macintoshの場合
par(mar = c(4, 4, 1, 1))
plot(x, y, pch = 1, xlab = "X", ylab="Y", main="",
xlim = c(-3, 3), ylim = c(-5, 6),
mgp = c(2, 0.7, 0), xaxt = "n", yaxt = "n")
axis(side = 1, at = -3:3, labels =F)
axis(side = 2, at = -6:8, labels =F)
legend("topleft", legend = sprintf("r=%0.2f", cor(x, y)), bty = "n")
lines(c(-5, 5), c(-5*2+1, 5*2+1), lty = 2, col = rgb(1, 0, 0))
# 回帰直線(青色)
lm.coef <- lm(y~x)
abline(lm.coef, col = 4)