如何绘制验概率密度(Posterior probability density)
请问大神用哪个语句?
非常感谢,急用
代码如下
- library(R2WinBUGS)
- library(lattice)
- library(coda)
- dat<-read.csv("c:/data.csv")
- attach(dat)
- setwd("c:/")
- sink("lme.model2.txt")
- cat("
- model {
- # Priors
- for (i in 1:6){
- alpha[i] ~ dnorm(mu.int, tau.int) # Random intercepts
- beta[i] ~ dnorm(mu.slope, tau.slope)# Random slopes
- }
- mu.int ~ dnorm(0, 0.001) # Mean hyperparameter for random intercepts
- tau.int <- 1 / (sigma.int * sigma.int)
- sigma.int ~ dunif(0, 100) # SD hyperparameter for random intercepts
- mu.slope ~ dnorm(0, 0.001) # Mean hyperparameter for random slopes
- tau.slope <- 1 / (sigma.slope * sigma.slope)
- sigma.slope ~ dunif(0, 100) # SD hyperparameter for slopes
- tau <- 1 / ( sigma * sigma) # Residual precision
- sigma ~ dunif(0, 100) # Residual standard deviation
- # Likelihood
- for (i in 1:n) {
- mass[i] ~ dnorm(mu[i], tau)
- mu[i] <- alpha[pop[i]] + beta[pop[i]]* length[i]
- }
- }
- ",fill=TRUE)
- sink()
- # Bundle data
- win.data <- list(mass = as.numeric(mass), pop = pop, length = length, n =length(mass))
- # Inits function
- inits <- function(){ list(alpha = rnorm(6, 0, 2), beta = rnorm(6, 10, 2),
- mu.int = rnorm(1, 0, 1), sigma.int = rlnorm(1), mu.slope = rnorm(1, 0, 1),
- sigma.slope = rlnorm(1), sigma = rlnorm(1))}
- # Parameters to estimate
- parameters <- c("alpha", "beta", "mu.int", "sigma.int", "mu.slope", "sigma.slope", "sigma")
- ni <-10000
- nb <- 1000
- nt <- 2
- nc <- 3
- # Start Gibbs sampling
- #out <- bugs(win.data, inits, parameters, "lme.model1.txt", n.thin=nt, n.chains=nc, n.burnin=nb, n.iter=ni, debug = TRUE,bugs.directory="c:/Program Files/WinBUGS14/")
- out1 <- bugs(win.data, inits, parameters, "lme.model2.txt", n.thin=nt,
- n.chains=nc, n.burnin=nb, n.iter=ni, debug = TRUE)
数据在附件中