[R-br] Ajuste de modelo não linear

Graciliano ggaldino em gmail.com
Segunda Outubro 17 21:22:00 BRST 2016


Olá Dr. Walmes, obrigado por compartilhar esse script do rpanel, muito legal! Mas ó, não consegui achar a função  as.lm no caminho indicado. Daria para anexa-la aqui?

Att.

-----Mensagem Original-----
De: "Walmes Zeviani via R-br" <r-br em listas.c3sl.ufpr.br>
Enviada em: ‎17/‎10/‎2016 08:33
Para: "Andre Oliveira" <andreolsouza em yahoo.com.br>; "a lista Brasileira oficial de discussão do programa R." <r-br em listas.c3sl.ufpr.br>
Assunto: Re: [R-br] Ajuste de modelo não linear

André,

Apenas para complementar a solução do Marcus, encaminho o código que faz uso de uma função com recursos do pacote rpanel para ajuste de modelo não linear de forma interativa. Essa função (na versão antiga) gerou o GIF que fica na capa da página da lista no Nabble (rs). O uso da interface não elimina o problema do chute inicial, só diminui porque ao invés de passar um valor você passa um intervalo e calibra visualmente. Além disso, tem a parte de análise de resíduos.

Brasil <- c(13.63, 13.93, 14.09, 15.12, 15.98, 16.08, 16.45, 17.96,
            18.83, 19.28, 19.18, 20.89, 21.87, 21.85, 23.43, 25.38,
            25.64, 26.99, 28.68, 31.92, 32.92, 33.32, 34.37, 34.99,
            36.08, 37.72, 40.41, 42.81, 44.18, 44.91, 48.97, 51.59,
            53.44, 56.49, 62.2, 66.49, 67.01, 68.41, 74.14, 77.58,
            80.39, 85.71, 89.58, 96.3, 100.9, 102.8, 107.69, 111.51,
            111.42, 116.59, 118.85, 121.42, 127.53)
anos <- 1961:2013

anos2 <- anos - min(anos) + 1

# Calibrando o chute inicial (por tentativa-erro faça aproximar).
start <- list(a = 12, b = 1.049)
plot(Brasil ~ anos2)
with(start,
     curve(a * (b^(anos2)),
           xname = "anos2",
           add = TRUE,
           col = 2))

fit <- nls(Brasil ~ a * (b^(anos2)),
           start = start)

# Verificando o ajuste.
plot(Brasil ~ anos2)
with(as.list(coef(fit)),
     curve(a * (b^(anos2)),
           xname = "anos2",
           add = TRUE,
           col = 4))

# rp.nls: função que usa recursos no pacote rpanel para ajuste de
# modelos de regressão não linear.
source(paste0("https://raw.githubusercontent.com/walmes/",
              "wzRfun/master/R/rp.nls.R"))
library(rpanel)

fit <- rp.nls(Brasil ~ a * (b^(anos2)),
              data = data.frame(Brasil = Brasil, anos2 = anos2),
              start = list(a = c(5, 20),
                           b = c(0.95, 1.5)))
summary(fit)

# Função que era do pacote nls2() mas foi removida (guardei o fonte).
source("~/Dropbox/CursoR/GeneticaEsalq/as.lm.R")
library(nls2)

mit <- as.lm(fit)

# Diagnóstico do modelo.
par(mfrow = c(2, 2))
plot(mit)
layout(1)

# ! Relação média variância !

# Linear!
plot(log(Brasil) ~ anos2)

À disposição.

Walmes.



​
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20161017/446d3ff8/attachment.html>


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