Object Oriented Implementation of Distributions

S4-classes and methods for distributions.


News

######################################################################

News: to package distr

######################################################################

(first two numbers of package versions do not necessarily reflect package-individual development, but rather are chosen for the distrXXX family as a whole in order to ease updating "depends" information)

############## v 2.6.2 ##############

  • fixed internals as triggered by mail "CRAN package distr" by Kurt Hornik from Apr 07 2017; most importantly, we registered native code and took out some usage example of sqrt().

############## v 2.6 ##############

user-visible CHANGES:

  • title changed to title style / capitalization
  • added reference to JSS paper in IllustCLT
  • updated references in vignette 'newDistributions'
  • added generating function "EmpiricalDistribution" which is a simple wrapper to function "DiscreteDistribution"
  • arguments panel.first, panel.last for plot-methods can now be lists
  • qqplot gains pattern substitution like plot in titles and x/y axis lables
  • pattern substitution can now be switched on and off in all plot functions according to argument withSubst
  • new methods q.l and p.r as synonyma for slot accessors q and p -- the former one is useful in particular when using RStudio, as they catch calls to q() [quitting an R session] and treat them separately which renders calls to our method q() (with respective signature, i.e., with a distribution as [first] argument) inaccessible from the console... so far only a call to distr::q was helping...

under the hood:

-qqplot:

  • (already there for a while) gains argument 'debug' to be able to trace where computation of confidence bounds fails; this 'debug' argument has now been enhanced in the sense that now more detailed information about which helper function was the culprit and where (uniroot/optimize) this happens
  • now returns an object of S3-classes "qqplotInfo","DiagnInfo" to be able to recover all information used to produce the plot for later use in enhanced graphics (e.g. with ggplot)
    -qqbounds:
  • the respective helper functions .BinomCI.nosym, .BinomCI, .q2kolmogorov capsulate their calls to uniroot / optimize in individual try-catches (instead of / on top of the one in qqbounds itself) so that in case of several evaluations (e.g. in pointwise CIs) at least a subset of valid points is produced. In addition the search interval is now more flexible: it is bound away from 0 below and from the upper bound from above, and this bound moves to the respective lower/upper bounds in up to 20 trials. Also, the search interval for .q2kolmogorov if argument 'exact' is TRUE (i.e., if pKolmogorov2x is called) has been refined. This should make the simultaneous intervals more stable.
  • re-included faster right-tail approximation in C-code K(int n, double d)
    included from R-Core (was commented out there) [ks.c in folder src in tar-ball, ll 153-155] -plot:
  • fixed some issues with plotting of distributions: xlim, ylim were not correctly passed on, same for col => now use dots.lowlevel ... -helper function .isReplicated gains an optional argument tol
  • bug fixes:
    • fixed a bug in plot (q) for LebDec-Distributions (verticals were not plotted correctly)
    • panel selection mechanism had a bug for LebDec-Distributions
    • fixed axis annotation: if xlab="" or ylab="" the respective lab are "" for all panels

############## v 2.5.3 ##############

user-visible CHANGES:

  • CITATION file updated after JSS publication

under the hood:

  • tests: long-running tests with large pre-calculated results successfully implemented
  • enhanced utility function .fillList by an automatic cast to list if the argument not yet is of class list.
  • some minor changes in qqplot

bug fixes:

  • bug in LatticeDistribution found by [email protected]
  • found a missing drop=FALSE in .mergegaps2
  • fixed an issue with casting AffLinDiscreteDistributions to LatticeDistributions (discovered by Kostas Oikonomou, [email protected] )

############## v 2.5 ##############

user-visible CHANGES:

GENERAL ENHANCEMENTS:

  • cleaned DESCRIPTION and NAMESPACE file as to Imports/Depends

under the hood:

  • added .Rbuildignore
  • exported some routines which had been internal so far to avoid calls by :::
  • in order to avoid calls to non-exported C-Code from pkg stats (for Kolmogorov-distribution) we integrated R-Core's C-code from
    /src/library/stats/src/ks.c rev60573 (with small changes to make it self-contained) to src folder of this pkg; in addition, we now use the shakier .C - interface again... in v 2.5.1 reverted the changes in /src/library/stats/src/ks.c: including R.h etc is easier than thought...

BUGFIXES:

  • fixed .makedotsPt -issue discovered by Gerald --> thx
  • moved generics to "distribution" and "samplesize" to pkg distr to avoid conflict between pkgs distrMod and distrSim v 2.5.1: same with "samplesize<-" to avoid conflict between pkgs distrSim and RobAStBase

############## v 2.4 ##############

user-visible CHANGES:

GENERAL ENHANCEMENTS:

