1summary.eco <- function(object, CI = c(2.5, 97.5), param = TRUE,
2                        units = FALSE, subset = NULL,...) {
3
4  n.obs <- ncol(object$W[,1,])
5  n.draws <- nrow(object$W[,1,])
6
7  if (is.null(subset)) subset <- 1:n.obs
8  else if (!is.numeric(subset))
9    stop("Subset should be a numeric vector.")
10  else if (!all(subset %in% c(1:n.obs)))
11    stop("Subset should be any numbers in 1:obs.")
12
13  table.names<-c("mean", "std.dev", paste(min(CI), "%", sep=" "),
14                 paste(max(CI), "%", sep=" "))
15
16
17  agg.table <-agg.wtable <-NULL
18  N<-rep(1, length(object$X))
19  W1.agg.mean <- as.vector(object$W[,1,]%*% (object$X*N/sum(object$X*N)))
20  W2.agg.mean <- as.vector(object$W[,2,]%*% ((1-object$X)*N/sum((1-object$X)*N)))
21
22  agg.table <- rbind(cbind(mean(W1.agg.mean), sd(W1.agg.mean),
23                           quantile(W1.agg.mean, min(CI)/100),
24                           quantile(W1.agg.mean, max(CI)/100)),
25                     cbind(mean(W2.agg.mean), sd(W2.agg.mean),
26                           quantile(W2.agg.mean, min(CI)/100),
27                           quantile(W2.agg.mean, max(CI)/100)))
28  colnames(agg.table) <- table.names
29  rownames(agg.table) <- c("W1", "W2")
30
31
32  if (!is.null(object$N)) {
33    N <- object$N
34
35    W1.agg.wmean <- as.vector(object$W[,1,] %*% (object$X*N/sum(object$X*N)))
36    W2.agg.wmean <- as.vector(object$W[,2,] %*% ((1-object$X)*N/sum((1-object$X)*N)))
37    agg.wtable <- rbind(cbind(mean(W1.agg.wmean), sd(W1.agg.wmean),
38                           quantile(W1.agg.wmean, min(CI)/100),
39                           quantile(W1.agg.wmean, max(CI)/100)),
40                     cbind(mean(W2.agg.wmean), sd(W2.agg.wmean),
41                           quantile(W2.agg.wmean, min(CI)/100),
42                           quantile(W2.agg.wmean, max(CI)/100)))
43    colnames(agg.wtable) <- table.names
44    rownames(agg.wtable) <- c("W1", "W2")
45  }
46
47
48  if (units) {
49     W1.table <- cbind(apply(object$W[,1,subset], 2, mean),
50                       apply(object$W[,1,subset], 2, sd),
51                       apply(object$W[,1,subset], 2, quantile, min(CI)/100),
52                       apply(object$W[,1,subset], 2, quantile, max(CI)/100))
53     W2.table <- cbind(apply(object$W[,2,subset], 2, mean),
54                       apply(object$W[,2,subset], 2, sd),
55                       apply(object$W[,2,subset], 2, quantile, min(CI)/100),
56                       apply(object$W[,2,subset], 2, quantile, max(CI)/100))
57     colnames(W2.table) <- colnames(W1.table) <- table.names
58     rownames(W1.table) <- rownames(W2.table) <- row.names(object$X[subset])
59   }
60  else
61     W1.table <- W2.table <- NULL
62
63  if (param) {
64    if (is.null(object$mu) || is.null(object$Sigma))
65      stop("Parameters are missing values.")
66    else {
67      param <- cbind(object$mu, object$Sigma)
68      param.table <- cbind(apply(param, 2, mean), apply(param, 2, sd),
69                           apply(param, 2, quantile, min(CI)/100),
70                           apply(param, 2, quantile, max(CI)/100))
71      colnames(param.table) <- table.names
72    }
73  }
74  else
75    param.table <- NULL
76
77  ans <- list(call = object$call, W1.table = W1.table, W2.table = W2.table,
78              agg.table = agg.table, agg.wtable=agg.wtable, param.table = param.table,
79              n.draws = n.draws, n.obs = n.obs)
80
81  class(ans) <-"summary.eco"
82  return(ans)
83}
84