Plotar várias curvas de densidades num único objeto gráfico

Caro, estou com um problema para plotar densidades de distribuição posterior e talvez alguém aqui já tenha resolvido isso de alguma maneira. Tenho um objeto de dados de classe mcmc.list com vários paramentros, entre os quais eu gostaria de sobrepor três distribuições posteriores como abaixo. Do jeito que está, contudo, não funciona porque a cada comando plot o R mantem a curva no centro e altera as escalas. Tem alguma forma de plotar essas densidades conservando as posições delas originais? Coloquei alguns dados aqui: https://dl.dropboxusercontent.com/u/1339742/mcmc.samples.Rdata quartz(width=10,height=7) plot(mcmc.samples[, c(paste("alphaPSDB[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="blue") par(new=TRUE) plot(mcmc.samples[, c(paste("alphaPT[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="red") par(new=TRUE) plot(mcmc.samples[, c(paste("alphaPRB[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="green")

sem saber se o plot() a q vc se refere e' um metodo especifico para o objeto de classe mcmc.list (portanto, qual o pacote q gerou mcmc.samples), nao da' pra dizer bem o que esta' acontecendo... aparentemente e' um metodo sim... nesse caso, vc pode estimar a densidade (por exemplo, via density) e criar 2 matrizes (uma relativa `as coordenas X e outra Y), dai' usar matplot... por exemplo: set.seed(1) obs = matrix(rnorm(1000), nc=10) dens = apply(obs, 2, density) matX = sapply(dens, '[[', 'x') matY = sapply(dens, '[[', 'y') matplot(matX, matY, type='l') Em 4 de abril de 2014 23:05, Daniel Marcelino <dmsilva.br@gmail.com>escreveu:
Caro, estou com um problema para plotar densidades de distribuição posterior e talvez alguém aqui já tenha resolvido isso de alguma maneira. Tenho um objeto de dados de classe mcmc.list com vários paramentros, entre os quais eu gostaria de sobrepor três distribuições posteriores como abaixo. Do jeito que está, contudo, não funciona porque a cada comando plot o R mantem a curva no centro e altera as escalas. Tem alguma forma de plotar essas densidades conservando as posições delas originais? Coloquei alguns dados aqui: https://dl.dropboxusercontent.com/u/1339742/mcmc.samples.Rdata
quartz(width=10,height=7) plot(mcmc.samples[, c(paste("alphaPSDB[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="blue")
par(new=TRUE)
plot(mcmc.samples[, c(paste("alphaPT[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="red")
par(new=TRUE)
plot(mcmc.samples[, c(paste("alphaPRB[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="green") _______________________________________________ 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.

Interessante Benilton, sua solução ajudou bastante resolver. Converti o objeto para matrix e daí foi mais fácil seguir a sua sugestão. Valeu, Daniel On Apr 5, 2014, at 12:24 AM, Benilton Carvalho <beniltoncarvalho@gmail.com> wrote:
sem saber se o plot() a q vc se refere e' um metodo especifico para o objeto de classe mcmc.list (portanto, qual o pacote q gerou mcmc.samples), nao da' pra dizer bem o que esta' acontecendo...
aparentemente e' um metodo sim... nesse caso, vc pode estimar a densidade (por exemplo, via density) e criar 2 matrizes (uma relativa `as coordenas X e outra Y), dai' usar matplot...
por exemplo:
set.seed(1) obs = matrix(rnorm(1000), nc=10) dens = apply(obs, 2, density) matX = sapply(dens, '[[', 'x') matY = sapply(dens, '[[', 'y') matplot(matX, matY, type='l')
Em 4 de abril de 2014 23:05, Daniel Marcelino <dmsilva.br@gmail.com> escreveu: Caro, estou com um problema para plotar densidades de distribuição posterior e talvez alguém aqui já tenha resolvido isso de alguma maneira. Tenho um objeto de dados de classe mcmc.list com vários paramentros, entre os quais eu gostaria de sobrepor três distribuições posteriores como abaixo. Do jeito que está, contudo, não funciona porque a cada comando plot o R mantem a curva no centro e altera as escalas. Tem alguma forma de plotar essas densidades conservando as posições delas originais? Coloquei alguns dados aqui: https://dl.dropboxusercontent.com/u/1339742/mcmc.samples.Rdata
quartz(width=10,height=7) plot(mcmc.samples[, c(paste("alphaPSDB[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="blue")
par(new=TRUE)
plot(mcmc.samples[, c(paste("alphaPT[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="red")
par(new=TRUE)
plot(mcmc.samples[, c(paste("alphaPRB[", 2, "]", sep = ""))], trace = FALSE, density = TRUE, smooth = TRUE, lwd=3, col="green") _______________________________________________ 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.
participantes (2)
-
Benilton Carvalho
-
Daniel Marcelino