[R-br] RES: Ajustes de modelos não-lineares em gases in vitro
Mauro Sznelwar
sznelwar em uol.com.br
Domingo Outubro 25 22:29:57 BRST 2015
Eu tentei rodar e não reconheceu a variável ‘x’, não está no seu data set.
Olá,
eu gostaria de saber se é possível usar estruturas de correlação nos resíduos quando ajusto modelos não-lineares em mensurações de dados de produção de gases in vitro (caracterizado por mensurações acumuladas ao longo do tempo) e sem repetição.
Breve descrição do banco de dados de gases in vitro: o experimento foi conduzido em frascos de (125 mL) que contem fruído ruminal com feno de alfalfa. Esses frascos são acoplados aos sensores que medem pressão dos gases no interior dos frascos com o conversor digital que registra automaticamente a cada 5 minutos, durante o período de 48 horas. As mensurações dos gases são, portanto acumuladas ao longo do tempo. Tenho quatro compostos (amostras) diferentes que chamei de (y, y2, y3 e y4), em que cada uma amostra contem 577 mensurações ao longo do tempo (x) que é dado em horas.
Eu preciso ajustar modelos não-lineares para cada amostra (exponencial, logístico e logístico bicompartimental). O modelo logístico bicompartimental foi o que melhor se ajustou sem usar estrutruras de correlação, porém, a análise residual possuí uma forte dependência (visto que os dados são acumulados, ou seja, a mensuração no tempo (t+1) depende da mensuração anterior do tempo t.
Então, eu teria que entrar com estruturas de correlações no modelo logístico bicompartimental para melhorar a análise residual?
Eu tentei algumas estruturas usando o argumento “correlation”, da função gnls. No quadro abaixo segue o seguinte resumo das estruturas inseridas no modelo, com os respectivos resultados gerados pela FAC ou os erros retornados pelo software R.
modelo
correlation
Erros
FAC - residual
M1
sem estrutrura de correlação
Sem erro
Tendência : possivelmente independência e heterogeneidade
M2
AR1: corAR1()
Erro: step halving factor reduced below minimum in NLS step
-
M3
AR1: corAR1(form=~x)
Sem erro
Tendência : possivelmente independência e heterogeneidade
M4
AR2: corAR1(p=2, q=0)
Coefficient matrix not invertible
-
M5
ARIMA: corARMA(p=2,q=1)
step halving factor reduced below minimum in NLS step
-
M6
ARIMA: corARMA(p=2,q=2)
Coefficient matrix not invertible
-
M7
ARIMA: corARMA(p=3,q=1)
Coefficient matrix not invertible
-
M8
AR(): corAR1(form=~1)
Erro: step halving factor reduced below minimum in NLS step
-
Observação: Eu fiz a análise usando a metodologia de séries temporais (modelo linear não estacionário – com uma diferença d=1) e a FAC e FACP mostraram que os resíduos eram ruído branco, como nos modelos ARIMA(p=1, d=1, q=0), ARIMA(p=2, d=1, q=0) e ARIMA(p=3, d=1, q=0). Seria possível ajustar modelos não-lineares (logístico bicompartimental) usando estruturas de correlações como o ARIMA?
Os dados e o script seguem em anexo com todos os modelos que tentei ajustar (somente para uma amostra, ou seja, correspondente as colunas chamadas de y e x). Agradeço se puderem me dar uma orientação.
rm(list=ls(all=TRUE))
#pacotes necessários para a análise.
require(manipulate)
require(nlstools)
require(car)
require(nlme)
require(lmtest)
# modelos estudados
#a * (1 - exp(-b * (t - c))) # modelo exponencial
#a /(1+exp(2+4*b*(c-t))) # modelo logistico
#a/(1+exp(2+4*b*(c-t)))+d/(1+exp(2+4*e*(c-t))) # modelo logistico 2 pool
#-----------------------------------------------------------------------
setwd('E:\\autoregressivo_modelo')
gas01<-read.csv("gas.csv",sep = ",", header = TRUE)
gas01
head(gas01)
attach(gas01)
t=Time/60 # para deixar o tempo em horas
dim(gas01)
gas=cbind(gas01,t)
names(gas) <- c("Time","y","y2","y3", "y4", "x") # variáveis que quero ajustar y (variavel dependente gases) e x o tempo em horas
head(gas)
dim(gas)
attach(gas)
#===================================================================
# Ajuste usando o gnls
#Ajuste do modelo exponencial -lote I considerando os erros independentes
mod1 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas, start=c(a=1.1179, b=0.0562, c=-9.5923, d=0.367, e=0.0226))
summary(mod1) # quadro de estimativas
R2(residuals(mod1), gas$y)
residuosnI<-summary(mod1)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod1)
hist(residuosnI)
# Ajuste do modelo Logístico 2 pool considerando - AR()
mod2 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas,correlation=corAR1(),
start=c(a=0.78, b=0.06, c=-5.5923, d=0.367, e=0.0226))
summary(mod2) # quadro de estimativas
R2(residuals(mod2), gas$y)
residuosnI<-summary(mod2)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod2)
hist(residuosnI)
plot(x,mod2$residuals)
plot(mod2)
# ------------------------------------------------------------------------
# Ajuste do modelo Logístico 2 pool considerando - AR()
mod3 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas,correlation=corAR1(form=~x),
start=c(a=0.78, b=0.06, c=-5.5923, d=0.367, e=0.0226))
summary(mod3) # quadro de estimativas
R2(residuals(mod3), gas$y)
residuosnI<-summary(mod3)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod3)
hist(residuosnI)
plot(x,mod3$residuals)
plot( ACF(mod3, maxLag =24), alpha = 0.05 )
# ------------------------------------------------------------------------
# Ajuste do modelo Logístico 2 pool considerando - AR2()
mod4 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas,correlation=corARMA(p=2,q=0),
start=c(a=0.78, b=0.06, c=-5.5923, d=0.367, e=0.0226))
summary(mod4) # quadro de estimativas
R2(residuals(mod4), gas$y)
residuosnI<-summary(mod4)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod4)
hist(residuosnI)
plot( ACF(mod4, maxLag =24), alpha = 0.05 )
# ------------------------------------------------------------------------
# Ajuste do modelo Logístico 2 pool considerando - ARIMA(p=2,q=1)
mod5 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas,correlation=corARMA(p=2,q=1),
start=c(a=1.1179, b=0.0562, c=-9.5923, d=0.367, e=0.0226))
summary(mod5) # quadro de estimativas
R2(residuals(mod5), gas$y)
residuosnI<-summary(mod5)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod5)
hist(residuosnI)
plot( ACF(mod5, maxLag =24), alpha = 0.05 )
# ------------------------------------------------------------------------
# Ajuste do modelo Logístico 2 pool considerando - ARIMA(p=2,q=2)
mod6 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas,correlation=corARMA(p=2,q=2),
start=c(a=1.1179, b=0.0562, c=-9.5923, d=0.367, e=0.0226))
summary(mod6) # quadro de estimativas
R2(residuals(mod6), gas$y)
residuosnI<-summary(mod6)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod6)
hist(residuosnI)
plot( ACF(mod6, maxLag =24), alpha = 0.05 )
# ------------------------------------------------------------------------
# Ajuste do modelo Logístico 2 pool considerando - ARIMA(p=3,q=1)
mod7 <- gnls(y ~ a/(1+exp(2+4*b*(c-x)))+d/(1+exp(2+4*e*(c-x))),
data=gas,correlation=corARMA(p=3,q=1),
start=c(a=1.1179, b=0.0562, c=-9.5923, d=0.367, e=0.0226))
summary(mod7) # quadro de estimativas
R2(residuals(mod7), gas$y)
residuosnI<-summary(mod7)$resid
shapiro.test(residuosnI)
ks.test(rnorm(577),residuosnI)
plot(mod6)
hist(residuosnI)
plot( ACF(mod7, maxLag =24), alpha = 0.05 )
Agradeço desde já,
Adriele.
--
Adriele Giaretta Biase.
Mestre em Estatística e Experimentação Agropecuária - UFLA.
Doutoranda em Estatística e Experimentação Agronômica - ESALQ/ USP
Contato: (19) 8861-0619.
---
Este email foi escaneado pelo Avast antivírus.
https://www.avast.com/antivirus
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151025/d63a5a47/attachment.html>
Mais detalhes sobre a lista de discussão R-br