- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 3407 个
- 通用积分
- 13.9254
- 学术水平
- 5 点
- 热心指数
- 6 点
- 信用等级
- 3 点
- 经验
- 601 点
- 帖子
- 427
- 精华
- 0
- 在线时间
- 703 小时
- 注册时间
- 2011-9-14
- 最后登录
- 2023-11-17
|
soccy 发表于 2014-12-31 00:35
WinBUGS局限性很明显,如果刚开始学习bayesian分析,不如直接从Stan入手。 大侠,我这个有点着急用,你看看这些代码之后怎么样才能绘出后验概率图?
请求您的帮忙,代码如下: - 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
- out1 <- bugs(win.data, inits, parameters, "lme.model2.txt", n.thin=nt,
- n.chains=nc, n.burnin=nb, n.iter=ni, debug = TRUE)
复制代码
|
|