LatticeDistribution:::

  • revised initialize and convolution methods, and generating function -> new routine to determine the smallest common grid for convolution
  • Taking up proposal by Baoyue Li, [email protected],
    plot methods for distribution objects gain functionality to modify xlab and ylab

under the hood:

  • introduce .Rbuildignore files
  • require no longer called in .onAttach
  • created folder vignettes and moved content of inst/doc/ to it
  • removed lazyload tag in DESCRIPTION
  • updated affiliation info in newDistributions.Rnw
  • deleted inst/doc folder
  • added DESCRIPTION tag "ByteCompile" to all our packages
  • updating maintainer email address and URL.
  • added argument no.readonly = TRUE to assignments of form opar <- par()
  • unified dots-manipulations
  • put some examples in "\dontrun" to reduce check time on CRAN
  • introduced new option warn.makeDNew to suppress annoying warnings when dealing with GEVD
  • deleted no longer needed chm folders

BUGFIXES:

  • fixed an error in show method for UnivarLebDecDistribution: match.call() threw an error

  • fixed problems with .makeDNew - as .makeDNew is not exported

  • error in definition of Beta() --- d slot was wrong

  • corrected typo (inifinite...)

  • typo in Beta-class.Rd (only in TeX mode) discovered by Thomas Kirschenmann, [email protected]

  • fixed some issue with X^a, X distribution, a a number ...

  • tried to fix gaps issue as mentioned by Dirk Surmann, [email protected]

  • corrected a bug noticed by [email protected]

  • fixed a bug within internals-qqplot : withConf.sim, withConf.pw had not been removed from call with .deleteItemsMCL;

  • fixed request by B.Ripley as to installed.packages in branch 2.4

  • fixed gaps issue with .multm

  • fixed issue with gaps (in case length(gaps)==0)

    and: BDR has changed calls to .C in 2.16.0 to calls to .Call; we used this in qqbounds, respectively in .q2kolmogorov; now have branching functions .pk2 and .pks2 between ante 2.16. and from 2.16 on

############## v 2.3 ##############

user-visible CHANGES:

  • parameter size in NegbinomDistribution can now be real-valued
  • introduced igamma, the inverse of digamma and corresponding transformations; distr: drastically reduced memory needed by smaller grid for igamma
  • distr: implemented Nataliya's quantile trick to avoid simulated grid points

GENERAL ENHANCEMENTS:

  • [qqplot]
    • had forgot to delete some legend arguments from call mcl ...
    • gains arguments legend.pref and legend.postf to pre/ap-pend text before/after legend text
    • CIs in qqplot may now comprise +-Inf values
    • gains argument legend.alpha to be able to distinguish nominal and actual confidence level

under the hood:

  • DESCRIPTION files and package-help files gain a tag SVNRevision to be filled by get[All]RevNr.R from utils in distr

BUGFIXES:

  • old version of AllClasses.R for package "distr" was fetched from R-Forge - warning after merging branch 2.2 into trunk

  • got strange unreproducible error reports in the example to simplifyD; set seed now to avoid this.

  • (hopefully) fixed http://n4.nabble.com/R-devel-f909078.html

  • fixed an error with qqplot in distr: mfColRow did not work as it should ... now can be used in multipanel plots

  • fixed minor error in internals-qqplot.R

  • for restoring old par() values, not all attributes may be set; hence deleted them from stored value in plot functions by something like opar$cin <- opar$cra <- opar$csi <- opar$cxy <- opar$din <- NULL

  • Typos in plot functions...

  • implemented Matthias' proposals, ie (1) [old] newd <- (abs(newd) >= .Machine$double.eps)*newd [new] newd <- (newd >= .Machine$double.eps)*newd

    (2) [old] rsum.u <- min( sum( rev(cumsum(rev(newd))) <= ep/2)+1, length(supp1)) [new] rsum.u <- min( sum( !(cumsum(rev(newd)) <= ep/2))+1, length(supp1))

  • a renaming schedule : enforcing ending .R in convpow.R

  • fixed typo in corrected version of Convpow.R

  • tentative fix for Uwe Ligges' bug report obsevered in http://cran.r-project.org/bin/windows/contrib/2.12/check/distr-check.log 15-06-2010

  • unnecessary Rplots.pdf deleted from inst folders of distr and distrMod (are created anyway during vignette build)

  • changed mail address: triggered by mail by Sven Sewitz [email protected], replaced all dead links to distr.pdf in www files by url to vignette of distrDoc on CRAN; also replaced uni-bayreuth.de mail address by itwm.fraunhofer.de one


