=== mc2d === Version 0.3-0 ============= DEPENDENCIES - 'ggpubr' (and its ~60 recursive dependencies) is no longer needed. - R (>= 3.3.0) is required (was R >= 2.10.0). CHANGES THAT MAY AFFECT EXISTING CODE The API is unchanged and, for a given seed, results are identical to version 0.2-2, except for the corrected bugs (see BUG FIX). Code that ran without error with 0.2-2 may nevertheless behave differently in the following cases: - Warnings: rpert, rtriang, rbetagen, (d, p, q)pert and (d, p, q)betagen (also through mcstoc) now issue their warnings ("NaN in ...", "mode < min or mode > max"), which were silenced. The rtrunc / mcstoc(rtrunc = TRUE) warning about rounding errors is issued when any bound is extreme (was: only with a single bound and scalar parameters). Code run with options(warn = 2), or tests expecting no warning, may stop. - pmin(x) / pmax(x) with a single mcnode return the mcnode (was a list of one mcnode): pmin(x)[[1]] now returns the first value of the node. - mcdatanocontrol returns the mcnode (it returned the value of 'outm'). - New errors instead of silent wrong results: mcdata with a 1 x k matrix for a "0" mcnode when k is neither 1 nor nvariates, pmin / pmax with incompatible numbers of variates, mcdatanocontrol with an invalid 'type', cornode with a 'V' mcnode not in the first position. - is.mcnode returns FALSE for objects with an invalid type or dimension (e.g. hand-modified attributes): functions checking their input now reject them. - mcprobtree evaluates the elements of 'mcvalues' where it is called: inside a function, a local mcnode is used instead of a global one with the same name. - outm(, value, which.node) now modifies the node: the following summaries and graphs use the new outm. - Different values (previous results were wrong): rmultinomial (and mcstoc) with several values of 'size' or 'prob'; rempiricalC when n < length(values); dtriang / ptriang with parameters of lengths that are not multiples; dlnormb, plnormb, qlnormb, rlnormb with mean <= 0 or sd < 0 (now NaN); dmultinomial, ddirichlet, dbetasubj, dpert, qmqi in the cases listed below. - outm = "mean" is computed with rowMeans(): results may differ from 0.2-2 in the last digit (about 1e-16), and be NaN instead of NA when NA and NaN are mixed; a test with identical() may fail. - Graphs: hist / spaghetti / gghist / ggspaghetti with several outm functions, spaghetti with negative values, the x range of plot.mccut, and converg with more than 1000 iterations (drawn on a grid of iterations) look different. - gghist, ggplotmc and ggspaghetti on mc objects are built without 'ggpubr': they still return a ggplot object of class "ggarrange" (with several pages, a list of class "ggarrange"), but functions of 'ggpubr' applied to these objects may behave differently. BUG FIX - Ops.mcnode: operations between a "V", "U" or "0" mcnode and an array (or a matrix) always failed. - outm, mcdata, mcprobtree, Ops.mcnode: a vector of functions as "outm" (e.g. outm = c("min","max")) failed with R >= 4.3. - outm(x, value, which.node) did not modify the node of an mc object. - mcdata: a 1 x k matrix was accepted (and truncated or recycled) for a "0" mcnode when k was neither 1 nor nvariates. - mcdatanocontrol: returned the value of 'outm' instead of the mcnode; the "type" argument was not checked. - mcstoc and rtrunc: 'rtrunc = TRUE' or 'lhs = TRUE' failed with the default function (runif) or with a function given as pkg::fun. The warning about rounding errors in truncated distributions was almost never issued. - mcapply: margin "unc" or "variates" failed on a dimension of length 1. - pmin / pmax: a single argument returned a list; incompatible numbers of variates are now an error. - mcprobtree: the elements of 'mcvalues' were only found if they were global variables (e.g. it failed inside a function); 'mcvalues' given as a variable and a single branch failed. - cornode: a 'V' mcnode not in the first position was not rejected. - is.mcnode: some invalid "0" mcnodes and invalid types were accepted. - rmultinomial: the rows were not in the order of the parameters when 'size' or 'prob' had several values (e.g. mcstoc(rmultinomial, "VU", size = , ...)). - dmultinomial: x > 0 for a probability of 0 gave a density of 1 instead of 0. - rempiricalC: the support ('values' and 'prob' given as vectors) was truncated to n values when n < length(values). - qempiricalD: NA in p led to an error. rempiricalD: a single value failed. - dtriang, ptriang: wrong results when 'min' was the longest parameter or when the parameters had lengths that are not multiples. - dpert: NaN for large values of shape (underflow). - dbetasubj: wrong values (NaN or a non-zero density) outside [min, max]. - ddirichlet: NaN when x = 0 and alpha = 1. - dlnormb, plnormb, qlnormb, rlnormb: mean <= 0 or sd < 0 now give NaN. - qmqi: a probability < 0 corrupted the other results (now NaN). - rpert, rtriang, rbetagen, (d, p, q)pert, (d, p, q)betagen: the warnings of the package ("NaN in ...", "mode < min or mode > max") were never shown. - summary.mc: the warning about NA was issued once per node. - converg: failed with nvariates > 1 and with non finite values (log scale). - tornadounc: wrong results with use = "pairwise.complete.obs" and NA; the option use = "complete.obs" failed for mccut objects. - evalmccut: failed when nsu = 1 or when no 'U' or 'VU' node was built in the first block, or when 'U' and 'VU' nodes were mixed in the first block. - plot.mccut failed when all the nodes had the same type. The x range of the graph included the number of NA. - plot.tornadounc, ggtornadounc: failed with the default value of 'stat'. plot.tornado, ggtornado: failed with a single input. - plot.mc, ggplotmc: a list of xlim / ylim was rejected. - hist, gghist, spaghetti, ggspaghetti: with several functions in "outm", each function was applied to the result of the previous one. - spaghetti: the x axis started at 0 even for negative values. - ggspaghetti: failed with a logical mcnode. PERFORMANCE (large mcnodes, e.g. nsv = 1e5 and nsu = 200) - The "outm" functions sum, mean, min and max are vectorized (summary, print, quantile, tornado, hist, ...): up to 100 times faster. - spaghetti: 12 times faster, without building a data frame of all the values. - converg: the running statistics are computed on a grid of iterations when there are more than 1000 iterations (was quadratic). - dempiricalD, pempiricalD, qempiricalD: vectorized (100 to 300 times faster). - dempiricalC, pempiricalC, qempiricalC, rempiricalC with varying min / max: vectorized (40 times faster). - ddirichlet (20x), dmultinomial (5x), rtriang (2x), rpert, lhs. - tornado (Spearman): ranks computed once (2x). summary, tornadounc, quantile: no copy of the whole node. - Ops.mcnode, mcdata, mcstoc, pmin, pmax: fewer copies of the data. - evalmccut: the results are filled in place (no copy at each iteration). Version 0.2-2 ============= BUG FIX - a bug in extractvar (didn't work for "U" or"V" nodes) - a bug in summary.mc (digits = 3 was hard coded in the function) Version 0.2-1 ============= BUG FIX - a bug in ggtornado - an issue in pert and triangular distribution when min, mode and max were < .Machine$double.eps^0.5 NEW FUNCTIONS - spaghetti (and ggplot2 version "ggspaghetti"): plot a spaghetti plot (method for mc or mcnode objects) - gghist : equivalent to hist, in the gglplot2 framwork (method for mc or mcnode objects) - ggplotmc : equivalent to plot, in the gglplot2 framwork (method for mc or mcnode objects) Version 0.2-0 ============= NEW DISTRIBUTIONS - Beta subjective distribution (d, p, q, rbetasubj) - Minimum Quantile Information Distribution (d,p,q,rmqi) NEW FUNCTIONS - spaghetti (and ggplot2 version "ggspaghetti"): plot a spaghetti plot (method for mc or mcnode objects) - gghist : equivalent to hist, in the gglplot2 framwork (method for mc or mcnode objects) - ggplotmc : equivalent to plot, in the gglplot2 framwork (method for mc or mcnode objects) Version 0.1-22 ============= BUG FIX - one bug in rpert Version 0.1-21 ============= BUG FIX - one bug in rpert Version 0.1-20 ============= NEW FEATURES - lognormb distribution: a lognormal distribution with arithmetic mean and sd parametrization. - Pert and triangular distribution as an alternative parametrization using the mean Version 0.1-18 ============= BUG FIX - potential bugs linked to the default limit of 60 characters in the deparse function. Let to errors in hist, plot, converg, ... Version 0.1-17 ============= BUG FIX - one bug in rtriang, rpert, rbetagen corrected (error when the length of the arguments differed) Version 0.1-16 ============= BUG FIX - one bug in rtriang corrected (returned 1 when min == mode == max) - one error in the manual was corrected Version 0.1-15 ============= BUG FIX - one bug in mcstoc for multivariates nodes with truncation was corrected Version 0.1-14 ============= BUG FIX - one bug for multivariates nodes with truncation was corrected - addition of tests for truncations (function rtrunc and mcstoc (option trunc=TRUE)). Some unexpected results linked to rounding errors could be obtained for some extreme truncations (see examples). Note that it is not possible to catch all errors and a warning is now provided in the documentation. IMPROVEMENTS - pert is definitively better and quicker. - the vignettes were revised Version 0.1-13 ============= BUG FIX - pert, betagen and triang functions were slow in previous versions. This is fixed - some of the rdist functions returned matrixes when some of the arguments were matrixes - all parameters but the first one are now vectorized in the univariate p, d, q, r distribution functions Version 0.1-12 ============= BUG FIX - a bug in the definition of d2V and d3V in the mc2dLmEnglish vignette - a bug in dmultinomial with log = FALSE: it led to NA values NEW FEATURES - creation of a NAMESPACE for R.2.14 compliance - additionnal xlim and ylim arguments in plot.mc Version 0.1-11 ============= BUG FIX - rtriang was really slow in Version 0.1-10 Version 0.1-10 ============= NEW FEATURES - dempiricalC is now vectorized and improved - better control of limit cases in distributions BUG FIXES - major correction: dbetagen and dpert led to wrong values - major correction: mcapply led to incorrect results when the function returned a vector of length n and if margin was 'unc' or 'variates' - one bug in extractvar led to errors Version 0.1-9 ============= NEW FEATURES - dmultinormal, a vectorized version of dmvnorm IMPROVEMENTS - all p- d- q- r-distributions return numeric(0) if the first argument (x, q, p or n) are numeric(0) BUG FIXES - dmultinomial led to errors Version 0.1-8 ============= NEW FEATURES - pmin.mcnode and pmax.mcnode - a second vignette IMPROVEMENTS - error message in mc when one argument was neither an mc nor an mcnode BUG FIXES - rempiricalC and qempiricalC lead to errors Version 0.1-7 ============= NEW FEATURES - The documentation is now a real vignette - mcratio, a function to measure variability and uncertainty - extractvar and addvar, two utilities for multivariate nodes IMPROVEMENTS - Ops.mcnode function is much more efficient and less memory consuming - great improvement for speed in mcstoc for multivariate distributions - plot.mc proposes to fill the envelopes - empiricalD is (a little bit) more efficient BUG FIXES - lhs: could bug when sent without default distribution. Now, distr="runif" by default. - lhs: nsv = ndvar() and nsu = ndunc() by default - mcstoc: issue when rtrunc with linf or lsup as multivariate nodes: solved - rtrunc: issue for discrete distribution. It is now clear that rtrunc sample within (linf, lsup]. As a consequence, linf should be strictly lower than lsup - same issue in mcstoc Version 0.1-6 ============= BUG FIXES - Pert distribution: could bug when is.equal(mu,mode) while mu!=mode. - mcprobtree: allows now to use mcvalues with a type different of the type of the ouptut Version 0.1-5 ============= - Initial release on CRAN.