# 1.4.2 Added function for using output of hotdeck functions
# for imputing missing values in a dataset
#
# create.imputed is a NEW function that uses the output
# of hotdeck functions to impute missing values
#
# ########################################################################
#
# 1.4.1 Added function for comparing distributions, improved graphical comparisons
#
# comp.cont is a NEW function for empirical comparison of the marginal
# distributions of the same numerical variable(s)
# but estimated from two different data sources
#
# plotCont plots and compares also the empirical cumulative distribution
# function estimated from two different data sources
#
#
# ########################################################################
# 1.4.0 Addedd functions for plotting results, changes to some code for better management of the NAs
#
# NND.hotdeck and RANDwNND.hotdeck NO longer trasform the categorical matching variables in dummies
# when the chosen distance function is defined only for numerical variables; in practice, mixed-type matching variables
# can only be used with the Gower's distance
#
# fact2dummy: when a NA is observed for a categorical variable then the function puts NAs in all the dummy
# variables generated from it
#
# pw.assoc discards NAs before calculation of the associaione or PRE measures; removal follows the pairwise
# deletion rule (units where one of both the values are missing are discarded)
#
# plotTab is a NEW function for comparing the marginal distributions of the same categorical variable(s) but estimated
# from two different data sources
#
# plotCont is a NEW function for comparing the marginal distributions of the same numerical variable but
# estimated from two different data sources
#
# plotBounds is a NEW function providing a graphical summary of the width of the Frechet Bounds estimated with
# the Frechet.bounds.cat function
#
#
# ################################################################################################
#
# 1.3.0 changes in the functions related to uncertainty investigation when dealing with categorical variables
#
# Frechet.bounds.cat now permits to align marginal distributions of X variables via IPF algorithm
# (previously harmonization had to be done befor calling it by using harmonize.x function)
#
# Fbwidths.by.x provides penalty measures because of the increase of cells to estimate when increasing the number of Xs.
# Sparsness of tables is explicitly considered.
#
# New function selMtc.by.unc() permits to identify best subset of matching variables which minimize a penalized
# uncertainty estimate, as in D'Orazio, Di Zio, Scanu 2017 paper (see ref in help pages)
#
# Updates in pw.assoc() to allow computation of bias corrected Cramer's V, mutual information (also
# normalized), AIC and BIC. Results can be organized in a data.frame. Changes in the documentation layout
# to achieve coherence with documentation of other functions in the package
#
# Please note that Vignette is frozen to StatMatch 1.2.5, therefore it will not provide new feauter related to investigation
# of uncertainty and more in general selecting of matching variables.
# New vignette related to uncertainty topic is expected to be realesed in future.
#
# #####################################################################################################################
#
# 1.2.5 gower.dist is faster and more efficient due improvements of Jan van der Laan (also thanks to Ton de Waal )
#
# NND.hotdeck allows performing constrained search of donors, allowing donor to be selected not more than k times (k>=1).
# argument k is set by the user
#
# fixed a minor bug in RANDwNND.hotdeck (not affecting results)
#
# richer output in Frechet.bounds.cat and Fb.widths.byx
#
# 1.2.4 added the new function pBayes for applying pseudo-Bayes estimator to sparse contingency tables
#
# modified comb.samples to handle a continuous target variable (Y or Z)
#
# Faster versions of Frechet.bound.cat and Fbwidths.by.x.
#
# Fbwidths.by.x now provides a richer output.
#
# 1.2.3 corrected a bug in RANDwNND.hotdeck. Thanks to Kirill Muller
#
# 1.2.2 added 3 data sets used in the function's help pages and in the vignette
#
# modified the RANDwNND.hotdeck function to identify the subset of the donors by
# simple comparing the values of a single matching variable
#
# Minor modification of the hotdeck functions to handle and monitor the processing
# when dealing with donation classes
#
# 1.2.1 now Frechet.bounds.cat() can be called just to compute the uncertainty bounds
# when no X variables are available.
#
# RANDwNND.hotdeck can search for the closest k nearest neighbours by using the
# function nn2() in the package RANN (wrap of the Artificial Neural Network
# implemented in the package ANN). It is very fast and efficient when dealing
# with large data sources.
#
# Fix of a minor bug in mixed.mtc()
#
# 1.2.0 new function comp.prop() for computing similarities/dissimilarities
# between marginal/joint distributions of one or more categorical variables
#
# new function pw.assoc() to compute pairwise association measures among
# categorical response variable and a series of categorical predictors
#
# rankNND.hotdeck() can perform constrained matching too
#
# rankNND.hotdeck(), NND.hotdeck() and mixed.mtc() solve constrained problems
# more efficiently and faster by using solve_LSAP() in package "clue"
# or (slower) by means of functions in the package "lpSolve".
# It is no more possible to solve constrained problems by means
# of functions in package "optmatch"
#
# NDD.hotdeck(), RDDwNND.hotdeck() and rankNND.hotdeck() are more
# efficient in handling donation classes (thanks to Alexis Eidelman
# for suggestion).
#
# fixed a bug in mahalanobis.dist (thanks to Bruno C. Vidigal)
#
# 1.1.0 The function comb.samples() now allows to derive predictions
# at micro level for the target variables Y and Z
#
# 1.0.5 fixed some minor bugs
#
# 1.0.4 fixed some minor bugs
#
# 1.0.3 now mixed.mtc() can handle also categorical common variables
#
# fixed a bug in comb.samples() when handling factor levels
#
# new error messages in RANDwNND.hotdeck() when computing ditances
# between units with missing values
#
# 1.0.2 new function mahalanobis.dist() to compute the mahalanobis distance
#
# fixed a bug in mixed.mtc() when computing the range of admissible values
# for rho_yz
#
# fixed a bug in NND.hotdeck() and RANDwNND.hotdeck() when
# managing the row.names
#
# 1.0.1 new functions harmonize.x() and comb.samples() to perform statistical
# matching when dealing with complex sample survey data via
# weight calibration.
#
# new function Frechet.bounds.cat() to explore uncertainty when dealing with
# categorical variables. The function Fbwidths.by.x() permits to
# identify the subset of the common variables that performs better in reducing
# uncertainty
#
# New function rankNND.hotdeck() to perform rank hot deck distance
#
# Update of RANDwNND.hotdeck() to use donor weight in selecting a donor
#
# new function maximum.dist() that computes distances according to the
# L^Inf norm. A rank transformation of the variables can be used.
#
# 0.8 fixed some bugs in NND.hotdeck() and RANDwNND.hotdeck()
#