Changes after changes in R , R-forge

  • cleanup issues:

    -Package: distr Version: 2.2 Flavor: r-devel-linux-ix86 Check: package vignettes ... WARNING *** Weave Errors *** File /home/hornik/tmp/R.check/r-devel/Work/PKGS/distr.Rcheck/inst/doc/newDistributions.Rnw : chunk 20 (label=cleanup) Error : package ?SweaveListingUtils? is required by ?distr? so will not be detached

    => removed tag in distr.Rnw in distrDoc <<cleanup, echo=FALSE>>= unloadNamespace("SweaveListingUtils") @ similarly in newDistributions.Rnw

    => small changes in SweaveListingUtils in order to pass R CMD check again...

############## v 2.2 ##############

user-visible CHANGES:

  • moved Distribution symmetry classes and corresponding methods/functions from distrMod to distr

    • introduced new slot "Symmetry" (of Class "DistributionSymmetry") in class Distribution
    • adapted all algorithms in distr (arithmetics; generators) to take care about this new slot
  • (sort of) version management

    • enhanced conv2NewVersion --- did not work before as intended in cases where there is a particular initialized method with less arguments...
    • correspondingly .lowerExact, .logExact Symmetry methods now are exported
    • .lowerExact, .logExact methods now issue a warning before coercing to new version and return corresponding slot of converted object
    • corrected some small bug in demo ConvolutionNormalDistr.R
    • method for UnivarMixingDistribution
  • enhanced abs()

    • for ContDistribution / DiscreteDistribution
    • for ContDistribution now forces argument x --- caused errors in mad() for instance
  • in distr generating functions [Univar]DistrList() gain Dlist argument

  • plotting:

    • new diagnostic function qqplot to check the compatibility of two distributions
      • special method for first argument "UnivariateDistribution" (to be checked for compatibility) and for second argument of class "UnivariateDistribution" (H_0 distribution)
      • comes with corresponding (pointwise/simultaneous) confidence intervals

GENERAL ENHANCEMENTS:

  • added tests/Examples folder with file distr-Ex.Rout.save to have some automatic testing
  • added field "Encoding: latin1" to all DESCRIPTION files in order to avoid problems with e.g. Windows locale when svn replaces $LastChangedDate
  • added TOBEDONE (sic!) files for each package (by accident also in trunc; these are empty so far)
  • vignette:
    • included svn-multi style files to /inst/doc folders for upload on CRAN

BUGFIXES:

  • fixed an inconsistency of Truncate for DiscreteDistributions; to better match Huberize and Min/Max Truncation should be done for m<=object<=M instead of m<object<=M --- also the reason why demo censoredPois of distrMod threw errors.
  • changed initialize methods for AbscontDistribution and DiscreteDistribution in distr;
  • RtoDPQ.LC now correctly sets .withArith, .withSim slots in discretePart and .logExact, .lowerExact in both discretePart and acPart
  • fixed a minor error in manual to plot-methods
  • fixed issue in .presubs after change of for() etc semantics
  • fixed buglet in .qmixfun
  • internal helper function .trunc.low wrongly used p.l and q.r ...

