enrichwith v0.3.1

0

Monthly downloads

0th

Percentile

Methods to Enrich R Objects with Extra Components

Provides the "enrich" method to enrich list-like R objects with new, relevant components. The current version has methods for enriching objects of class 'family', 'link-glm', 'lm', 'glm' and 'betareg'. The resulting objects preserve their class, so all methods associated with them still apply. The package also provides the 'enriched_glm' function that has the same interface as 'glm' but results in objects of class 'enriched_glm'. In addition to the usual components in a `glm` object, 'enriched_glm' objects carry an object-specific simulate method and functions to compute the scores, the observed and expected information matrix, the first-order bias, as well as model densities, probabilities, and quantiles at arbitrary parameter values. The package can also be used to produce customizable source code templates for the structured implementation of methods to compute new components and enrich arbitrary objects.

Readme

CRAN_Status_Badge Travis-CI Build Status Coverage Status

enrichwith

Methods to enrich list-like R objects with extra components

Rationale

When I develop a piece of statistical methodology it is not uncommon that it depends on functionality or quantities that a list-like core R object object_x of a certain class could have but doesn't. An example is objects of class link-glm which only provide up to the the first derivatives of the link function. It is also not uncommon that the functionality or quantities that I need are hard-coded in another package in the R ecosystem. Prominent examples include implementations of gradients of the log-likelihood and information matrices for specific model classes.

In such cases, I either contact the developers and ask them to provide a generic which I can then use, or copy some of the code and adopt it to what I'm doing. Both options can be rather time-consuming, and particularly the latter is rarely bug-free.

I believe that

  • users and developers should have direct access to useful functionality and quantities in the R ecosystem, epsecially if these include implementations of complex statistical quantities

  • quantities and functionality that are specific to a list-like object_x should be components of object_x

The above motivated me to develop the enrichwith R package that allows object_x to be enriched with components corresponding to the option enrichment_option through the following simple call

enrich(object_x, with = enrichment_option)

The call is inspired by Donald Knuth's literare programing paradigm.

Purpose and objective

The main objective of enrichwith is to allow users and developers to directly use the enrichment options that other developers have provided, through a clean interface, minimising the need to adopt source code of others.

The purpose of enrichwith is to provide:

  • useful enrichment options for core R objects, including objects of class lm, glm, link-glm and family (see, for example, ?enrich.glm)

  • methods for producing customisable source code templates for the structured implementation of methods to compute new components (see ?enrichwith and ?create_enrichwith_skeleton)

  • generic methods for the easy enrichment of the object with those components (see, for example, ?enrich and ?get_enrichment_options)

Vignettes

The vignettes illustrate the enrichwith functionality through comprehensive, step-by-step case studies. These also include illustrations from recent research of mine on methods for statistical learning and inference.

Installation

Get the development version from github with

# install.packages("devtools")
devtools::install_github("ikosmidis/enrichwith")

Examples

Objects of class link-glm have as components functions to compute the link function (linkfun), the inverse link function (linkinv), and the 1st derivative of the inverse link function (mu.eta).

enrichwith comes with a built-in template with the methods for the enrichment of link-glm objects with the 2nd and 3rd derivatives of the inverse link function.

The get_enrichment_options method can be used to check what enrichment options are available for objects of class link-glm.

library("enrichwith")
standard_link <- make.link("probit")
class(standard_link)
# [1] "link-glm"
get_enrichment_options(standard_link)
# -------
# Option: d2mu.deta
# Description: 2nd derivative of the inverse link function
#   component  compute_function
# 1 d2mu.deta compute_d2mu.deta
# -------
# Option: d3mu.deta
# Description: 3rd derivative of the inverse link function
#   component  compute_function
# 1 d3mu.deta compute_d3mu.deta
# -------
# Option: inverse link derivatives
# Description: 2nd and 3rd derivative of the inverse link function
#   component  compute_function
# 1 d2mu.deta compute_d2mu.deta
# 2 d3mu.deta compute_d3mu.deta
# -------
# Option: all
# Description: all available options
#   component  compute_function
# 1 d2mu.deta compute_d2mu.deta
# 2 d3mu.deta compute_d3mu.deta

According to the result of get_enrichment_options, the object standard_link can be enriched with the 2nd and 3rd derivative of the inverse link function through the option "inverse link derivatives".

enriched_link <- enrich(standard_link, with = "inverse link derivatives")
class(enriched_link)
# [1] "enriched_link-glm" "link-glm"
cat(format(enriched_link$d2mu.deta), sep = "\n")
# function (eta)
# {
#     -eta * pmax(dnorm(eta), .Machine$double.eps)
# }
cat(format(enriched_link$d3mu.deta), sep = "\n")
# function (eta)
# {
#     (eta^2 - 1) * pmax(dnorm(eta), .Machine$double.eps)
# }

