Modelo linear
# primeiro vamos baixar o conjunto de dados utilizado no exemplo, baixando direto da web
dados<-read.table("https://19e31fa08e.cbaul-cdnwnd.com/fd58c287e8dcea635dc0088984f5a026/200000019-4d5374e4d0/suinos.txt",header=TRUE, sep="", dec=".")
# vamos carregar o pacote lattice e usar a função xyplot()
require(lattice)
# observe que a medida que o nível de proteína aumenta a conversão alimentar diminui
# note que cada leitegada tem valores bem distintos de conversão
xyplot(Conversao.Alimentar~Nivel.de.Proteina, group=Leitegada, data=dados, type="o")
# sabe-se que o efeito de leitegada existe e deve ser retirado da variação residual
# via modelo fixo pode-se retirar o efeito de leitegada analisando em "blocos ao acaso"
require(easyanova)
resultado1=ea1(dados, design=2)
resultado1
# via modelo misto pode-se retirar o efeito de leitegada incluindo a mesma como efeito aleatório
require(lme4)
modelo=lmer(Conversao.Alimentar~as.factor(Nivel.de.Proteina)+(1|Leitegada), data=dados)
# observe que o resultado do teste F foi o mesmo da análise em modelo fixo
anova(modelo)
# para obter as médias criamos um modelo sem o intercepto
modelo2=lmer(Conversao.Alimentar~-1+as.factor(Nivel.de.Proteina)+(1|Leitegada), data=dados)
fixef(modelo2)
# assim, tando no modelo fixo quanto no misto tem-se o resultado mais adequado quanto retirado o efeito da leitegada
# qual a melhor opção? Modelo misto ou fixo? Neste caso o resultado é o mesmo e usar modelo fixo é mais prático, de solução matemática mais fácil, apenas esta vantagem. Um modelo misto pode ter algumas vantagens em experimentos maiores e mais complexos, com dados perdidos e muitos efeitos no modelo. Também utiliza-se modelo misto quando se pretende fazer estimativas de componentes de variância.
# vamos considerar nível de proteína como variável quantitativa e avaliar o experimento em um modelo de regressão
# uma maneira prática de fazer este estudo seria utilizando a função pr2() do pacote epr
pr2(dados, design=2)
# ou então via modelo misto
# modelo linear
modelor1=lmer(Conversao.Alimentar~Nivel.de.Proteina+(1|Leitegada), data=dados)
modelor1
# modelo quadrático
modelor2=lmer(Conversao.Alimentar~Nivel.de.Proteina+I(Nivel.de.Proteina^2)+(1|Leitegada), data=dados)
modelor2