• No results found

S + code for th e N on-linear Frequentist an alysis w ith baselines (m odel M 12) su b sectio n 3.8

Reading the data-set

d a t a i < -read .tab le(” nagm2.d a t” ); d a t a i < -d a ta .fra m e (d a ta l)

d a ta < -a s .m a trix (d a ta l)

p e rio d l.d a ta < -d a ta [, 1 : 4]; p erio d 2 .d ata< -d ata[, 5 : 8]

p erio d s.d ata < -d a ta [, 9 : 12]; p erio d 4 .d ata< -d ata[, 13 : 16] tre a tm e n t.d ata < -d a ta [, 17 : 20]

c a rry l.d a ta < -d a ta [, 21 : 24]; carry 2 .d ata< -d ata[, 25 : 28] sequence.data<-data[, 29 : 32]; resp o n se.data< -d ata[, 33 : 36] p erio d l.c o l< -m a trix (p erio d l.d a ta,4 * n ro w (d ata),l)

period2 .col< -m atrix (perio d 2 .data,4 *n ro w (d ata),l) p erio d s.co l< -m atrix (p eriod 3 .d ata,4 * n ro w (data),l) perio d 4.co l< -m atrix (p erio d 4 .d ata,4 * n ro w (d ata),l) tre a tm e n t.co l< -m a trix (trea tm e n t.d a ta,4 * n ro w (d ata),l) c arry l.c o l< -m a trix (ca rry l.d ata ,4 * n ro w (d a ta ),l)

carry 2 .co l< -m atrix (carry 2 .d ata,4 *n ro w (d ata),l) sequence.col< -m atrix(sequence.data,4*nrow (data),l) response.col< -m atrix(response.data,4*nrow (data),l) no.param <-7; no.tim es<-4; n o .su b j< -n ro w (d ata) o n e s< -m atrix (l,4 * n ro w (d ata), 1); epsilon<-l.O E-06

m ean .p aram eters.o ld < -c(l,1,1,1,1,1,0.5)

var.p aram eters.old < -c(1 0,1 0)

Mean function

m ean.estim ation<-function(m ean. vector)

{

x l< -m e a n .v e c to r[l]; x2<-m ean.vector[2]

x3<-m ean.vector[3]; x4<-mean.vector[4] x5<-m ean.vector[5]; x6<-m ean.vector[6]

x7 < -m ean. vector[7]

v l < -p i *diag(no. tim e s)+ p2* m a trix (l,no.tim es,no.tim es)

i n v . v l < - ( l / p i ) * ( d i a g ( n o . t i m e s ) - ( p 2 / ( p i + 4 * P 2 ) ) * n i a t r i x ( l , n o . t i m e s , n o . t i m e s ) )

i n v . s i g m a l < - k r o n e c k e r ( d i a g ( n r o w ( d a t a ) ) , i n v . v l )

m e an l < -x l* o n e s + x2*sequence.col+

x3*periodl.col+ x4*period2.col+ x5*period3.col+ (x3+ x4+ x5)*period4.col+ x6*treatm ent.col+ x6*x7*carryl.col

likelihoodl.value<-t(response.col-m eanl)% *% inv.sigm al% *% (response.col-m eanl) retu rn (lik elih o o d l. value)

}

Variance function

v ar.estim ation< -function(var. vector)

{

a< -var.vector[l] ; b<-var.vector[2]

v2< -a* d iag (n o .tim es)+ b *m atrix (l,n o .tim es,no .tim es)

inv. v 2 < -(l/a)* (d ia g (n o .tim e s)-(b /(a+ 4 * b ))* m a trix (l,n o .tim e s,n o .tim es)) inv.sigm a2<-kronecker(diag(nrow (data)),inv.v2)

m ean2<-/i*ones+sequence*sequence.col+

p eriodl*periodl.coI+ period2*period2.col+ period3*period3.col+ (periodH -period2+ period3)*period4.col+

r* tre a tm e n t.c o l+ r* c a rry l* c a rry l.c o l

Iikelihood2.value<-3*nrow (data)*Iog(a)+nrow (data)*log(a+4*b) + (t(response.col-m ean2)%*%inv.sigma2% *% (response.col-m ean2))

return(likelihood2. value)

}

