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