madness objects, and a
wrapper method.
"initialize"(.Object, val, dvdx, xtag = NA_character_, vtag = NA_character_, varx = matrix(nrow = 0, ncol = 0))
madness(val, dvdx = NULL, vtag = NULL, xtag = NULL, varx = NULL)madness object, or proto-object.array of some numeric value, of arbitrary
dimension.matrix of the derivative of
(the vector of) val with respect to some independent
variable, $X$.madness.
valarray of some numeric value. (Note that
array includes matrix as a subclass.) The numeric
value can have arbitrary dimension.dvdxmatrix of the derivative of
(the vector of) val with respect to some independent
variable, $X$.
A Derivative is indeed a 2-dimensional matrix.
Derivatives have all been 'flattened'. See the details.
If not given, defaults
to the identity matrix, in which case $val = X$,
which is useful to initialization. Note that the derivative
is with respect to an 'unrestricted' $X$.xtagxtag data will result in an error, since they are
considered to have different independent variables.vtagvarxmadness object contains a (multidimensional)
value, and the derivative of that with respect to some independent
variable. The purpose is to simplify computation of multivariate
derivatives, especially for use in the Delta method. Towards this
usage, one may store the covariance of the independent variable
in the object as well, from which the approximate variance-covariance
matrix can easily be computed. See vcov.Note that derivatives are all implicitly 'flattened'. That is, when we talk of the derivative of $i x j$ matrix $Y$ with respect to $m x n$ matrix $X$, we mean the derivative of the $ij$ vector $vec(Y)$ with respect to the $mn$ vector $vec(X)$. Moreover, derivatives follow the 'numerator layout' convention: this derivative is a $ij x mn$ matrix whose first column is the derivative of $vec(Y)$ with respect to $X_11$. Numerator layout feels unnatural because it makes a gradient vector of a scalar-valued function into a row vector. Despite this deficiency, it makes the product rule feel more natural. (2FIX: is this so?)
Magnus, Jan R. and Neudecker, H. "Matrix Differential Calculus with Applications in Statistics and Econometrics." 3rd Edition. Wiley Series in Probability and Statistics: Texts and References Section (2007). http://www.janmagnus.nl/misc/mdc2007-3rdedition
obj <- new("madness", val=matrix(rnorm(10*10),nrow=10), dvdx=diag(100), xtag="foo", vtag="foo")
obj2 <- madness(val=matrix(rnorm(10*10),nrow=10), xtag="foo", vtag="foo^2")
Run the code above in your browser using DataLab