Estiamtion process

p2 < -var.param eters.old[2]

m eanlikelihood.old<-m ean.estim ation(m ean.param eters.old)

m ean .n o n lin ear.list< -n lm in b (start= m ean .p aram eters.o ld , objective= m ean.estim ation, low er=c(-Inf,-Inf,-Inf,-Inf,-Inf,-Inf,0), u p p e r= c ( Inf, Inf, Inf, Inf, Inf,Inf,l))

m ean.param eters.new < -m ean.nonlinear.listS param eters m eanlikelihood.new <-m ean.nonlinear.list$objective

while (abs(m eanlikelihood.new -m eanlikelihood.old)>epsilon)

{

pL < -m ean.param eters.new [l]; sequence < -m ean.param eters.new [2]

periodl<-m ean.param eters.new [3]; period2<-m ean.param eters.new [4] periods <-m ean.param eters.new [5]

T <-m ean.param eters.new [6]; carryl< -m ean.param eters.new [7]

v ar.n o n lin ear.list< -n lm in b(start= v ar.p aram eters.o ld, o bjective= var.estim ation, low er=c(0,0), upper= c(Inf,Inf))

v ar.param eters.new < -var.nonlinear.list$param eters m ean.par am eters.old<-m ean.param eters.new v ar.param eters.old< -var.param eters.new m eanlikelihood.old<-m eanlikelihood.new

pi <-var.param eters.old[l]; p2 < -var.param eters.old[2]

m ean .n o n lin ear.list< -n lm in b (start= m ean .p aram eters.o ld , objective= m ean.estim ation, Iower=c(-Inf,-Inf,-Inf,-Inf,-Inf,-Inf,0), u p p er= c( Inf, Inf, Inf, Inf, Inf, In f,l))

m ean.param eters.new < -m ean.nonlinear.list$param eters m eanlikelihood.new <-m ean.nonlinear.list$objective

}

/z.final<-m ean.param eters.new [l]

sequence.final<-m ean.param eters.new [2]

periodl.final<-m ean.param eters.new [3] period2.final<-m ean.param eters.new [4] periods.final<-m ean.param eters.new [5] r.final< -m ean.param eters.new [6]

carryl.final<-m ean.param eters.new [7]

0.fin a l< -r .final*carry 1 .final P i.final<-var.param eters.new [l] p2 .final<-var.param eters.new [2]

m ean.final<-/i.final*ones+sequence.final*sequence.col+

periodl.final*periodl.col+period2.final*period2.col+ period3.final*period3.col+ (p erio d l .finaI+period2.final+period3.final) *period4.col+

r.final*treatm ent.col+ T .final*carryl.final*carryl.col

inv.varco v .in d < -(l/p i.fin al)* (d iag (n o .tim es)-

(p2-fin al/(p i.fin al+4*p2-final))*m atrix(l,no.tim es,no.tim es))

inv.sigm a.all<-kronecker(diag(nrow (data)),inv.varcov.ind) derivative.m atrix<-cbind(ones,sequence.col,

periodl.col+period4.col,period2.col+period4.col,period3.col+ period4.col, treatm en t.co l+ carry l.fin al* carry l.co l,r.fin al* carry l.co l)

corr.fixed.effects<-solve(t(derivative.m atrix)% *% inv.sigma.all%*% derivative.m atrix) r.s e < -sq ro o t(t(c (0,0,0,0,0, l ,0))%*%corr.fixed.effects%*%c(0,0,0,0,0,1,0))

^ .se< -sq ro o t(t(c(0,0,0,0,0,carryl.final,r.final))% *% corr.fixed.effects% *%

c(0,0,0,0,0,carryl.final,r.final))

11.T < -r.fin a l-q t(0.975,(no.tim es*no.subj-no.param ))*r.se u l.r < -r.fin al+ q t(0 .9 7 5 ,(n o .tim es* n o .sub j-no .p aram ))* r.se

W.6 <-0.final-qt(O .975,(no.tim es*no.subj-no.param ))*0.se ul.0 <-0.final+qt(O .975,(no.tim es*no.subj-no.param ))*0.se Sim ilar code has been w ritten for fitting models M2 and M il.

3.10.5

B U G S cod e for th e non-linear B ayesian analysis