|
也可以由winbugs直接输出文件,
供"CODA"继续分析HPDinterval.
这里我以 p node说明:
sample monitor tool 按"coda"button
会跳出两个窗口:(1)CODA index (2)CODA for chain 1
请分别存成pCODAindex.txt, pCODAchain1.txt
放在R可读到的working directory.
若不确定R目前的working directory
可键入getwd()
知道R目前的working directory后,
将pCODAindex.txt, pCODAchain1.txt放入.
执行下列程序:
library(coda)
## Get the coda chains from WinBUGS output
coda.out1 <- read.coda("pCODAchain1.txt", "pCODAindex.txt")
HPDinterval(coda.out1,prob=0.95)
另补充:
有了这些数据,HPDinterval也可自行算出:
library(coda)
coda.out1 <- read.coda("pCODAchain1.txt", "pCODAindex.txt")
M = 10000
prob = 0.95
chain1 = matrix(scan("pCODAchain1.txt"),4*M,2,byrow=T)
chain1 = matrix(chain1[,2],M,4)
chain1=apply(chain1,2,sort)
nsamp <- nrow(chain1)
npar <- ncol(chain1 )
gap <- max(1, min(nsamp - 1, round(nsamp * prob)))
init <- 1:(nsamp - gap)
inds <- apply(chain1[init + gap, ,drop=FALSE] - chain1[init, ,drop=FALSE],
2, which.min)
ans <- cbind(chain1[cbind(inds, 1:npar)],
chain1 [cbind(inds + gap, 1:npar)])
dimnames(ans) <- list(colnames(ans), c("lower", "upper"))
attr(ans, "Probability") <- gap/nsamp
ans
> ans
lower upper
[1,] 0.2450 0.2620
[2,] 0.2436 0.2609
[3,] 0.2403 0.2573
[4,] 0.2368 0.2537
attr(,"Probability")
[1] 0.95
|