MultiLevelIPF 0.3.7.9000 (2021-03-26)

  • Add ml_replicate() for replicating the reference sample of a fitted problem (#38).
  • Fix the error when a level is missing from the reference sample (#32, @asiripanich).
  • Fix test on Windows.
  • Avoid converting sparse matrix to full matrix.
  • If the controls contain values of zero for existing observations in the reference sample, the removal of these observations now works in all cases (#30).

MultiLevelIPF 0.3-7 (2018-01-22)

  • Add overview in package documentation.
  • Add examples to all functions.
  • Explicitly document return values to ml_fit().

MultiLevelIPF 0.3-6 (2017-03-28)

  • Set default maximum number of iterations for HIPF to 2000.
  • Convert documentation to Markdown.

MultiLevelIPF 0.3-5 (2016-09-03)

  • Add “Driven by” and “Related work” sections to the README.

MultiLevelIPF 0.3-4 (2016-08-03)

  • Use a sparse matrix for the flattened reference sample.

MultiLevelIPF 0.3-3 (2016-06-06)

  • Status messages with verbose = TRUE are prepended with a time stamp.
  • Fail if NA group ID found.

MultiLevelIPF 0.3-2 (2016-04-25)

  • Reorganized and renamed internal datasets.

MultiLevelIPF 0.3-1 (2016-04-17)

  • Fitting result contains iterations and tol members (#28).
  • Fixed model matrix of “separate” type if only grand totals are given.
  • ml_fit() gains tol argument, which determines the success of a fitting operation.
  • ml_fit objects have new members success, rel_residuals, and flat_weighted_values (#28).
  • HIPF and IPU stop iterating if tolerance is reached.
  • IPU and HIPF abort iteration when the weights do not change measurably between two iterations (#27).

MultiLevelIPF 0.3 (2016-04-14)

  • Features
    • New algoritms: HIPF (#2) and IPU.
  • Interface
    • New as.flat_ml_fit_problem() is used to coerce input for the ml_fit_ functions.
    • format() and print() methods for classes fitting_problem, flat_ml_fit_problem and ml_fit.
    • Flattened reference sample now contains observations in rows, and controls in columns (#26).
    • flatten_ml_fit_problem() gains new model_matrix_type argument that allows selecting an alternative model matrix building method where all cross-classifications are allocated to a column, regardless of overlaps. Flattened problems store the type of model matrix used, it is also shown with the format() and print() methods.
  • Improvements
    • Reference sample doesn’t need to be ordered by group ID anymore.
    • Remove individualsPerGroup special variable.
    • Allow problems with individual-only controls.
    • Check for correspondence of levels between sample and controls.
    • Check for NA values in controls.
  • Technical changes
    • Use grake package again for calibration, because the alternatives are worse: sampling uses a too low tolerance, survey forcibly loads MASS, and laeken could work but is unrelated (which is the reason grake has been started in the first place).
    • Duplicate rows are kept in the reference sample.
    • Rename control_totals to target_values.
    • New toy_example() allows easier access to bundled examples, load with readRDS().
    • Move legacy format (IPAF) and related functions to data-raw directory.
    • Use factors internally.
  • Performance
  • Tests
    • Specific test for households with the same signature.
  • Documentation
    • Enhance example.
    • Include flat example problem (group size = 1 for all groups).
  • Cleanup

Version 0.2 (2016-01-30)

  • New functions compute_margins() and margins_to_df() for validation
  • Support specification of prior weights in construction of fitting problems
  • Use survey::grake() instead of grake::calibWeights().
  • Adapt to change of undocumented behavior in base R.
  • Don’t alter column names of controls if they are of type data.table (explicitly convert to data.frame)
  • Proper handling of corner cases (reference sample with one row, and grand total controls and dummy controls with only one category)
  • Allow character variables (in addition to factors) as control variables
  • Explicit error message if reference sample is not sorted
  • If name of count column in controls is not specified, it is determined automatically (with a message in verbose mode)
  • Expansion of weights loads Matrix package if necessary
  • Clarify documentation
  • Straighten out imports, use importFrom instead of ::