enriched_link is now an "enriched" link-glm object, which, as per the enrichment options above, has the extra components d2mu.deta and d3mu.deta, for the calculation of 2nd and 3rd derivatives of the inverse link function with respect to eta, respectively.

family objects

Functions in enrichwith

Name Description
coef.enriched_glm Function to extract model coefficients from objects of class enriched_glm
create_enrichwith_skeleton Create a enrichwith skeleton
endometrial Histology grade and risk factors for 79 cases of endometrial cancer
coef.enriched_lm Function to extract model coefficients from objects of class enriched_lm
get_auxiliary_functions.lm Function to compute/extract auxiliary functions from objects of class lm/enriched_lm
enrich.glm Enrich objects of class glm
get_auxiliary_functions.glm Function to compute/extract auxiliary functions from objects of class glm/enriched_glm
enrich.family Enrich objects of class family
enrich Generic method for enriching objects
get_enrichment_options.link-glm Available options for the enrichment objects of class link-glm
enrich.betareg Enrich objects of class betareg
get_enrichment_options.lm Available options for the enrichment objects of class lm
get_auxiliary_functions Generic method for extracting or computing auxiliary functions for objects
enriched_glm Fitting generalized linear models enriched with useful components
get_bias_function.betareg Function to compute/extract a function that returns the first term in the expansion of the bias of the MLE for the parameters of an object of class betareg/enriched_betareg
get_bias_function Generic method for extracting or computing a function that returns the bias for the parameters in modelling objects
get_enrichment_options.family Available options for the enrichment objects of class family
get_auxiliary_functions.betareg Function to compute/extract auxiliary functions from objects of class betreg/enriched_betareg
get_bias_function.lm Function to compute/extract a function that returns the first term in the expansion of the bias of the MLE for the parameters of an object of class lm/enriched_lm
get_bias_function.glm Function to compute/extract a function that returns the first term in the expansion of the bias of the MLE for the parameters of an object of class glm/enriched_glm
get_enrichment_options Generic method for getting available options for the enrichment of objects
get_enrichment_options.betareg Available options for the enrichment objects of class betareg
enrichwith Methods to enrich list-like R objects with extra components
get_dmodel_function Generic method for extracting or computing a dmodel function for modelling objects
get_dmodel_function.glm Function to compute/extract a dmodel function
get_information_function.glm Function to compute/extract a function that returns the information matrix for an object of class glm/enriched_glm
get_information_function.betareg Function to compute/extract a function that returns the information matrix for an object of class betareg/enriched_betareg
get_information_function Generic method for extracting or computing a function that returns the information matrix for modelling objects
get_information_function.lm Function to compute/extract a function that returns the information matrix for an object of class lm/enriched_lm
get_enrichment_options.glm Available options for the enrichment objects of class glm
get_qmodel_function Generic method for extracting or computing a qmodel function for modelling objects
get_score_function.lm Function to compute/extract a function that returns the scores (derivatives of the log-likelihood) for an object of class lm/enriched_lm
get_simulate_function.glm Function to compute/extract a simulate function for response vectors from an object of class glm/enriched_glm
get_score_function.glm Function to compute/extract a function that returns the scores (derivatives of the log-likelihood) for an object of class glm/enriched_glm
get_qmodel_function.glm Function to compute/extract a qmodel function
get_simulate_function.lm Function to compute/extract a simulate function for response vectors from an object of class lm/enriched_lm
get_pmodel_function Generic method for extracting or computing a pmodel function for modelling objects
get_pmodel_function.glm Function to compute/extract a pmodel function
get_score_function Generic method for extracting or computing a function that returns the scores for modelling objects
get_simulate_function Generic method for extracting or computing a simulate function for modelling objects
get_score_function.betareg Function to compute/extract a function that returns the scores (derivatives of the log-likelihood) for an object of class betareg/enriched_betareg
get_simulate_function.betareg Function to compute/extract a simulate function for response vectors from an object of class betareg/enriched_betareg
enrich.link-glm Enrich objects of class link-glm
enrich.lm Enrich objects of class lm
No Results!

Vignettes of enrichwith

Name
GLMs.Rmd
bias.Rmd
enrichwith.bib
exponential_family.Rmd
No Results!

Last month downloads

Details

URL https://github.com/ikosmidis/enrichwith
BugReports https://github.com/ikosmidis/enrichwith/issues
License GPL-2 | GPL-3
Encoding UTF-8
LazyData true
RoxygenNote 6.1.1
VignetteBuilder knitr
NeedsCompilation no
Packaged 2020-01-09 20:59:09 UTC; yiannis
Repository CRAN
Date/Publication 2020-01-10 05:30:33 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/enrichwith)](http://www.rdocumentation.org/packages/enrichwith)