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