############## v 2.1 ##############

  • DISTRIBUTIONS ->DISCRETE DISTRIBUTIONS --collapsing discrete distributions: +getdistrOption(".DistrCollapse.Unique.Warn") +implemented proposal by jacob van etten (collapsing support) --enhance accuracy

    • yet another improvement of .multm (now sets density for discrete distributions for non-support arguments actively to 0)
    • We are a bit more careful about hitting support points in .multm for DiscreteDistribution (i.e., for D * e2, e2 numeric, D DiscreteDistribution) ->CONTINUOUS DISTRIBUTIONS --gaps/support : +gaps matrix could falsely have 0 rows (instead of being set to NULL) +class UnivarMixingDistribution gains overall slots gaps support +added corresponding accessors +correspondingly, for UnivarLebDecDistribution as daughter class, accessors gaps(), support() refer to "overall" slots, not to slots of acPart, discretePart +deleted special support, gaps method for UnivarLebDecDistribution; now inherits from UnivarMixingDistribution +new utility function .consolidategaps to "merge" adjacent gaps +setgaps method for UnivarMixingDistribution +correspondingly,
    • method "*", c("AffLinUnivarLebDecDistribution","numeric"),
    • method "+", c("AffLinUnivarLebDecDistribution","numeric"),
    • method "*", c("UnivarLebDecDistribution","numeric"),
    • method "+", c("UnivarLebDecDistribution","numeric"),
    • generating function "UnivarLebDecDistribtion" had to be modified +utility 'mergegaps' catches situation where support has length 0 +abs - and Truncate - methods for AbscontDistribution use '.consolidategaps' ->COMPOUND DISTRIBUTIONS
    • Compound Distributions are now implemented; see ?CompoundDistribution, class?CompoundDistribution ->UNIVARIATE MIXING DISTRIBUTIONS
    • fixed some errors / made some enhancements acc. to mail by Krunoslav Sever [email protected]
  • ENHANCED ACCURACY BY LOG SCALE

  • enhanced accuracy for Truncation with Peter Dalgaard's trick
  • passed over to log-scale for getUp, getLow (again to enhance accuracy for distributions with unbounded support)
  • introduced new slots .lowerExact and .logExact for objects of class "Distribution" (or inheriting) to control whether the argument parts log[.p], lower.tail are implemented carefully in order to preserve accuracy.
  • ARITHMETICS -- enhanced "+" method +for DiscreteDistribution,DiscreteDistribution --- catches addition with Dirac-Distribution
  • we enforce to use FFT-based algorithm for LatticeDistributions if the supports of both summands may be arranged on a common lattice whenever the length of convolutional grid (= unique(sort(outer(support1, support2, "+"))) ) is smaller than the length of the product grid ( = length(support1) * length(support2) ) --- covers in particular m1Binom(p,size) + m2Binom(p',size) when m1, m2 are naturals > 1 ... -- convpow:
  • some minor enhancements in convpow and "+", "LatticeDistribution","LatticeDistribution" and correction of a buglet there (e.g., lattice width oould get too small) +method for AcDcLcDistribution gains argument 'ep' to control when to ignore discrete parts (or a.c. parts) which summands in binomial expansion of (acPart+discretePart)^\ast n to ignore +minor fix in method for DiscreteDistribution -- automatic image distribution generation
  • slot r is now /much/ faster / slimmer for results of *,/,^ (no split in pos/neg part necessary for this!)
  • slot d for results of *,/, exp() now is correct at 0 by extrapolation (and deletion wir .del0dmixfun of half of the part to avoid double counting in *,/) -- affine linear trafos return slot X0 of AffLin-Construction if resulting a=1 and b=0 -- sqrt now dispatches correctly for Abscont and DiscreteDistribution.
  • PLOTTING

    • enhanced automatic plotting range selection
    • plot-methods in branches/distr-2.1 now accept to.draw.arg no matter whether mfColRow==TRUE or FALSE
    • fixed xlim and ylim args for plots; ylim can now be matrix-valued...
    • realized suggestions by A. Unwin, Augsburg; plot for L2paramFamilies may be restricted to selected subplots;
    • also named parameters are used in axis annotation if available.
    • changed devNew to only open a device if length(dev.list())>0
    • plot (for distribution objects) now is conformal to the (automatic) generic, i.e. it dispatches on signature (x,y) and has methods for signature(x=,y="missing")
  • NEW / ENHANCED METHODS --getLow/getUp: +now available for UnivarLebDecDistribution, UnivarMixingDistribution --q.r, p.l (methods for right continuous quantile function and left continuous cdf)

    • for class AbscontDistribution (q.r with 'modifyqgaps')
    • for class UnivarLebDecDistribution
    • for class UnivarMixingDistribution --prob methods: +prob() for DiscreteDistribution-class returns vector of probabilities for the support points (named by values of support points) )
    • method for UnivarLebDecDistribution: returns a two-row matrix with
      • column names values of support points
      • first row named "cond" the probabilities of discrete part
      • second row named "abd" the probabilities of discrete part multiplied with discreteWeight; hence the absolute probabilities of the support points --methods p.ac, d.ac, p.discrete, d.discrete:
      • they all have an extra argument 'CondOrAbs' with default value "cond" which if it does not partially match "abs", returns exactly slot p (resp. d) the respective acPart/discretePart of the object else return value is weighted by acWeight/discreteWeight --new function 'makeAbscontDistribution' +to convert arbitrary univariate distributions to AbscontDistribution: takes slot p and uses AbscontDistribution(); in order to smear out mass points on the border, makeAbscontDistribution() enlarges upper and lower bounds --flat.LCD: +setgaps is called only if slot gaps is not yet filled --general technique: more freguent use of .isEqual --new / enhanced utilities (non-exported) +'modifyqgaps' in order to achieve correct values for slot q in case slot p hast constancy regions (gaps) +.qmixfun can cope with gaps and may return both left and right continuous versions +.pmixfun may return both left and right continuous versions in case slot p hast constancy regions (gaps)
  • DOCUMENTATION -new section "Extension packages" in package-help file 0distr-package.Rd -mention of CompoundDistribution-class in package-help file 0distr-package.Rd of devel version -new vignette "How to generate new distributions in packages distr, distrEx" in package distr ...

  • Rd-style:

    • several buglets detected with the fuzzier checking mechanism cf [Rd] More intensive checking of R help files, Prof Brian Ripley, 09.01.2009 10:25) [Rd] Warning: missing text for item ... in \describe? , Prof Brian Ripley,
  • S4 ISSUES:

    • fixed setGenerics- error reported by Kurt Hornik... "log", "log10", "gamma", "lgamma" are no longer redefined as generics. +explicit method "+" for Dirac,DiscreteDistribution +some changes to the connections between LatticeDistribution and DiscreteDistribution resp. between AffLinLatticeDistribution and AffLinDiscreteDistribution. key issues: +JMC has changed the way non-simple inheritance [i.e. in the presence of setIs relations] is treated (see distr; in particular show, and operator methods for LatticeDistribution) works now and could be released as 2.0.1 ->some explicit methods for LatticeDistribution, as due to setIs Relation it may no longer be inherited automatically from DiscreteDistribution since JMC's changes in S4 inheritance mechanism Sep/Oct 08
  • BUGFIXES +fixed a buglet in initialize for Cauchy Distribution +fixed bug in "+",LatticeDistribution,LatticeDistribution +it may be that even if both lattices of e1, e2 have same width, the convoluted support has another width! example: c(-1.5,1.5), c(-3,0,3) +matrix-valued ylim argument has not yet been dealt with correctly +fixed bug in plot-methods for argument "inner" under use of to.draw.arg argument +fixed a bug in convpow-method for AbscontDistribution +small buglets in plot-methods.R and plot-methods_LebDec.R (moved setting of owarn/oldPar outside) +fixed a bug in UnivarMixingDistribution.R (with new argument Dlist) +fixed a bug discovered by Prof. Unwin --- "+" trapped in a dead-lock coercing between DiscreteDistribution and LatticeDistribution +fixed a small buglet in convpow(). +fixed buglet in devel version of distr: getLow.R (wrong place of ")" ) +fixed some errors in plotting LCD and CompoundDistribution(and enhanced automatic axis labels by some tricky castings...) +UnivarMixingDistribution was too strict with sum mixCoeff == 1 +deleted some erroneous prints left over from debugging in ExtraConvolutionMethods.R +fixed some buglets in plot for distr (only in branch) +fixed redundant code in bAcDcLcDistribution.R +Patch to bug with AffLinAbscontDistribution

