Multivariate Synthetic Control Method Using Time Series

Three generalizations of the synthetic control method (which has already an implementation in package 'Synth') are implemented: first, 'MSCMT' allows for using multiple outcome variables, second, time series can be supplied as economic predictors, and third, a well-defined cross-validation approach can be used. Much effort has been taken to make the implementation as stable as possible (including edge cases) without losing computational efficiency. A detailed description of the main algorithms is given in Becker and Klößner (2018) .


Changes in version 1.3.3 (2018-05-04)


  • minor documentation update (references)

Bug fixes

  • Fixed a bug in mscmt for multivariate applications introduced in version 1.3.2

Changes in version 1.3.2 (2018-02-19)

New features

  • added list element 'predictor.table' containing aggregated statistics of predictor values to output of 'mscmt' (feature request)


  • list element 'dataprep.scaled' (in output of 'mscmt') now contains unscaled variants 'X0.unscaled' and 'X1.unscaled' of (aggregated) predictor values

Changes in version 1.3.1 (2018-01-04)


  • minor documentation update (references)

Bug fixes

  • some fixes/increased robustness for edge cases (e.g. single predictor)

  • progress bar fixed (thereby eliminating compiler warnings)

Changes in version 1.3.0 (2017-08-17)

New features

  • cross validation is now supported by function mscmt, see the corresponding documentation.


  • point size is now settable in ggplot.mscmt.

  • lp's in ill-conditioned problems are now tackled with the help of various lp solvers to improve robustness. Packages Rglpk and lpSolveAPI are required now.

Bug fixes

  • 'no sunny donors' case fixed.

  • gamma-factors fixed.

  • some small bug fixes in ggplot.mscmt.

Changes in version 1.2.0 (2017-01-30)

New features

  • automatic repeated estimation with different outer optimizers and random seeds, optionally on a cluster.


  • reasonable default parameters and documentation for outer optimizers have been added.

  • improved cluster support: (malfunctioning) load balancing with parLapplyLB replaced by load balancing via clusterApplyLB.

Bug fixes

  • fixed special treatment of 'one sunny donor' case.

Changes in version 1.1.0 (2016-11-29)

New features

  • newly supported outer optimizer "none" to implant 'artificial' solutions (fixed w and optionally fixed v).

  • many new outer optimizers are now supported, more documentation will follow.

  • function compare() for comparison of estimation results, including corresponding updates for print.mscmt and ggplot.mscmt.


  • names of agg.fns (component of mscmt results) are now set automatically.

  • user-defined agg.fns are now automatically exported to the cluster.

  • changed default optimizer to DEoptC.

  • predictor weights are not printed any more as verbose output in estimations.

  • some packages were moved from "Imports" to "Suggests".

  • number of calls to inner optimizer is now counted for benchmarking purposes.

  • package startup message added.

Bug fixes

  • objective function weights alpha/beta/gamma are now treated correctly.

  • calls to the lp solver are now more robust.

  • some typos in vignettes have been corrected.

  • all data had to be sorted chronologically, this is now optional.

  • improveSynth reported wrong 'True' W*(V) if W*(V) was not optimal.

Changes in version 1.0.0 (2016-07-25)

New features

  • first public release of this package.


  • no changes yet

Bug fixes

  • no bugfixes yet

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.3.4 by Martin Becker, 2 years ago

Browse source code at

Authors: Martin Becker [aut, cre] , Stefan Klößner [aut] , Karline Soetaert [com] , Jack Dongarra [cph] , R.J. Hanson [cph] , K.H. Haskell [cph] , Cleve Moler [cph] , LAPACK authors [cph]

Documentation:   PDF Manual  

GPL license

Imports stats, utils, parallel, lpSolve, ggplot2, lpSolveAPI, Rglpk, Rdpack

Suggests Synth, DEoptim, rgenoud, DEoptimR, GenSA, GA, soma, cmaes, Rmalschains, NMOF, nloptr, hydroPSO, pso, LowRankQP, kernlab, reshape, knitr, rmarkdown

See at CRAN