Nothing
### autoplot.calibrateType1.R ---
##----------------------------------------------------------------------
## Author: Brice Ozenne
## Created: apr 5 2018 (13:20)
## Version:
## Last-Updated: Jan 11 2022 (16:46)
## By: Brice Ozenne
## Update #: 30
##----------------------------------------------------------------------
##
### Commentary:
##
### Change Log:
##----------------------------------------------------------------------
##
### Code:
## * Documentation
##' @title Graphical Display of the Bias or Type 1 Error
##' @description Graphical display of the bias or type 1 error
##' for the output of \code{\link{calibrateType1}}.
##' @name autoplot_calibrateType1
##'
##' @param object output of \code{\link{calibrateType1}}.
##' @param type [character] if type equals \code{"bias"} the bias will be displayed.
##' Otherwise if it equals \code{"type1error"} the type 1 error will be displayed.
##' @param plot [logical] should the plot be displayed?
##' @param color.threshold [character] the color for the line representing the expected value(s).
##' @param type.bias [character] if type.bias equals \code{"absolute"} the absolute bias will be used.
##' Otherwise if it equals \code{"relative"} the relative bias will be used.
##' Only relevant when type equals \code{"bias"}.
##' @param alpha [numeric, 0-1] the significance threshold to consider.
##' Only relevant when type equals \code{"type1error"}.
##' @param nrow.legend [integer, >0] the number of rows for the legend.
##' Only relevant when type equals \code{"type1error"}.
##' @param name2label [named character vector] the label for the legend.
##' The vector should contain the method names (see details).
##' Only relevant when type equals \code{"type1error"}.
##' @param color [character vector] a vector of colours to be used to color the lines.
##' Only relevant when type equals \code{"type1error"}.
##' @param keep.method [character vector] the methods names for which the type 1 error should be displayed.
##' Only relevant when type equals \code{"type1error"}.
##' @param ... [internal] Only used by the generic method.
##'
##' @details Method names:
##' \itemize{
##' \item \code{p.Ztest}
##' \item \code{p.Satt}
##' \item \code{p.KR}
##' \item \code{p.robustZtest}
##' \item \code{p.robustSatt}
##' \item \code{p.robustKR}
##' }
##' @return An list containing:
##' \itemize{
##' \item plot: a ggplot object.
##' \item data: the dataset used to generate the ggplot object.
##' }
##'
## * plotBias.calibrateType
##' @rdname autoplot_calibrateType1
##' @method autoplot calibrateType1
##' @export
autoplot.calibrateType1 <- function(object, type = "bias", plot = TRUE, color.threshold = "red",
type.bias = "absolute",
alpha = 0.05, nrow.legend = NULL, name2label = NULL, color = NULL, keep.method = NULL,
...){
type <- match.arg(type, choices = c("bias","type1error"))
## ** display bias
if(type == "bias"){
## *** data
type.bias <- match.arg(type.bias, choices = c("absolute","relative"))
if(type.bias == "absolute"){
object$bias$bias.ML <- object$bias$estimate.truth-object$bias$estimate.ML
object$bias$bias.MLcorrect <- object$bias$estimate.truth-object$bias$estimate.MLcorrect
}else if(type.bias == "relative"){
object$bias$bias.ML <- object$bias$estiamte.truth-object$bias$estiamte.ML
object$bias$bias.MLcorrect <- object$bias$estimate.truth-object$bias$estimate.MLcorrect
}
df1 <- cbind(object$bias[,c("n","rep","name","type","bias.ML")], corrected = FALSE)
names(df1)[5] <- "bias"
df2 <- cbind(object$bias[,c("n","rep","name","type","bias.MLcorrect")], corrected = TRUE)
names(df2)[5] <- "bias"
df.gg <- rbind(df1,df2)
## *** display
gg <- ggplot2::ggplot() + ggplot2::geom_boxplot(data = df.gg, aes_string(x = "type", y = "bias"))
gg <- gg + ggplot2::facet_wrap(corrected ~ n, labeller = ggplot2::label_both)
df.line <- data.frame(x = c(-Inf,Inf), y = 0)
gg <- gg + ggplot2::geom_line(data = df.line, aes_string(x = "x", y = "y"), color = color.threshold)
}
## ** display type 1 error
if(type == "type1error"){
df.gg <- summary(object, alpha = alpha, type = type, display = FALSE)
## *** display
if(is.null(keep.method)){
keep.method <- as.character(unique(df.gg$method))
}
if(is.null(name2label)){
name2label <- stats::setNames(unique(paste0(df.gg$statistic,", ",df.gg$correction)),unique(df.gg$method))
}
if(is.null(color)){
## from ggthemes::colorblind_pal()(8)
color <- c("#000000","#E69F00","#56B4E9","#009E73","#F0E442","#0072B2","#D55E00","#CC79A7")
}
label.method <- name2label[keep.method]
n.method <- length(keep.method)
y.range <- range(c(alpha,df.gg$type1error))
gg <- ggplot2::ggplot(df.gg, aes_string(x = "n", y = "type1error", group = "method", color = "method", shape = "method"))
gg <- gg + ggplot2::geom_point(size = 3) + ggplot2::geom_line(size = 2)
gg <- gg + ggplot2::facet_grid(~link, labeller = ggplot2::label_parsed)
gg <- gg + ggplot2::geom_abline(intercept = alpha, slope = 0, color = color.threshold)
gg <- gg + ggplot2::xlab("sample size")
gg <- gg + ggplot2::ylab("type 1 error rate")
gg <- gg + ggplot2::theme(legend.position = "bottom")
gg <- gg + ggplot2::coord_cartesian(ylim = y.range)
if(!is.null(nrow.legend)){
gg <- gg + ggplot2::guides(color = ggplot2::guide_legend(nrow=nrow.legend,byrow=TRUE))
}
gg <- gg + ggplot2::scale_color_manual("",
breaks = keep.method,
label = label.method,
values = color[1:n.method])
gg <- gg + ggplot2::scale_shape_manual("",
breaks = keep.method,
label = label.method,
values = seq(15,by=1,length=n.method))
}
## ** export
if(plot){
print(gg)
}
rownames(df.gg) <- NULL
return(invisible(list(plot = gg,
data = df.gg)))
}
######################################################################
### autoplot.calibrateType1.R ends here
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.