############## v 2.0.3 ##############

  • under the hood:
    • enhanced plotting (correct dispatch; opening of new device is controlled by option("newDevice") )
    • after JMC's changes: gone through setIs relations to ensure "correct" inheritance
  • new plot function for 'UnivarLebDecDistribution' : now plots 3 lines +first line common cdf and quantile function +second line abscont part +third line discrete part
  • new vignette "How to generate new distributions in packages distr, distrEx"
  • moved license to LGPL-3
  • enhancements for arithmetics:
    • fixed bug with AffLinAbscontDistribution for a*X+b, distribution X >=0
    • slot r is now /much/ faster and slimmer for results of *,/,^ (hint: no split in pos/neg part necessary for this!)
    • slot d for results of *,/, exp() now is correct at 0 by extrapolation (and deletion with .del0dmixfun of half of the part to avoid double counting in *,/)
    • affine linear trafos return slot X0 of AffLin-Construction if resulting a=1 and b=0
    • method sqrt() for distributions
  • correction of small buglet in validity to Norm-class

############## v 2.0 ##############

  • made calls to 'uniroot()', 'integrate()', 'optim(ize)()' compliant to https://stat.ethz.ch/pipermail/r-devel/2007-May/045791.html

  • new generating function 'AbscontDistribution'

  • new class 'UnivarMixingDistribution' for mixing distributions with methods / functions: +'UnivarMixingDistribution' (generating function) +flat.mix to make out of it a distribution of class 'UnivarLebDecDistribution'

  • new class 'UnivarLebDecDistribution' for a distribution with a discrete and a.c. part; corresponding methods / functions: +'UnivarLebDecDistribution' (generating function) +'acPart', 'discretePart' return corresponding parts +'acWeight', 'discreteWeight' return corresponding weights +special 'plot' functions (only for cdf and quantile function) [plotting jumps in both cdf and quantile function]

  • new class 'AffLinUnivarLebDecDistribution' for affine linear transformations of 'UnivarLebDecDistribution' (in particular for use with E())

  • new class union 'AcDcLcDistribution' as common mother class for 'UnivarLebDecDistribution', 'AbscontDistribution', 'DiscreteDistribution'; corresponding methods / functions:

  • enhanced arithmetic: (for 'AcDcLcDistribution')

    • convolution for 'UnivarLebDecDistribution'
    • affine linear trafos for 'UnivarLebDecDistribution'
    • 'numeric' / 'AcDcLcDistribution'
    • 'AcDcLcDistribution'^'numeric'
    • 'numeric'^'AcDcLcDistribution'
    • binary operations for independent distributions: o 'AcDcLcDistribution' * 'AcDcLcDistribution' o 'AcDcLcDistribution' / 'AcDcLcDistribution' o 'AcDcLcDistribution' ^ 'AcDcLcDistribution'
    • (better) exact transformations for exp() and log()
    • Minimum Maximum Truncation Huberization
    • convpow for 'UnivarLebDecDistribution'
  • 'decomposePM' decomposes distributions in positive / negative part (and in Dirac(0) if discrete)

  • 'simplifyD' tries to cast to simpler classes (e.g. if a weight is 0)

