Thiago,
Você tem que debruçar-se mais sobre os seus dados/modelos. Pega o comando e vai testando modelo, inventa formas funcionais, não fique preso a modelos de páginas de livros. Eu ajustei outro modelo e observei um melhor ajuste. Ainda assim há falta de ajuste com relação ao modelo de médias, veja com relação ao modelo de médias, que diga-se, usa todos os graus de liberdade possíveis e não permite extrapolação. O modelo de médias é sem dúvida o melhor modelo em termos de ajuste, vai dá melhor R2 que qualquer outro, mas não dá para extrapolar. Já o não linear permite isso.
Causas da falta de ajuste:
* o modelo não ser mesmo o correto para representar, ser uma versão aproximada de um modelo com mais parâmetros que traduzam aquela forma dos dados;
* haver uma causa de variação associada a cada UR que tá deslocando todas as repetições de uma UR, coisa que acontece com frequência, por exemplo se você medisse todas as repetições da UR_i em um dia, da UR_j no dia seguinte, estaria aí o efeito do dia, ou da pessoa que faz as determinações no laboratório, ou do local de onde vieram, ou do aparelho usado, das condições do momento.
O que fazer:
* se o foco são as estimativas dos parâmetros, usar o modelo como está;
* se o foco é apenas fazer predição, usar uma função suave da UR, lowess, spline, etc, ou uma linear segmentada;
* tentar uma função com mais parâmetros para alcançar mais o comportamento dos dados;
Em todos os casos, você vai ter que sentar e espremer possibilidades sobre isso, fazer o seu trabalho.
#-----------------------------------------------------------------------------
da <- read.table("http://www.leg.ufpr.br/~walmes/docs/umi.txt", header=TRUE)
str(da)
plot(UEQ~UR, da)
with(da, tapply(UEQ, UR, length))
A <- 5
B <- 0.01 # mudar até obter bons chutes
C <- 0.085 # mudar até obter bons chutes
plot(UEQ~UR, da)
curve(A+B*exp(C*x), add=TRUE)
n0 <- nls(UEQ~A+B*exp(C*UR), data=da,
start=list(A=A, B=B, C=C))
summary(n0)
A <- coef(n0)["A"]
B <- coef(n0)["B"]
C <- coef(n0)["C"]
plot(UEQ~UR, da)
curve(A+B*exp(C*x), add=TRUE)
abline(v=c(40,50,60), col=3) # causas da falta de ajuste
m0 <- lm(UEQ~factor(UR), da)
anova(n0, m0)
qqnorm(residuals(n0))
plot(residuals(n0)~fitted(n0))
#-----------------------------------------------------------------------------
À disposição.
Walmes.
==========================================================================
Walmes Marques Zeviani
LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573
VoIP: (3361 3600) 1053 1173
e-mail: walmes@ufpr.br
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================