Issues like the one encountered in #32, where simple input errors are made but no errors are thrown notifying the user of incorrect inputs and how to rectify them, is a source of confusion for downstream users.
Proposal
Add a more comprehensive checks regime to the core instantiation function synthetic_control() and better error handling throughout the package to adequately inform users when usage errors are being made.
The checks regime should ensure that:
The intervention unit is actually present in the supplied unit field.
The intervention time point is actually present in the supplied time field.
The supplied time field is either an int or Date object (but not a string).
There is no unit with complete missingness for any one of the predictor variables (this check would need to live in the generate_predictor() predictor function.
If you see this and this issue-task is still open, please supply other checks you think might be useful (i.e. are there any user-error friction points that you've run into that a useful error and check would have spotted quickly if in place?).
Problem
Issues like the one encountered in #32, where simple input errors are made but no errors are thrown notifying the user of incorrect inputs and how to rectify them, is a source of confusion for downstream users.
Proposal
Add a more comprehensive checks regime to the core instantiation function
synthetic_control()
and better error handling throughout the package to adequately inform users when usage errors are being made.The checks regime should ensure that:
unit
field.time
field.generate_predictor()
predictor function.If you see this and this issue-task is still open, please supply other checks you think might be useful (i.e. are there any user-error friction points that you've run into that a useful error and check would have spotted quickly if in place?).