bbmcp <-
function(J,K,x,tr=.2,alpha=.05,grp=NA,op=FALSE){
#
# Test all linear contrasts associated with
# main effects for Factor A and B and all interactions based on trimmed means
# By default,
# tr=.2, meaning 20% trimming is used.
#
# The data are assumed to be stored in x in list mode or in a matrix.
# If grp is unspecified, it is assumed x[[1]] contains the data
# for the first level of both factors: level 1,1.
# x[[2]] is assumed to contain the data for level 1 of the
# first factor and level 2 of the second factor: level 1,2
# x[[j+1]] is the data for level 2,1, etc.
# If the data are in wrong order, grp can be used to rearrange the
# groups. For example, for a two by two design, grp<-c(2,4,3,1)
# indicates that the second group corresponds to level 1,1;
# group 4 corresponds to level 1,2; group 3 is level 2,1;
# and group 1 is level 2,2.
#
# Missing values are automatically removed.
#
JK <- J * K
if(is.matrix(x))
x <- listm(x)
if(!is.na(grp[1])) {
yy <- x
x<-list()
for(j in 1:length(grp))
x[[j]] <- yy[[grp[j]]]
}
if(!is.list(x))
stop("Data must be stored in list mode or a matrix.")
for(j in 1:JK) {
xx <- x[[j]]
x[[j]] <- xx[!is.na(xx)] # Remove missing values
}
#
if(JK != length(x))
warning("The number of groups does not match the number of contrast coefficients.")
for(j in 1:JK){
temp<-x[[j]]
temp<-temp[!is.na(temp)] # Remove missing values.
x[[j]]<-temp
}
# Create the three contrast matrices
temp<-con2way(J,K)
conA<-temp$conA
conB<-temp$conB
conAB<-temp$conAB
if(!op){
Factor.A<-lincon(x,con=conA,tr=tr,alpha=alpha)
Factor.B<-lincon(x,con=conB,tr=tr,alpha=alpha)
Factor.AB<-lincon(x,con=conAB,tr=tr,alpha=alpha)
}
All.Tests<-NA
if(op){
Factor.A<-NA
Factor.B<-NA
Factor.AB<-NA
con<-cbind(conA,conB,conAB)
All.Tests<-lincon(x,con=con,tr=tr,alpha=alpha)
}
list(Factor.A=Factor.A,Factor.B=Factor.B,Factor.AB=Factor.AB,All.Tests=All.Tests,conA=conA,conB=conB,conAB=conAB)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.