Calibração de dados preenchidos

Olá pessoal da lista, utilizei um pacote chamado mtsdi para preenchimento de dados em séries temporais. Gostaria de saber como posso proceder para fazer a calibração destes preenchimentos, por exemplo, eu tiro da minha série um período amostrado e com dados vizinhos correlacionados eu faço o preenchimento deste período assim eu comparo o observado com o preenchido, até aí tudo bem, mas eu gostaria de fazer uma calibração neste preenchimento e assim utilizá-la para os dados que realmente serão preenchidos. Segue um exemplo hipotético do uso do pacote. library(mtsdi) library(hydroGOF) x0 <- rnorm(500) x1 <- rnorm(500) x2 <- rnorm(500) x3 <- rnorm(500) x4 <- c(x3[1:299],rep(NA,tim=400-299),x3[401:500]) x <- data.frame(x0,x1,x2,x4) f <- ~x0+x1+x2+x4 i <- mnimput(f,x,eps=1e-3,ts=T,log=F, method="spline",sp.control=list(df=c(7,7,7,7))) imput <- data.frame(predict(i)) (pred <- imput$x4[300:400]) (obs <- x3[300:400]) ggof(pred,obs)

Caro Wagner, boa tarde! Não tenho experiência com esse pacote, mas tentei aplicar o procedimento que utilizo pra avaliar o preenchimento em outras situações. O dataset é restrito, mas deve servir pra testar... ### <code r> require(mtsdi) data(miss) notNA <- which(!is.na(miss), arr.ind=T) ### valores presentes set.seed(333); sel.pos <- notNA[sample(nrow(notNA), 20),] ### reservando 20 valores sel.obs <- miss[sel.pos] ### valores reservados miss2 <- miss miss2[sel.pos] <- NA ### "exclui" valores reservados f <- ~c31+c32+c33+c34+c35 i <- mnimput(f,miss2,eps=1e-3,ts=TRUE, method="spline",sp.control=list(df=c(7,7,7,7,7))) summary(i) imput <- data.frame(predict(i)) sel.pre <- imput[sel.pos] ### predição referente aos 20 valores reservados cbind(sel.pre, sel.obs) ### comparação library(hydroGOF) ggof(sel.pre,sel.obs) ### </code> [image: Imagem inline 1] Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Olá Éder, entendi até aí eu me dou bem, o problema é que queria fazer uma calibração nesse preenchimento e usar essa calibração para os dados que realmente serão preenchidos, tentei criar uma função de aproximação approxfun(sim,obs), mas não obtive resultados melhores, atualmente estou estudando o hydroPSO para ver se consigo algo. Obrigado pela ajuda Abraço Em 4 de maio de 2015 18:13, Éder Comunello <comunello.eder@gmail.com> escreveu:
Caro Wagner, boa tarde!
Não tenho experiência com esse pacote, mas tentei aplicar o procedimento que utilizo pra avaliar o preenchimento em outras situações. O dataset é restrito, mas deve servir pra testar...
### <code r> require(mtsdi) data(miss) notNA <- which(!is.na(miss), arr.ind=T) ### valores presentes set.seed(333); sel.pos <- notNA[sample(nrow(notNA), 20),] ### reservando 20 valores sel.obs <- miss[sel.pos] ### valores reservados
miss2 <- miss miss2[sel.pos] <- NA ### "exclui" valores reservados f <- ~c31+c32+c33+c34+c35 i <- mnimput(f,miss2,eps=1e-3,ts=TRUE, method="spline",sp.control=list(df=c(7,7,7,7,7))) summary(i) imput <- data.frame(predict(i)) sel.pre <- imput[sel.pos] ### predição referente aos 20 valores reservados
cbind(sel.pre, sel.obs) ### comparação library(hydroGOF) ggof(sel.pre,sel.obs) ### </code>
[image: Imagem inline 1]
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Wagner, bom dia! Não entendi exatamente o que você está buscando. Teria dados pra um exemplo mais prático? Por exemplo, você quer completar dados de uma série de chuva em particular e dispõe dados de quatro estações próximas, assumindo algum grau de correlação/covariância entre elas? Sua preocupação é saber quão "boa" foi a predição ou algo assim? Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Olá Éder vou tentar esclarecer com seu exemplo, minhas modificações estão em negrito. require(mtsdi) data(miss) notNA <- which(!is.na(miss), arr.ind=T) ### valores presentes set.seed(333); sel.pos <- notNA[sample(nrow(notNA), 20),] ### reservando 20 valores sel.obs <- miss[sel.pos] ### valores reservados miss2 <- miss miss2[sel.pos] <- NA ### "exclui" valores reservados f <- ~c31+c32+c33+c34+c35 i <- mnimput(f,miss2,eps=1e-3,ts=TRUE, method="spline",sp.control=list(df=c(7,7,7,7,7))) summary(i) imput <- data.frame(predict(i)) sel.pre <- imput[sel.pos] ### predição referente aos 20 valores reservados cbind(sel.pre, sel.obs) ### comparação library(hydroGOF) ggof(sel.pre,sel.obs) *fun.cal <- splinefun(sel.pre,sel.obs) ## função para calibrarsel.pre.cal <- fun.cal(sel.obs)* *## calcular valores preditos após calibração* *## Assim usaria a função fun.cal para calibrar outros valores imputados do mesmo banco de dados.* *Entretanto, não foi útil, pois quando uso para outros valores imputados houve aumento no erro* Em 5 de maio de 2015 10:40, Éder Comunello <comunello.eder@gmail.com> escreveu:
Wagner, bom dia!
Não entendi exatamente o que você está buscando. Teria dados pra um exemplo mais prático?
Por exemplo, você quer completar dados de uma série de chuva em particular e dispõe dados de quatro estações próximas, assumindo algum grau de correlação/covariância entre elas? Sua preocupação é saber quão "boa" foi a predição ou algo assim?
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Wagner, boa tarde! Eu não recomendo usar splinefun() porque a calibração do modelo feita na execução de mnimput() é bem mais sofisticada. O objeto imput é o próprio objeto miss2 com as falhas preenchidas com base na covariância e comportamento temporal das séries. Já é o produto final, não precisa ajustar por splinefun(). Se você fizer imput-miss2 verá que a diferença é 0 para todos valores iniciais e um novo valor será imputado para todos os casos onde havia NA. O procedimento que postei faz uma avaliação geral da qualidade do ajuste pras 5 séries porque exige menor quantidade de pontos de teste. Daria pra fazer uma avaliação de cada série, mas teria que reservar uma quantidade significativa de pontos de cada série, o que pode impactar no modelo. Além do mais, se você utilizar splinefun() pra predizer valores utilizados na calibração, vai retornar os próprios valores utilizados... fun <- splinefun(sel.obs, sel.pre) all.equal(fun(sel.obs), sel.pre) ### [1] TRUE Notar que: args(splinefun) ### function (x, y = NULL, method = c("fmm", "periodic", "natural", ### "monoH.FC", "hyman"), ties = mean) A forma que segue é coerente, mas os resultados não são tão animadores quanto os retornados por mtsdi::mnimput() fun2 <- splinefun(miss[notNA]) ### ajusta uma spline em função dos dados disponíveis sel.pre2 <- fun2(sel.obs) ### usa a splinefun pra estimar os dados reservados ggof(sel.pre2,sel.obs) ### avalia predições comparando com dados reservados ("verdade") [image: Imagem inline 1] Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W] Em 5 de maio de 2015 13:57, Wagner Wolff <wwolff@usp.br> escreveu:
Olá Éder vou tentar esclarecer com seu exemplo, minhas modificações estão em negrito.
require(mtsdi) data(miss) notNA <- which(!is.na(miss), arr.ind=T) ### valores presentes set.seed(333); sel.pos <- notNA[sample(nrow(notNA), 20),] ### reservando 20 valores sel.obs <- miss[sel.pos] ### valores reservados
miss2 <- miss miss2[sel.pos] <- NA ### "exclui" valores reservados f <- ~c31+c32+c33+c34+c35 i <- mnimput(f,miss2,eps=1e-3,ts=TRUE, method="spline",sp.control=list(df=c(7,7,7,7,7))) summary(i) imput <- data.frame(predict(i)) sel.pre <- imput[sel.pos] ### predição referente aos 20 valores reservados
cbind(sel.pre, sel.obs) ### comparação library(hydroGOF) ggof(sel.pre,sel.obs)
*fun.cal <- splinefun(sel.pre,sel.obs) ## função para calibrarsel.pre.cal <- fun.cal(sel.obs)*
*## calcular valores preditos após calibração*
*## Assim usaria a função fun.cal para calibrar outros valores imputados do mesmo banco de dados.*
*Entretanto, não foi útil, pois quando uso para outros valores imputados houve aumento no erro*
Em 5 de maio de 2015 10:40, Éder Comunello <comunello.eder@gmail.com> escreveu:
Wagner, bom dia!
Não entendi exatamente o que você está buscando. Teria dados pra um exemplo mais prático?
Por exemplo, você quer completar dados de uma série de chuva em particular e dispõe dados de quatro estações próximas, assumindo algum grau de correlação/covariância entre elas? Sua preocupação é saber quão "boa" foi a predição ou algo assim?
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Entendi, realmente não deu certo essa minha ideia, vou proceder com o mtsdi. Obrigado pela ajuda Éder. Abraço Em 5 de maio de 2015 16:53, Éder Comunello <comunello.eder@gmail.com> escreveu:
Wagner, boa tarde!
Eu não recomendo usar splinefun() porque a calibração do modelo feita na execução de mnimput() é bem mais sofisticada. O objeto imput é o próprio objeto miss2 com as falhas preenchidas com base na covariância e comportamento temporal das séries. Já é o produto final, não precisa ajustar por splinefun().
Se você fizer imput-miss2 verá que a diferença é 0 para todos valores iniciais e um novo valor será imputado para todos os casos onde havia NA.
O procedimento que postei faz uma avaliação geral da qualidade do ajuste pras 5 séries porque exige menor quantidade de pontos de teste. Daria pra fazer uma avaliação de cada série, mas teria que reservar uma quantidade significativa de pontos de cada série, o que pode impactar no modelo.
Além do mais, se você utilizar splinefun() pra predizer valores utilizados na calibração, vai retornar os próprios valores utilizados... fun <- splinefun(sel.obs, sel.pre) all.equal(fun(sel.obs), sel.pre) ### [1] TRUE
Notar que: args(splinefun) ### function (x, y = NULL, method = c("fmm", "periodic", "natural", ### "monoH.FC", "hyman"), ties = mean)
A forma que segue é coerente, mas os resultados não são tão animadores quanto os retornados por mtsdi::mnimput() fun2 <- splinefun(miss[notNA]) ### ajusta uma spline em função dos dados disponíveis sel.pre2 <- fun2(sel.obs) ### usa a splinefun pra estimar os dados reservados ggof(sel.pre2,sel.obs) ### avalia predições comparando com dados reservados ("verdade")
[image: Imagem inline 1]
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
Em 5 de maio de 2015 13:57, Wagner Wolff <wwolff@usp.br> escreveu:
Olá Éder vou tentar esclarecer com seu exemplo, minhas modificações estão em negrito.
require(mtsdi) data(miss) notNA <- which(!is.na(miss), arr.ind=T) ### valores presentes set.seed(333); sel.pos <- notNA[sample(nrow(notNA), 20),] ### reservando 20 valores sel.obs <- miss[sel.pos] ### valores reservados
miss2 <- miss miss2[sel.pos] <- NA ### "exclui" valores reservados f <- ~c31+c32+c33+c34+c35 i <- mnimput(f,miss2,eps=1e-3,ts=TRUE, method="spline",sp.control=list(df=c(7,7,7,7,7))) summary(i) imput <- data.frame(predict(i)) sel.pre <- imput[sel.pos] ### predição referente aos 20 valores reservados
cbind(sel.pre, sel.obs) ### comparação library(hydroGOF) ggof(sel.pre,sel.obs)
*fun.cal <- splinefun(sel.pre,sel.obs) ## função para calibrarsel.pre.cal <- fun.cal(sel.obs)*
*## calcular valores preditos após calibração*
*## Assim usaria a função fun.cal para calibrar outros valores imputados do mesmo banco de dados.*
*Entretanto, não foi útil, pois quando uso para outros valores imputados houve aumento no erro*
Em 5 de maio de 2015 10:40, Éder Comunello <comunello.eder@gmail.com> escreveu:
Wagner, bom dia!
Não entendi exatamente o que você está buscando. Teria dados pra um exemplo mais prático?
Por exemplo, você quer completar dados de uma série de chuva em particular e dispõe dados de quatro estações próximas, assumindo algum grau de correlação/covariância entre elas? Sua preocupação é saber quão "boa" foi a predição ou algo assim?
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Wagner, Nesse trabalho, do qual faz parte o colega de lista Elias Krainski, dá pra ter uma ideia de métodos e pacotes a utilizar. http://www.sbagro.org.br/anais_congresso_2011/cba2011/trabalhos/04/cba04_382... Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]

Olá Éder conheço o trabalho, na verdade me baseei nele para usar o mtsdi, pretendo fazer um parecido, só que com dados de vazão Obrigado Em 7 de maio de 2015 12:46, Éder Comunello <comunello.eder@gmail.com> escreveu:
Wagner,
Nesse trabalho, do qual faz parte o colega de lista Elias Krainski, dá pra ter uma ideia de métodos e pacotes a utilizar.
http://www.sbagro.org.br/anais_congresso_2011/cba2011/trabalhos/04/cba04_382...
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
Wagner Wolff
-
Éder Comunello