[R-br] Teste de independência dos resíduos

Walmes Zeviani walmeszeviani em gmail.com
Segunda Outubro 31 12:40:35 BRST 2016


Maurício,

O primeiro gráfico até pode mostrar não independência quando ela é induzida
por falta de ajuste. O código abaixo ilustra minha afirmação.

library(lattice)
library(latticeExtra)

data(wtloss, package = "MASS")
str(wtloss)

xyplot(Weight ~ Days, data = wtloss)

# Ajuste de um modelo linear.
m0 <- lm(Weight ~ Days, data = wtloss)

# Indica falta de ajuste e não independência.
plot(m0, which = 1)

# Mas eles exibem uma não independência devido à falta de ajuste.
plot(acf(residuals(m0)))

# Ajuste do modelo quadrático.
m1 <- lm(Weight ~ poly(Days, degree = 2), data = wtloss)

# Ausência de falta de ajuste.
plot(m1, which = 1)

# E sem correlação seria.
plot(acf(residuals(m1)))

start <- list(th0 = 185, th1 = -100, th2 = 140)
with(start, {
    plot(Weight ~ Days, data = wtloss)
    curve(th0 + th1 * (1 - 2^(-Days/th2)),
          xname = "Days",
          add = TRUE,
          col = 2)
})

# Ajuste do modelo não linear.
m2 <- nls(Weight ~ th0 + th1 * (1 - 2^(-Days/th2)),
          data = wtloss,
          start = start)

with(as.list(coef(m2)), {
    plot(Weight ~ Days, data = wtloss)
    curve(th0 + th1 * (1 - 2^(-Days/th2)),
          xname = "Days",
          add = TRUE,
          col = 2)
})

# Valores preditos de cada modelo.
pred <- with(wtloss, data.frame(Days = seq(min(Days),
                                           max(Days),
                                           length.out = 30)))
pred$y0 <- predict(m0, newdata = pred)
pred$y1 <- predict(m1, newdata = pred)
pred$y2 <- predict(m2, newdata = pred)

# Resíduos e valores ajustados de cada modelo.
L <- lapply(list(m0, m1, m2),
            function(m) {
                data.frame(r = residuals(m), f = fitted(m))
            })
names(L) <- 0:2
rf <- plyr::ldply(L, .id = "model")

# Gráfico da curva predita com os valores observados.
p1 <- xyplot(y0 + y1 + y2 ~ Days,
             outer = TRUE,
             type = "l",
             layout = c(NA, 1),
             data = pred) +
    layer(panel.points(x = wtloss$Days, y = wtloss$Weight))

# Gráfico dos resíduos vs valores ajustados.
p2 <- xyplot(r ~ f | model,
             data = rf,
             layout = c(NA, 1),
             type = c("p", "smooth"))

# Todos numa mesma "página".
c(p1, p2, layout = c(NA, 2))


À disposição.
Walmes.
​
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20161031/ca14be41/attachment.html>


Mais detalhes sobre a lista de discussão R-br