草薙の研究ログ

英語教育関係。でも最近は統計(特にR)ネタが中心。

分散分析結果の可視化例

よく指導法の効果の検証っていうような目的でこんなグラフを見る。

f:id:kusanagik:20181015152256p:plain

これ,カーネルとか使ってこんな感じでいいじゃない?
名前なんていうかわからんけど。
これパッケージにしたら需要あるんだろうか?
流行ったらいいな。

f:id:kusanagik:20181015160334p:plain


または,これでもいいな。

f:id:kusanagik:20181015162253p:plain

library(ks)

group<-c(rep("A",40),rep("B",40))
set.seed(1)
pre<-round(c(rnorm(40,50,8),rnorm(40,50,8)),0)
post<-round(c(rnorm(40,50,8),rnorm(40,80,8)),0)
delayed<-round(c(rnorm(40,40,8),rnorm(40,70,8)),0)
dat<-data.frame(group,pre,post,delayed)


#繰り返しとかめんどくなってしまったからクソ汚い
k.pre.a<-kde(dat[dat[,1]=="A",2])
k.post.a<-kde(dat[dat[,1]=="A",3])
k.delayed.a<-kde(dat[dat[,1]=="A",4])
k.pre.b<-kde(dat[dat[,1]=="B",2])
k.post.b<-kde(dat[dat[,1]=="B",3])
k.delayed.b<-kde(dat[dat[,1]=="B",4])
m.a<-apply(dat[dat[,1]=="A",-1],2,mean)
m.b<-apply(dat[dat[,1]=="B",-1],2,mean)

plot(0,
	xlim=c(0,100),
	ylim=c(0.4,3.4),
	axes=F,
	type="n",
	xlab="Score",
	ylab="Time")
axis(2,1:3,
	c("Delayed","Post","Pre"))
axis(1)
abline(h=1:3,
	lty=2)
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.pre.a)+3,
	col="lightblue")
polygon(seq(0,100,.1),
	-7*dkde(seq(0,100,.1),
	k.pre.b)+3,
	col="orange")
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.post.a)+2,
	col="lightblue")
polygon(seq(0,100,.1),
	-7*dkde(seq(0,100,.1),
	k.post.b)+2,
	col="orange")
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.delayed.a)+1,
	col="lightblue")
polygon(seq(0,100,.1),
	-7*dkde(seq(0,100,.1),
	k.delayed.b)+1,
	col="orange")
legend("bottomleft",
	legend=c("Control","Treatment"),
	pch=20,
	col=c("lightblue","orange"),
	box.lty=0)
lines(m.a,c(3.05,2.05,1.05),
	type="b",
	lty=2,
	pch=20)
lines(m.b,c(3-.05,2-.05,1-.05),
	type="b",
	lty=2,
	pch=20)

plot(0,
	xlim=c(0,100),
	ylim=c(0.4,3.4),
	axes=F,
	type="n",
	xlab="Score",
	ylab="Time")
axis(2,1:3,
	c("Delayed","Post","Pre"))
axis(1)
abline(h=1:3,
	lty=2)
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.pre.a)+3,
	col=rgb(0,0,1,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.pre.b)+3,
	col=rgb(1,1,0,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.post.a)+2,
	col=rgb(0,0,1,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.post.b)+2,
	col=rgb(1,1,0,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.delayed.a)+1,
	col=rgb(0,0,1,alpha=.2))
polygon(seq(0,100,.1),
	7*dkde(seq(0,100,.1),
	k.delayed.b)+1,
	col=rgb(1,1,0,alpha=.2))
legend("bottomleft",
	legend=c("Control","Treatment"),
	pch=20,
	col=c(rgb(0,0,1,alpha=.2),rgb(1,1,0,alpha=.2)),
	box.lty=0,
	bg="gray98")
lines(m.a,
	c(3,2,1),
	type="b",
	lty=2,
	pch=20)
lines(m.b,
	c(3,2,1),
	type="b",
	lty=2,
	pch=20)