############## v 1.9 ##############

  • made calls to 'uniroot()', 'integrate()', 'optim(ize)()' compliant to https://stat.ethz.ch/pipermail/r-devel/2007-May/045791.html

  • new methods 'shape()' and 'scale()' for class Chisq with ncp=0

  • methods getLow, getUp for upper and lower endpoint of support of DiscreteDistribution or AbscontDistribution (truncated to lower/upper TruncQuantile if infinite)

  • added S4-method 'convpow' for convolutional powers from the examples of package 'distr' with methods for

    • 'LatticeDistribution' and 'AbscontDistribution'
    • and particular methods for o Norm, Cauchy, Pois, Nbinom, Binom, Dirac, and ExpOrGammaOrChisq (if summand 'is' of class Gammad)
  • moved some parts from package 'distrEx' to package 'distr'

    • generating function 'DiscreteDistribution'
    • univariate methods of 'liesInSupport()'
    • classes 'DistrList' and 'UnivariateDistrList'
    • generating functions EuclideanSpace() ,Reals(), Naturals()
  • 'LatticeDistribution'

    • new class 'Lattice' to formalize an affine linearly generated grid of (support) points pivot + (0:(Length-1)) * width
    • usual accessor/replacement functions to handle slots
    • new class 'LatticeDistribution' as intermediate class between 'DiscreteDistribution' and all specific discrete distributions from 'stats' package with a particular convolution method using FFT (also for 'convpow')
    • usual accessor function 'lattice' for slot 'lattice'
  • cleaning up the sources

  • revised generating functions/initialize methods according to http://tolstoy.newcastle.edu.au/R/e2/devel/07/01/1976.html

    • in particular all Parameter(-sub-)classes gain a valid prototype
  • new exact arithmetic formulae:

    • 'Cauchy' + 'Cauchy' : gives 'Cauchy'
    • 'Weibull' * 'numeric' : gives 'Weibull' resp. 'Dirac' resp 'AbscontDistribution' : acc. to 'numeric' >, =, < 0
    • 'Logis' * 'numeric'
      : gives 'Logis' resp. 'Dirac' resp 'AbscontDistribution' : acc. to 'numeric' >, =, < 0
    • 'Logis' + 'numeric'
      : gives 'Logis'
    • 'Lnorm' * 'numeric'
      : gives 'Lnorm' resp. 'Dirac' resp 'AbscontDistribution' : acc. to 'numeric' >, =, < 0
    • 'numeric' / 'Dirac'
      : gives 'Dirac' resp. error acc. to 'location(Dirac)' ==, != 0
    • 'DiscreteDistribution' * 1 returns the original distribution
    • 'AbscontDistribution' * 1 returns the original distribution
    • 'DiscreteDistribution' + 0 returns the original distribution
    • 'AbscontDistribution' + 0 returns the original distribution
  • enhanced Information:

  • command 'distrARITH()' gains an argument 'library'
  • new file MASKING and corresponding command 'distrMASK()' to describe the intended maskings
  • mentioned in package-help: startup messages may now also be suppressed by suppressPackageStartupMessages() (from package 'base')

  • formals for slots p,q,d as in package stats to enhance accuracy

    • p(X)(q, lower.tail = TRUE, log.p = FALSE)
    • q(X)(p, lower.tail = TRUE, log.p = FALSE)
    • d(X)(x, log = FALSE)

    used wherever possible; but backwards compatibility: always checked whether lowert.tail / log / log.p are formals

  • cleaning up of environment of r,d,p,q-slot - removed no longer needed objects

  • enhanced plot methods

    • for both AbscontDistributions & DiscreteDistributions : o optional width and height argument for the display (default 16in : 9in) -opens a new window for each plot -does not work with /Sweave/; workaround: argument withSweave=TRUE in .Rnw-file: use width and height argument like in <<plotex1,eval=TRUE,fig=TRUE, width=8,height=4.5>>= .... @
      o optional main, inner titles and subtitles with main / sub / inner

      • preset strings substituted in both expression and character vectors (x : argument with which plot() was called) ~ %A deparsed argument x ~ %C class of argument x ~ %P comma-separated list of parameter values of slot param of argument x ~ %N comma-separated = - list of parameter values of slot param of argument x ~ %D time/date at which plot is/was generated ~ %Q comma-separated list of parameter values of slot param of argument x in parenthesis or "" if empty
      • title sizes with cex.main, cex.inner, cex.sub
      • bottom / top margin with bmar, tmar
      • setting of colors with col / col.main / col.inner / col.sub o can cope with log-arguments o setting of plot symbols with pch / pch.a / pch.u (see ?"plot-methods") o different symbols for unattained / attained one-sided limits
        o do.points argument as in plot.stepfun() o verticals argument as in plot.stepfun() o setting of colors with col / col.points / col.vert / col.hor o setting of symbol size with with cex / cex.points (see ?"plot-methods")
    • for AbscontDistributions o (panel "q"): takes care of finite left/right endpoints of support o (panel "q"): optionally takes care of constancy regions (with do.points/verticals) o ngrid argument to set the number of grid points

    • for DiscreteDistributions : o using stepfun()

  • left-continuous c.d.f. method (p.l) and right-continuous quantile function (q.r) for DiscreteDistributions

  • new slot 'gaps' (a n x 2 matrix or NULL) for AbscontDistribution to cope with intervals where d-slot is 0.

    • new class OptionalMatrix (matrix or NULL)
    • accessor/replacement function gaps()
    • setgaps() to automatically fill gaps-slot
  • Version-management for changed class definitions to AbscontDistribution and to (changed by inheriting from LatticeDistribution!) subclasses of LatticeDistribution (Geom, Binom, Nbinom, Dirac, Pois, Hyper):

    • moved generics to isOldVersion(), conv2NewVersion() from distrSim to distr
    • moved (slightly generalized version of) isOldVersion() (now for signature "ANY") from distrSim to distr
    • new methods for conv2NewVersion for signature o "ANY" (fills missing slots with corresponding entries from prototype)
      o "LatticeDistribution": generates a new instance (with slot lattice(!)) by new(class(object), )
  • new (internally used) classes AffLinAbscontDistribution, AffLinLatticeDistribution and AffLinLatticeDistribution to capture the results of transformations Y <- a * X0 + b for a, b numeric and X0 Abscont/Discrete/LatticeDistribution and a class union AffLinDistribution of AffLinAbscontDistribution and AffLinLatticeDistribution to use this for more exact evaluations of functionals in distrEx

  • analytically exact slots d,p (and higher accuracy for q) for distribution objects generated by functions abs, exp, log for classes AbscontDistribution and DiscreteDistribution

