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