fairml (0.8)

  * support the following generalized linear model families in fgrrm():
     Poisson (log-linear regression), Cox (proportional hazards regression)
     and multinomial (multi-class logistic regression). Gaussian (linear 
     regression) and binomial (logistic regression) families were already
     supported in previous versions.
  * the plot() moethods for "fair.model" objects now produces more diagnostic 
     plots for all models and families.
  * added the individual fairness from Berk et al. (2017) and Scutari, Panero 
     and Proissl (2022) to frrm() and fgrrm().
  * added more synthetic data sets for testing and prototyping.
  * added zlm.orig() and zlrm.orig(), which implement Zafar et al. (2019)'s
     fair regression and logistic regression models with the original
     constraints on the covariances.
  * support user-specified fairness definitions/functions.

fairml (0.7)

  * fixed the computation of precision and recall in fairml.cv() (thanks
     Francesca Panero).
  * when computing precision and recall in fairml.cv(), the first class of the
     response is the "negative" class and the second is the "positive" class,
     not the other way round (thanks Francesca Panero).

fairml (0.6.3)

  * fixed predict() with just a single predictor variable (thanks Florian 
     Pfisterer).
  * better error message when the column names of predictors and sensitive
     attributes result in clashes in the respective design matrices (thanks
     Florian Pfisterer).

fairml (0.6.2)

  * changed the maintainer email.

fairml (0.6.1)

  * fixed conditionals involving is() vs inherit().

fairml (0.6)

  * preliminary implementation of a linear regression model with the fairness
     constraints from Zafar et al. (2019).
  * the equality-of-opportunity version of Komiyama's definition of fairness
     now works with fgrrm().
  * fairml.cv() now supports fgrrm().
  * added a logLik() method for all fair models.
  * added an RMSE profile plot for linear regressions.
  * Zafar's logistic regression is now faster and more robust.

fairml (0.5)

  * preliminary implementation of the logistic regression model with fairness
     constraints from Zafar et al. (2019).
  * frrm() can now enforce both statistical parity and equality of
     opportunity, as specified by the "definition" argument.
  * added an argument "cluster" to enable parallel computing in fairml.cv()
     and fairness.profile.plot().
  * added an optional argument to regularize the predictors in frrm() with a
     ridge penalty.
  * added an argument "save.auxiliary" (default: FALSE) to reduce the size of
     the model objects returned by nclm() and frrm() by not saving the fitted
     values and the residuals of the auxiliary models that computes the
     decorrelated predictors.
  * included the Adult and Bank data sets from UCI, used in Zafar et al.
     (2019).
  * added a precision-recall profile plot for classifiers, and more
     constraints profile plots.

fairml (0.4)

  * preliminary implementation of the fair ridge regression model.
  * fairness.profile.plot() no longer plots the intercept of the model.
  * the "epsilon" argument has been renamed to "unfairness" thorough the
     package.
  * loss() has been renamed to cv.loss().
  * added cv.unfairness() to match cv.loss().

fairml (0.3)

  * support custom covariance matrix estimators in nclm(); Komiyama et al.
     (2018) plugged various kernel estimators in the model estimation.
  * added an optional argument to regularize nclm() with a ridge penalty.
  * implemented cross-validation in fairml.cv() and an associated loss() 
     function.

fairml (0.2)

  * improved argument sanitization.
  * improved nclm() numeric stability by standardizing variables.
  * added the data sets used in Komiyama et al. (2018).

fairml (0.1)

  * initial release.
  * preliminary implementation of the regression model with fairness
     constraints from Komiyama et al. (2018), without kernel regularization.
  * implemented print(), summary(), coef(), fitted(), residuals(), sigma(),
     nobs(), sigma(), predict() and all.equal() methods.
  * added some profile plots in fairness.profile.plots().