DEPRECATED:

  • class GeomParameter --- no longer needed as this the parameter of a NBinom with size 1

############## v 1.8 ##############

  • Class DExp() introduced (with documentation)
  • show() for UnivariateDistribution now is the same as print()
  • dim() method for UnivariateDistribution
  • distr (together with distrEx, distrSim, distrTEst) now includes a vignette --- try vignette("distr")

############## v 1.7 ##############

  • standardMethods() is again included (with documentation)

  • distroptions() / getdistrOption() now behave exactly like options() / getOption() options --- also compare mail "Re: [Rd] How to implement package-specific options?" by Brian Ripley on r-devel, Fri 09 Dec 2005 - 11:52:46, see http://tolstoy.newcastle.edu.au/R/devel/05/12/3408.html

  • suggested by M. Maechler: on attaching the package there is a (sort of) warning as to the interpretation of +arithmetics for distributions as well as to the +accuracy of slots p,d,q filled by means of simulations; these warnings are issued at two places: (1) on attaching the package (2) at every show/print of a distribution o (2) can be cancelled by switching off a corresponding global option in distroptions() -- see ?distroptions .

  • all specific distributions (those realized as [r|d|p|q] like rnorm in package stats) now have valid prototypes

  • fixed arguments xlim and ylim for plot(signature("AbscontDistribution" or "DiscreteDistribution")) thus: plot(Cauchy(),xlim=c(-4,4)) gives reasonable result (and plot(Cauchy()) does not)

  • Internationalization: use of gettext, gettextf for output

  • explicitly implemented is() relations: R "knows" that o an Exponential(lambda) distribution also is a Weibull(shape = 1, scale = 1/lambda) distribution, as well as a Gamma(shape = 1, scale = 1/lambda) distribution o a Uniform(0,1) distribution also is a Beta(1,1) distribution o a Cauchy(0,1) distribution also is a T(df=1, ncp=0) distribution o a Chisq(df=n, ncp=0) distribution also is a Gamma(shape=n/2, scale=2) distribution

  • noncentrality parameter included for Beta, T, F distribution

  • exact +,* for Cauchy and Dirac, for latter also -,/

  • "simplifyr": changed default values (using option RtoDPQ.e)

  • masking of function sd from stats to have an additional ... argument

  • masking of function df from stats to have an additional ... argument

  • Internationalization: use of gettext, gettextf in output

  • updated citation file

  • noncentrality parameter included for Beta, Td, F (for new d,p,q,r, but compatible with 2.2.x) also in the documentation

  • Geom is now subclass of Nbinom

  • virtual superclass ExpOrGammaOrChisq for Chisq,Exp,Gammad

  • NEWS file

  • commented ARITHMETICS file

  • revised help for operators

  • new package documentation distr-package.Rd

