NEWS.md
pdfcdf and cdfpdf, which use Rcpp to transform matrics/arrays/vectors between pdf->cdf and cdf->pdf respectively.Arrdist, which generalises the Matdist to a three-dimensional array, useful for Bayesian predictions where the third dimension is multiple distributions.dparse()
rep
Matdist to simplify the process of creating a vector distribution for WeightedDiscrete distributions. Matdist acts as a univariate distribution whilst technically being multivariate - it contains a matrix of probabilities and provides methods for acting on those.plot.Matdist to wrap matplot around Matdist, c.Matdist to combine multiple matrix distributions into one, [.Matdist for extracting WeightedDiscrete or Matdist distributions from Matdist, and as.Distribution.mixMatrix as a specialised mixing method for Matdist that creates a new Matdist instead of a MixtureDistribution
as.Distribution.matrix to now coerce to a Matdist, a vector of WeightedDisrete is still possible.cdf parameter must be increasingconfidence to calculate confidence intervalsprint method now only shows active parametersas.Distribution.matrix for converting matrices to a VectorDistribution of WeightedDiscrete distributions... to dstrs to allow decorator argument to be passed throughlength.VectorDistribution
ids parameter to VectorDistribution to allow specifying names for wrapped distributions. Extended extract.VectorDistribution so these ids can be used for extraction.dstr to construct distributions more easily, e.g. dstr("Binom", size = 4) instead of Binomial$new(size = 4).dstrs to construct a VectorDistribution of distributions.ParameterSet method setParameterValue now includes resolveConflicts parameter for resolving conflicts between conflicting parameters (see below). This should primarily only be used internally and is useful for transforming composite distributions.__ (before _). This may affect backwards compatibility in rare cases.Binomial$new(prob = 0.1, qprob = 0.2) would cause an error. This may affect bacwards compatibility however should not do so if distributions are correctly constructed/updated without conflicts.setParameterValue in ParameterSet no longer errors if a non-settable parameter is updated, instead a warning is given and the parameter is ignored.SDistribution parameter defaults are set. Previously these were set in the constructor with function defaults, now they are set in the ParameterSet. This should not affect backwards compatibility. This should improve speed of distribution construction.MixtureDistribution now uses extraDistr::rmnom for speed improvements.ParameterSet but these will be improved further in a future update.SDistribution ParameterSet objects.rep.Distribution for replicating distributions into vectors, mixtures, or productscdfSquared2Norm analytic methods to most kernelsas.MixtureDistribution and as.ProductDistribution
MixtureDistribution parameter setWeightedDiscrete distributions are now truncated at the minimum length in the vector for pdf, cdf, quantile
CoreStatistics methods now give the option to use cubature::cubintegrate and all associated parameters.{pracma} requirement in ExoticStatistics
WeightedDiscrete, cdf was previously positive when below distribution support, now zero.ExoticStatistics decoratorsuppressMoments argument in Distribution and computation of movements in constructor, improving construction speeds.kurtosis and skewness type no longer included in properties. The kurtosis and skewness methods are still available as public methods, and the types are still in summary; to manually find these use exkurtosisType and skewType.ParameterSet now allowedworkingSupport is now a public method and not an active bindingVectorDistribution now return arraysmedian now available for SDistributions where closed form expressions are knownRcpp with analytical log-pdf expressions. Analytical lower.tail and log.p will come in future versions.EmpiricalMV for empirical multivariate distributionstype is now required in construction custom Distributions as the previous method of ‘guessing’ was inefficient.ParameterSetCollection for Wrappers. Same functionality as before but much more efficient.$addDeps and $deps to ParameterSets to replace updateFunc. This allows faster and more precise control over parameter updates.$addChecks and $checks to ParameterSets to replace custom checks in distributions, and $addTrafos and $trafos to replace custom parameter transformations before setting. These allows clearner control over parameter setting.categories parameter in Categorical now called nCategories
Categorical now requires elements to be provided as a list to elements
settable in ParameterSet now refers to the more intuitive flag that describes if a parameter can be set after constructionlength active binding to ParameterSet to return number of parameters in the set.squared2Norm in Kernels to pdfSquared2Norm and added x to arguments to allow for shifted norms.mixturiseVector for mixing vector distributions$support, $symmetry, $kurtosisType, $skewnessType, $valueSupport, $variateForm, $type
Loglogistic and ShiftedLoglogistic so only the latter has a location parameter. Additionally added an analytical rand expression to ShiftedLoglogistic, and Loglogistic now implemented from package actuar
ArrayDistribution
listSpecialSets
WeighedDiscrete distribution now stores samples and probabilities as parameters.verbose argument from distribution constructorupdate method in ParameterSet moved to private
squared2Norm from the ExoticStatistics decoratorupdateFunc from ParameterSet
.getRefParams from SDistributions and added deps
decorate function that was overwriting the decorators private field instead of appendingSDistribution and Kernel
$rand for Geometric distribution with trials == TRUE , previously was randomising between not form parameter in NegativeBinomial, now errors if supplied argument is not in one of the four choices (previously reverted to “fbs”)MultivariateNormal rand() which was not adding the mean correctlyVectorDistribution for same distribution type removed in d/p/q/r functions as well as non-generating function methodsVectorDistribution when only one row or column of data passed to d/p/qDirichlet, DiscreteUniform, Frechet Gumbel, Pareto, Rayleigh, Triangular, Wald now implemented from package extraDistr
Frechet $cdf
log and lower.tail now available for all SDistributions and imputation possible for customs with CoreStatistics
NegativeBinomial now uses Rcpp for d/p/q/rstats are now vectorised across parameters in CDegenerate, ShiftedLoglogistic now RcppK parameter from MultivariateNormal
Wald, symmetry was incorrectly flagged as “symmetric”TruncatedDistribution support - previously support interval type was "[]" instead of "(]". An important implication is that even if truncating at or outside of the distribution limits, the support will still be changed if the distribution was left-closed to become left-open.listDistributions which was overriding filtering with simplify
decorate function that was overwriting the decorators private field instead of appendingplot.VectorDistribution for more efficient plotting of mutiple distributions at the same timeMultivariateNormal$rand() . i) the distribution mean wasn’t being added to the transformation correctly; ii) the Choleskey decomposition wasn’t transposed causing incorrect simulationsWeibull, thanks to Paul Northrop (@paulnorthrop) for pointing this out.plot preventing only quantile being plotted on its owndecorators, traits, valueSupport, variateForm, type, properties, support, symmetry, sup, inf, dmax, dmin, kurtosisType, skewnessType
VectorDistribution that was causing decorators not to be added properlyVectorDistribution that was causing an error when extracting decorated wrapped distributionspracma to suggests. Removed utils dependency.package field in distributions, now called packages
packages lists all packages required to be installed for a distribution, if NULL only distr6 requiredset6 packagelistSpecialSets, use set6::listSpecialSets insteadupdate of ParameterSet , any properly defined distributions will have this covered in primary parameter, thus increasing speed.as.data.table has been moved from a ParameterSet method to an S3 dispatch. Fixes an important bug of overloading as.data.table but may affect backwards compatibility.distrSimulate for convenient simulation from any distributionplot to be able to handle distributions without quantile or rand. Optimised runtime by preventing automatic computation of pdf and cdf.VectorDistribution - missing which argumentBernoulli - rand was incorrectly calling dbinom not rbinom
mode of distributionsmode to documentationc.Distribution
VectorDistribution print method more in line with base R vectorsplot function for plotting the pdf, cdf, survival, quantile, hazard, cumhazard or distr6 objectslines function for superimposing distr6 plotsqqplot function for comparing distr6 distributions to each other or to other theoretical distributionsExtract.VectorDistribution for extracted distributions from inside a VectorDistribution, see the big update below.decorate now allows users to specify the Decorator as a character as well as supplying the object, this makes it simpler when using distr6 whilst unattachedVectorDistribution. Now the VectorDistribution only constructs the internal wrapped distributions when they are extracted or when a function, such as d/p/q/r, are called. This massively reduces a bottleneck in constructing the distribution. Additionally added functions for extracting distributions from inside the VectorDistribution. The only difference that should affect backwards compatibility is that the distribution argument must now be a character and not an object. Custom (i.e. non-SDistribution) distributions should be used in conjunction with the distlist initializer.skewness, kurtosis, entropy, mgf, cf, and pgf to WeightedDiscrete and Empirical
VectorDistribution and for CoreStatistics functions as well as support for only one arguments passed to d/p/q/r for fast comparisons between wrapped distributionsWeightedDiscrete distribution variance calculationEmpirical that was stopping the cdf of the first point in the distribution being evaluatedDistribution constructor for wrapperserrormsg argument to assertions so a custom error message can be providedEmpirical that was causing results to be droppedTruncatedDistribution that prevented multivariate distributions being truncatedEmpirical that was calculating sample not populationEmpirical distribution for distributions arising from observed samples (e.g. from MC sampling methods)simulateEmpiricalDistribution: function for sampling without replacement from an Empirical distributionArrayDistribution - This wrapper is now merged with ProductDistribution by adding two new parameters to ProductDistribution that allow for construction either by a distribution list of by naming a distribution and providing a parameter list or data.tablecdf of discrete distributions evaluated between integers are now evaluated after rounding down and do not return 0, e.g. Binomial$new()$cdf(1.8) == Binomial$new()$cdf(1)
ProductDistribution: params and distribution, so that it can either function as before or as the ArrayDistribution wrapper which is now deprecated.VectorDistribution: params and distribution, so that it can either function as before or as a generalisation to the ArrayDistribution wrapper which is now deprecated.ParameterSet expected integer in setParameterValue
n to strprint and print to clean the print method for distributions (especially wrappers) with multiple parametersvectordist argument to MixtureDistribution for better compatibility with VectorDistribution
short_name of Uniform, Logistic, Normal, and Triangular kernels to remove Kern. The ClassNames (and thus constructors) remain the samelistKernels and listSpecialSet now return data.tables with stringsAsFactors = FALSE
Degenerate distribution re-classified as discreterand return of a Vector Distribution (transposed data.table and added column names)crayon dependencyMixtureDistribution that was causing rand to erroneously return integersCategorical documentationCategorical distributionsummary and print now return self invisibly for better pipingstopwarn argument removed from parameters() method in Distribution and ParameterSet classes