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)