#LMM 021 BLOCK DESIGN ANOVA WITH REPLICATES
library(nlme)      # {nlme} for lme()
library(help=nlme) # prototype for finding package index

#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#PINHEIRO & BATES MIXED-EFFECTS MODELS 
#READING DATA IN STANDARD FORMAT
setwd("c:/DATA/Models")
M=read.table("Machines.txt")
M$fWorker=factor(M$Worker)
M

#PLOTTING GROUPED DATA OBJECT:
MG=groupedData(score~Machine|factor(Worker),data=M)
MG
plot(MG)

#FIXED FACTOR MODEL INCLUDING INTERACTION
LM1=lm(score~Machine*fWorker,data=M) 
summary(LM1)
anova(LM1)

#FIXED FACTOR MODEL NO INTERACTION
LM2=lm(score~Machine+fWorker,data=M) #LINEAR MODEL WITH "treatments" CONTRASTS
summary(LM2)
anova(LM2)  

#COMPARISON OF FIXED FACTOR MODELS:
anova(LM2,LM1)

#MIXED LINEAR MODEL:
LMe1=lme(score~Machine,random=~1|fWorker,data=M)
LMe1
summary(LMe1)
anova(LMe1)
anova(LMe1,type="marginal")
intervals(LMe1) #95% CONFIDENCE INTERVALS OF PARAMETERS

#NESTED DESIGN MIXED MODEL:
LMe2=lme(score~Machine,random=~1|fWorker/Machine,data=M)
summary(LMe2)
anova(LMe2)
anova(LMe2,type="marginal")
intervals(LMe2)

#MIXED MODEL RANDOM VARIANCE MATRIX ANY POSITIVE-DEFINITE:
LMe3=lme(score~Machine,random=~Machine-1|fWorker,data=M)
summary(LMe3)
anova(LMe3)
anova(LMe3,type="marginal")
intervals(LMe3)

#COMPARISON OF MODELS:
anova(LMe1,LMe2)
anova(LMe1,LMe3)
anova(LMe2,LMe3)


