Skip to content
Prev 389236 / 398506 Next

adding results to plot

Hello,

*.test functions in base R return a list of class "htest", with its own 
print method.
The method text.htest for objects of class "htest" below is a hack. I 
adapted the formating part of the code of print.htest to plot text().
I find it maybe too complicated but it seems to work.

Warning: Not debugged at all.



text.htest <- function (ht, x, y = NULL, digits = getOption("digits"),
                         prefix = "", adj = NULL, ...) {
   out <- list()
   i_out <- 1L
   out[[i_out]] <- paste(strwrap(ht$method, prefix = prefix), sep = "\n")
   i_out <- i_out + 1L
   out[[i_out]] <- paste0("data:  ", ht$data.name)

   stat_line <- NULL
   i_stat_line <- 0L
   if (!is.null(ht$statistic)) {
     i_stat_line <- i_stat_line + 1L
     stat_line[[i_stat_line]] <- paste(names(ht$statistic), "=",
                                       format(ht$statistic, digits = 
max(1L, digits - 2L)))
   }
   if (!is.null(ht$parameter)) {
     i_stat_line <- i_stat_line + 1L
     stat_line[[i_stat_line]] <- paste(names(ht$parameter), "=",
                                       format(ht$parameter, digits = 
max(1L, digits - 2L)))
   }
   if (!is.null(ht$p.value)) {
     fp <- format.pval(ht$p.value, digits = max(1L, digits - 3L))
     i_stat_line <- i_stat_line + 1L
     stat_line[[i_stat_line]] <- paste("p-value",
                                       if (startsWith(fp, "<")) fp else 
paste("=", fp))
   }
   if(!is.null(stat_line)){
     i_out <- i_out + 1L
     #out[[i_out]] <- strwrap(paste(stat_line, collapse = ", "))
     out[[i_out]] <- paste(stat_line, collapse = ", ")
   }
   if (!is.null(ht$alternative)) {
     alt <- NULL
     i_alt <- 1L
     alt[[i_alt]] <- "alternative hypothesis: "
     if (!is.null(ht$null.value)) {
       if (length(ht$null.value) == 1L) {
         alt.char <- switch(ht$alternative, two.sided = "not equal to",
                            less = "less than", greater = "greater than")
         i_alt <- i_alt + 1L
         alt[[i_alt]] <- paste0("true ", names(ht$null.value), " is ", 
alt.char,
                                " ", ht$null.value)
       }
       else {
         i_alt <- i_alt + 1L
         alt[[i_alt]] <- paste0(ht$alternative, "\nnull values:\n")
       }
     }
     else {
       i_alt <- i_alt + 1L
       alt[[i_alt]] <- ht$alternative
     }
     i_out <- i_out + 1L
     out[[i_out]] <- paste(alt, collapse = " ")
   }
   if (!is.null(ht$conf.int)) {
     i_out <- i_out + 1L
     out[[i_out]] <- paste0(format(100 * attr(ht$conf.int, "conf.level")),
                            " percent confidence interval:\n", " ",
                            paste(format(ht$conf.int[1:2], digits = 
digits), collapse = " "))
   }
   if (!is.null(ht$estimate)) {
     i_out <- i_out + 1L
     out[[i_out]] <- paste("sample estimates:", round(ht$estimate, 
digits = digits), sep = "\n")
   }
   i_out <- i_out + 1L
   out[[i_out]] <- "\n"
   names(out)[i_out] <- "sep"
   out <- do.call(paste, out)
   if(is.null(adj)) adj <- 0L
   text(x, y, labels = out, adj = adj, ...)
   invisible(out)
}


res <- shapiro.test(rnorm(100))
plot(1,1, ylim = c(0, length(res) + 1L))
text(res, 0.6, length(res) - 1)
res

res2 <- t.test(rnorm(100))
plot(1,1, ylim = c(0, length(res2) + 1L))
text(res2, 0.6, length(res2) - 1L)
res2


Hope this helps,

Rui Barradas



?s 15:12 de 16/09/21, PIKAL Petr escreveu: