実験計画法メモ2

  • 1元配置
# 1元配置
Ng<-5

Ns<-sample(5:10,Ng,replace=TRUE)
Fs<-c()
for(i in 1:Ng){
	Fs<-c(Fs,rep(i,Ns[i]))
}
Vs<-rnorm(sum(Ns))

D<-cbind(Fs,Vs)
print(D)
plot(Vs ~ Fs)
myfit <- lm(Vs ~ Fs)

anova(myfit)
  • 2元配置
    • 各水準の繰返し数によって「分散の分解」の成立関係が異なるので、対応が変わる
      • (1)各水準の繰り返し数が等しく,1 である場合
      • (2)各水準の繰返し数が等しく,2 以上である場合
      • (3)各水準の繰返し数が等しくないが,周辺度数に比例する場合
      • (4)各水準の繰返し数が等しくなく,周辺度数にも比例しない場合
# 2元配置
#(1) 各水準の繰り返し数が1
Ngs<-c(5,4)
Gs<-expand.grid(1:Ngs[1],1:Ngs[2])
Ng<-length(Gs[,1])
Ns<-sample(1,Ng,replace=TRUE)
Fs<-matrix(0,0,2)
for(i in 1:Ng){
	tmp<-matrix(c(rep(Gs[i,1],Ns[i]),rep(Gs[i,2],Ns[i])),ncol=2)
	Fs<-rbind(Fs,tmp)
}
Vs<-rnorm(sum(Ns))
D<-cbind(Vs,Fs)
print(D)
plot(Vs~Fs[,1]+Fs[,2])
myfit<-lm(Vs~Fs[,1]+Fs[,2])
anova(myfit)

#(2)(3)各水準の繰り返し数が周辺度数に比例する場合(すべて等しい場合を含む)

Ngs<-c(5,4)
Gs<-expand.grid(1:Ngs[1],1:Ngs[2])
Ng<-length(Gs[,1])
Ns<-sample(5,Ng,replace=TRUE)
Fs<-matrix(0,0,2)
for(i in 1:Ng){
	tmp<-matrix(c(rep(Gs[i,1],Ns[i]),rep(Gs[i,2],Ns[i])),ncol=2)
	Fs<-rbind(Fs,tmp)
}
Vs<-rnorm(sum(Ns))
D<-cbind(Vs,Fs)
print(D)
plot(Vs~Fs[,1]+Fs[,2]+Fs[,1]:Fs[,2])
myfit<-lm(Vs~Fs[,1]+Fs[,2]+Fs[,1]:Fs[,2])
anova(myfit)

#(4) 各水準の繰り返し数が周辺度数に比例しない場合
Ngs<-c(5,4)
Gs<-expand.grid(1:Ngs[1],1:Ngs[2])
Ng<-length(Gs[,1])
Ns<-sample(5:10,Ng,replace=TRUE)
Fs<-matrix(0,0,2)
for(i in 1:Ng){
	tmp<-matrix(c(rep(Gs[i,1],Ns[i]),rep(Gs[i,2],Ns[i])),ncol=2)
	Fs<-rbind(Fs,tmp)
}
Vs<-rnorm(sum(Ns))
D<-cbind(Vs,Fs)
print(D)
plot(Vs~Fs[,1]+Fs[,1]*Fs[,2])
plot(Vs~Fs[,2]+Fs[,1]*Fs[,2])
myfit1<-lm(Vs~Fs[,1]+Fs[,1]*Fs[,2])
myfit2<-lm(Vs~Fs[,2]+Fs[,1]*Fs[,2])
# myfit1 の Fs[,2] に関する結果を要因Fs[,2]の有意性に使う
anova(myfit1)
# myfit2 の Fs[,1] に関する結果を要因Fs[,1]の有意性に使う
anova(myfit2)
# 交互作用に関する出力はmyfit1もmyfit2も同じ
  • 多元配置
# 多元配置
#(1) 各水準の繰り返し数が1
k<-4
Ngs<-sample(3:7,k,replace=TRUE)
NgsList<-list()
for(i in 1:k){
	NgsList[[i]]<-1:Ngs[i]
}
#Gs<-expand.grid(1:Ngs[1],1:Ngs[2],1:Ngs[3],1:Ngs[4])
Gs<-expand.grid(NgsList)
Ng<-length(Gs[,1])
Ns<-sample(1,Ng,replace=TRUE)
Fs<-matrix(0,0,k)
for(i in 1:Ng){
	tmp1<-c()
	for(j in 1:k){
		tmp1<-c(tmp1,rep(Gs[i,j],Ns[i]))
	}
	tmp<-matrix(tmp1,ncol=k)
	Fs<-rbind(Fs,tmp)
}
Vs<-rnorm(sum(Ns))
D<-cbind(Vs,Fs)
print(D)
xnam <- paste("Fs[,", 1:k, "]",sep="")
(fmla <- as.formula(paste("Vs ~ ", paste(xnam, collapse= "+"))))


plot(fmla)
myfit<-lm(fmla)
anova(myfit)
  • 乱塊法
    • 2要因での乱塊法は各水準の繰り返し数がすべて1の場合の2元配置分散分析と同じになっている(ここここ)
  • ラテン方格法
    • 3元配置ANOVAで、「配置の仕方」が特別な(ラテン方格を使う)方法
    • ラテン方格の数え上げは難しく、単純な式や、漸化式もない(らしい)→こちら