############## v 1.6 ##############

Our package is reorganized:

  • distr from now on only comprises distribution classes and methods
  • simulation classes and methods have been moved to the new package distrSim
  • evalation classes and methods have been moved to the new package distrTEst
  • a new class distrEx has been added by Matthias Kohl, providing additional features like distances between distributions, expectation operators etc
  • a new class RandVar has been added by Matthias Kohl, providing conceptual treatment of random variables as measurable mappings

############## v 1.5 ##############

  • package is now using lazy loading
  • minor changes in the help pages
  • minor enhancements in plot for distributions (Gamma, discrete distributions)
  • package now includes a demo - folder; try demo("distr")
  • class Gamma has been renamed Gammad to avoid name collisions
  • we have a CITATION file now; consider citation("distr")
  • enhanced demos: + convolution of uniform variables now includes exact expressions + min/ max of two variables now available for discrete distributions
  • rd-Files have now a keyword entry for distribution and thus may be found by the search engine
  • exact formula for "Unif" o "numeric" where o \in { +,-,*,/ }

############## v 1.4 ##############

  • to avoid name collisions with short forms for TRUE and FALSE: classes T and F (T- and F-distributions) renamed to Td and Fd
  • package is now loaded as a binary => considerable speed gain
  • using subsititute the bodies of the r,d,p,q-function-slots distributions show the parameter values with which they were generated
  • convolutions and applications of the math group may now be traced in r-slot of a distribution object, compare r(sin(Norm()) + cos(Unif() * 3 + 2))
  • parameters of a distribution (mean, sd, etc) are now tested on length 1
    • we see the objects as implementations of univaritate distributions, so vectors make no sense here; rather one could gather several objects with possibly different parameters to a vector of distributions. Of course, the original functions rnorm etc remain unchanged and still allow for vector-valued parameters.
  • Classes "Parameter", "Distribution" , "UnivariateDistribution" are no longer VIRTUAL
  • "AbscontParameter" and "DiscreteParameter" are replaced by "Parameter"
  • type of slots d, p, q and param changed to "OptionalFunction" and "OptionalParameter", respectively

############## v 1.3 ##############

  • changes in the Help-File to pass Rcmd check

############## v 1.1 ##############

  • implementation of further exact convolution formulae for distributions Nbinom, Gamma, Exp, Chisq
  • exact formulae for scale transformations for the distributions Gamma, Exp
  • slot "seed" in simulation classes is now controlled and set via the setRNG package by Paul Gilbert

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("distr")

2.7.0 by Peter Ruckdeschel, 2 months ago


http://distr.r-forge.r-project.org/


Browse source code at https://github.com/cran/distr


Authors: Florian Camphausen [ctb] (contributed as student in the initial phase --2005), Matthias Kohl [aut, cph], Peter Ruckdeschel [cre, cph], Thomas Stabla [ctb] (contributed as student in the initial phase --2005), R Core Team [ctb, cph] (for source file ks.c/ routines 'pKS2' and 'pKolmogorov2x')


Documentation:   PDF Manual  


Task views: Probability Distributions, Robust Statistical Methods


LGPL-3 license


Imports stats, grDevices, utils, MASS

Depends on methods, graphics, startupmsg, sfsmisc

Suggests distrEx, svUnit, knitr


Imported by ROptRegTS, RobExtremes, RobLox, RobRex, distrDoc, genlogis, logcondens.mode, meteR, miCoPTCM.

Depended on by ROptEst, ROptEstOld, RandVar, RobAStBase, RobLoxBioC, distrEllipse, distrEx, distrMod, distrRmetrics, distrSim, distrTeach.

Suggested by RcmdrPlugin.IPSUR, geoCount.


See at CRAN