Nothing
"[.mcmc.list" <- function (x, i, j, drop = TRUE)
{
## In S-PLUS the code is altered so that the user can
## pick out particular parameters by calling
## mcmc.obj[,c("param1", "param2")]
## Trying to squeeze too much functionality in here
## x[p:q] will subset the list
## x[p,], x[,q], x[p,q] will be recursively applied to
## the elements of the list, even if they are vectors
if (nargs() < 3 + !missing(drop)) {
## Subset the list
if (is.R()) {
y <- NextMethod("[")
}
else {
y <- as.matrix(x)[i,j]
}
}
else {
## Subset the elements of the list
y <- vector("list", length(x))
names(y) <- names(x)
for (k in 1:length(y)) {
y[[k]] <- if (missing(i) && missing(j)) {
x[[k]]
}
else if (is.matrix(x[[k]])) {
if (missing(i)) {
x[[k]][, j, drop = drop]
}
else if (missing(j)) {
x[[k]][i, , drop = drop]
}
else {
x[[k]][i, j, drop = drop]
}
}
else {
### Coerce x[[k]] to matrix before subsetting
z <- as.matrix.mcmc(x[[k]])
if (missing(i)) {
mcmc(z[, j, drop = TRUE], start(x), end(x), thin(x))
}
else if (missing(j)) {
z[i, , drop = TRUE]
}
else {
z[i, j, drop = TRUE]
}
}
}
}
if (is.list(y) && all(sapply(y, is.mcmc, simplify = TRUE))) {
y <- mcmc.list(y)
}
return(y)
}
"mcmc.list" <- function (...)
{
x <- list(...)
if (length(x) == 1 && is.list(x[[1]]))
x <- x[[1]]
if (!all(unlist(lapply(x, is.mcmc))))
stop("Arguments must be mcmc objects")
nargs <- length(x)
if (nargs >= 2) {
xmcpar <- lapply(x, mcpar)
if (!all(unlist(lapply(xmcpar, "==", xmcpar[[1]]))))
stop("Different start, end or thin values in each chain")
xnvar <- lapply(x, nvar)
if (!all(unlist(lapply(xnvar, "==", xnvar[[1]]))))
stop("Different number of variables in each chain")
xvarnames <- lapply(x, varnames, allow.null = FALSE)
if (!all(unlist(lapply(xvarnames, "==", xvarnames[[1]]))))
stop("Different variable names in each chain")
}
if (is.R())
class(x) <- "mcmc.list"
else
oldClass(x) <- "mcmc.list"
return(x)
}
"start.mcmc.list" <- function (x, ...)
{
start(x[[1]])
}
"end.mcmc.list" <- function (x, ...)
{
end(x[[1]])
}
"thin.mcmc.list" <- function (x, ...)
{
thin(x[[1]])
}
"is.mcmc.list" <- function (x)
inherits(x, "mcmc.list")
"plot.mcmc.list" <-
function (x, trace = TRUE, density = TRUE, smooth = TRUE, bwf,
auto.layout = TRUE, ask = par("ask"), ...)
{
## RGA fixed to use default ask value.
oldpar <- NULL
on.exit(par(oldpar))
if (auto.layout) {
mfrow <- set.mfrow(Nchains = nchain(x), Nparms = nvar(x),
nplots = trace + density)
oldpar <- par(mfrow = mfrow)
}
for (i in 1:nvar(x)) {
if (trace)
## RGA fixed to propagate ... argument.
traceplot(x[, i, drop = FALSE], smooth = smooth, ...)
if (density) {
if (missing(bwf))
## RGA fixed to propagate ... argument.
densplot(x[, i, drop = FALSE], ...)
else densplot(x[, i, drop = FALSE], bwf = bwf, ...)
}
if (i==1)
oldpar <- c(oldpar, par(ask = ask))
}
}
"summary.mcmc.list" <-
function (object, quantiles = c(0.025, 0.25, 0.5, 0.75, 0.975), ...)
{
x <- mcmc.list(object)
statnames <- c("Mean", "SD", "Naive SE", "Time-series SE")
varstats <- matrix(nrow = nvar(x), ncol = length(statnames),
dimnames = list(varnames(x), statnames))
xtsvar <- matrix(nrow = nchain(x), ncol = nvar(x))
if (is.matrix(x[[1]])) {
for (i in 1:nchain(x))
for(j in 1:nvar(x))
xtsvar[i, j] <- safespec0(x[[i]][,j])
xlong <- do.call("rbind", x)
}
else {
for (i in 1:nchain(x))
xtsvar[i, ] <- safespec0(x[[i]])
xlong <- as.matrix(x)
}
xmean <- apply(xlong, 2, mean)
xvar <- apply(xlong, 2, var)
xtsvar <- apply(xtsvar, 2, mean)
varquant <- t(apply(xlong, 2, quantile, quantiles))
varstats[, 1] <- xmean
varstats[, 2] <- sqrt(xvar)
##RGA fixed so now give correct std error for pooled (across chains).
varstats[, 3] <- sqrt(xvar/(niter(x)*nchain(x)))
varstats[, 4] <- sqrt(xtsvar/(niter(x)*nchain(x)))
varquant <- drop(varquant)
varstats <- drop(varstats)
out <- list(statistics = varstats, quantiles = varquant,
start = start(x), end = end(x), thin = thin(x),
nchain = nchain(x))
class(out) <- "summary.mcmc"
return(out)
}
"as.matrix.mcmc.list" <-
function (x, iters = FALSE, chains = FALSE, ...)
{
x <- mcmc.list(x)
y <- matrix(nrow = niter(x) * nchain(x), ncol = nvar(x) +
chains + iters)
var.cols <- chains + iters + 1:nvar(x)
for (i in 1:nchain(x)) {
use.rows <- niter(x) * (i - 1) + 1:niter(x)
if (chains)
y[use.rows, 1] <- i
if (iters)
y[use.rows, chains + 1] <- as.vector(time(x))
y[use.rows, var.cols] <- x[[i]]
}
rownames <- character(ncol(y))
if (chains)
rownames[1] <- "CHAIN"
if (iters)
rownames[1 + chains] <- "ITER"
rownames[var.cols] <- varnames(x, allow.null = FALSE)
dimnames(y) <- list(NULL, rownames)
return(y)
}
"as.mcmc.mcmc.list" <- function (x, ...)
{
if (nchain(x) == 1)
return(x[[1]])
else stop("Can't coerce mcmc.list to mcmc object:\n more than 1 chain")
}
"time.mcmc.list" <- function (x, ...)
time(x[[1]])
"window.mcmc.list" <- function (x, ...)
{
structure(lapply(x, window.mcmc, ...), class = "mcmc.list")
}
"head.mcmc.list" <- function (x, ...)
{
structure(lapply(x, head.mcmc, ...), class = "mcmc.list")
}
"tail.mcmc.list" <- function (x, ...)
{
structure(lapply(x, tail.mcmc, ...), class = "mcmc.list")
}
"as.mcmc.list" <- function (x, ...)
UseMethod("as.mcmc.list")
"as.mcmc.list.default" <- function (x, ...)
if (is.mcmc.list(x)) x else mcmc.list(x)
"as.array.mcmc.list" <- function(x, drop=TRUE, ...)
{
y <- array(dim=c(niter(x), nvar(x), nchain(x)),
dimnames = list(iter=time(x), var=varnames(x), chain=chanames(x)))
for(i in 1:nchain(x))
y[,,i] <- x[[i]]
if(drop)
return(drop(y))
else
return(y)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.