hrbrmstr
9 years ago
8 changed files with 225 additions and 6 deletions
@ -0,0 +1,96 @@ |
|||||
|
#' Compute and display a univariate averaged shifted histogram (polynomial kernel) |
||||
|
#' |
||||
|
#' See \code{\link[ash]{bin1}} & \code{\link[ash]{ash1}} for more information. |
||||
|
#' |
||||
|
#' @inheritParams ggplot2::geom_area |
||||
|
#' @param geom Use to override the default Geom |
||||
|
#' @param ab half-open interval for bins \emph{[a,b)}. If no value is specified, |
||||
|
#' the range of x is stretched by \code{5\%} at each end and used the |
||||
|
#' interval. |
||||
|
#' @param nbin number of bins desired. Default \code{50}. |
||||
|
#' @param m integer smoothing parameter; Default \code{5}. |
||||
|
#' @param kopt vector of length 2 specifying the kernel, which is proportional |
||||
|
#' to \emph{( 1 - abs(i/m)^kopt(1) )i^kopt(2)}; (2,2)=biweight (default); |
||||
|
#' (0,0)=uniform; (1,0)=triangle; (2,1)=Epanechnikov; (2,3)=triweight. |
||||
|
#' @references David Scott (1992), \emph{"Multivariate Density Estimation,"} |
||||
|
#' John Wiley, (chapter 5 in particular).\cr |
||||
|
#' \cr |
||||
|
#' B. W. Silverman (1986), \emph{"Density Estimation for Statistics |
||||
|
#' and Data Analysis,"} Chapman & Hall. |
||||
|
#' @section Aesthetics: |
||||
|
#' \code{geom_ash} understands the following aesthetics (required aesthetics |
||||
|
#' are in bold): |
||||
|
#' \itemize{ |
||||
|
#' \item \strong{\code{x}} |
||||
|
#' \item \code{alpha} |
||||
|
#' \item \code{color} |
||||
|
#' \item \code{fill} |
||||
|
#' \item \code{linetype} |
||||
|
#' \item \code{size} |
||||
|
#' } |
||||
|
#' @section Computed variables: |
||||
|
#' \describe{ |
||||
|
#' \item{\code{estimate}}{ash estimates} |
||||
|
#' } |
||||
|
#' @export |
||||
|
stat_ash <- function(mapping = NULL, data = NULL, geom = "area", |
||||
|
position = "stack", |
||||
|
ab = NULL, nbin = 50, m = 5, kopt = c(2, 2), |
||||
|
show.legend = NA, inherit.aes = TRUE, ...) { |
||||
|
|
||||
|
layer( |
||||
|
data = data, |
||||
|
mapping = mapping, |
||||
|
stat = StatAsh, |
||||
|
geom = geom, |
||||
|
position = position, |
||||
|
show.legend = show.legend, |
||||
|
inherit.aes = inherit.aes, |
||||
|
params = list( |
||||
|
ab = ab, |
||||
|
nbin = nbin, |
||||
|
m = m, |
||||
|
kopt = kopt, |
||||
|
... |
||||
|
) |
||||
|
) |
||||
|
|
||||
|
} |
||||
|
|
||||
|
#' @export |
||||
|
StatAsh <- ggproto("StatAsh", Stat, |
||||
|
|
||||
|
required_aes = c("x"), |
||||
|
|
||||
|
default_aes = aes(y = ..estimate.., colour = NA, fill = "gray20", size = 0.5, |
||||
|
linetype = 1, alpha = NA), |
||||
|
|
||||
|
|
||||
|
setup_params = function(data, params) { |
||||
|
if (!is.null(data$y) || !is.null(params$y)) { |
||||
|
stop("stat_ash() must not be used with a y aesthetic.", call. = FALSE) |
||||
|
} |
||||
|
params |
||||
|
}, |
||||
|
|
||||
|
compute_group = function(data, scales, ab = NULL, |
||||
|
nbin = 50, m = 5, kopt = c(2, 2)) { |
||||
|
|
||||
|
if (is.null(ab)) ab <- nicerange(data$x) |
||||
|
|
||||
|
bin_res <- ash::bin1(data$x, ab, nbin) |
||||
|
ash_msg <- capture.output(ash_res <- ash1(bin_res)) |
||||
|
|
||||
|
if (ash_res$ier == 1) message("Estimate nonzero outside interval ab.") |
||||
|
|
||||
|
data.frame(x=ash_res$x, estimate=ash_res$y) |
||||
|
|
||||
|
} |
||||
|
|
||||
|
) |
||||
|
|
||||
|
nicerange <- function (x, beta = 0.1) { |
||||
|
ab <- range(x) |
||||
|
del <- ((ab[2] - ab[1]) * beta)/2 |
||||
|
return(c(ab + c(-del, del))) |
||||
|
} |
After Width: | Height: | Size: 88 KiB |
@ -0,0 +1,88 @@ |
|||||
|
% Generated by roxygen2 (4.1.1): do not edit by hand |
||||
|
% Please edit documentation in R/geom_ash.r |
||||
|
\name{stat_ash} |
||||
|
\alias{stat_ash} |
||||
|
\title{Compute and display a univariate averaged shifted histogram (polynomial kernel)} |
||||
|
\usage{ |
||||
|
stat_ash(mapping = NULL, data = NULL, geom = "area", position = "stack", |
||||
|
ab = NULL, nbin = 50, m = 5, kopt = c(2, 2), show.legend = NA, |
||||
|
inherit.aes = TRUE, ...) |
||||
|
} |
||||
|
\arguments{ |
||||
|
\item{mapping}{Set of aesthetic mappings created by \code{\link{aes}} or |
||||
|
\code{\link{aes_}}. If specified and \code{inherit.aes = TRUE} (the |
||||
|
default), is combined with the default mapping at the top level of the |
||||
|
plot. You only need to supply \code{mapping} if there isn't a mapping |
||||
|
defined for the plot.} |
||||
|
|
||||
|
\item{data}{A data frame. If specified, overrides the default data frame |
||||
|
defined at the top level of the plot.} |
||||
|
|
||||
|
\item{geom}{Use to override the default Geom} |
||||
|
|
||||
|
\item{position}{Position adjustment, either as a string, or the result of |
||||
|
a call to a position adjustment function.} |
||||
|
|
||||
|
\item{ab}{half-open interval for bins \emph{[a,b)}. If no value is specified, |
||||
|
the range of x is stretched by \code{5\%} at each end and used the |
||||
|
interval.} |
||||
|
|
||||
|
\item{nbin}{number of bins desired. Default \code{50}.} |
||||
|
|
||||
|
\item{m}{integer smoothing parameter; Default \code{5}.} |
||||
|
|
||||
|
\item{kopt}{vector of length 2 specifying the kernel, which is proportional |
||||
|
to \emph{( 1 - abs(i/m)^kopt(1) )i^kopt(2)}; (2,2)=biweight (default); |
||||
|
(0,0)=uniform; (1,0)=triangle; (2,1)=Epanechnikov; (2,3)=triweight.} |
||||
|
|
||||
|
\item{show.legend}{logical. Should this layer be included in the legends? |
||||
|
\code{NA}, the default, includes if any aesthetics are mapped. |
||||
|
\code{FALSE} never includes, and \code{TRUE} always includes.} |
||||
|
|
||||
|
\item{inherit.aes}{If \code{FALSE}, overrides the default aesthetics, |
||||
|
rather than combining with them. This is most useful for helper functions |
||||
|
that define both data and aesthetics and shouldn't inherit behaviour from |
||||
|
the default plot specification, e.g. \code{\link{borders}}.} |
||||
|
|
||||
|
\item{...}{other arguments passed on to \code{\link{layer}}. There are |
||||
|
three types of arguments you can use here: |
||||
|
|
||||
|
\itemize{ |
||||
|
\item Aesthetics: to set an aesthetic to a fixed value, like |
||||
|
\code{color = "red"} or \code{size = 3}. |
||||
|
\item Other arguments to the layer, for example you override the |
||||
|
default \code{stat} associated with the layer. |
||||
|
\item Other arguments passed on to the stat. |
||||
|
}} |
||||
|
} |
||||
|
\description{ |
||||
|
See \code{\link[ash]{bin1}} & \code{\link[ash]{ash1}} for more information. |
||||
|
} |
||||
|
\section{Aesthetics}{ |
||||
|
|
||||
|
\code{geom_ash} understands the following aesthetics (required aesthetics |
||||
|
are in bold): |
||||
|
\itemize{ |
||||
|
\item \strong{\code{x}} |
||||
|
\item \code{alpha} |
||||
|
\item \code{color} |
||||
|
\item \code{fill} |
||||
|
\item \code{linetype} |
||||
|
\item \code{size} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
\section{Computed variables}{ |
||||
|
|
||||
|
\describe{ |
||||
|
\item{\code{estimate}}{ash estimates} |
||||
|
} |
||||
|
} |
||||
|
\references{ |
||||
|
David Scott (1992), \emph{"Multivariate Density Estimation,"} |
||||
|
John Wiley, (chapter 5 in particular).\cr |
||||
|
\cr |
||||
|
B. W. Silverman (1986), \emph{"Density Estimation for Statistics |
||||
|
and Data Analysis,"} Chapman & Hall. |
||||
|
} |
||||
|
|
Loading…
Reference in new issue