Modelo não linear

 

# dados simulados

resposta=c(12,15,19,18,25,29,36,41,56,45,50,55,46,52,56,46,52,57,46,52,57,46,52,57)
blocos=rep(c("a","b","c"),8)
tratamentos=c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8)
dados=data.frame(tratamentos,blocos,resposta)
dados
 

# observação do efeito de blocos no gráfico

require(lattice)
xyplot(resposta~tratamentos, groups=blocos, data=dados, type="o")
 

# neste caso é intreressante "retirar" a variação de blocos ou indivíduo do resíduo

 

# função linear

fl=function(a,b,x)a+b*x
 

# função linear com platô

fp=function(a,b,x,pc){a + b * (x - pc) * (x <= pc)}
 

# função logística

flog=function(a,b,c,x){a*(1+b*(exp(-c*x)))^-1}
 

# modelos

da <- groupedData(resposta~tratamentos|blocos, data=dados)
 
m1=nlme(resposta~fl(a,b,tratamentos),data=da, random=a~1, fixed=a+b~1, start=c(a=1,b=2))
m2=nlme(resposta~fp(a,b,tratamentos,pc),data=da, random=a~1, fixed=a+b+pc~1, start=c(a=20,b=5,pc=4))
m3=nlme(resposta~flog(a,b,c,tratamentos),data=da, random=a~1, fixed=a+b+c~1, start=c(a=50,b=2,c=0.5))
 

# modelo de melhor ajuste (menor BIC) é o linear platô, seguido pelo logístico e linear

BIC(m1,m2,m3)