ebenmichael / augsynth

Augmented Synthetic Control Method
MIT License
147 stars 52 forks source link

Negative weights #71

Closed Germancampos closed 2 years ago

Germancampos commented 2 years ago

Hello everyone,

I'm replicating the code from the "the vignette for staggered adoption" section and I'm having a problem because I don't understand the weights. I extract the weights from the synthetic control with "ppool_syn2$weights", but some weights are negative. I add all the weights for each treated unit and the sum if gives a result of 1 for all the treated units. I compare these weights with figure B.9 of the annex to the paper "SYNTHETIC CONTROLS WITH STAGGERED ADOPTION" and I do not obtain the same results. In the paper it is indicated that the weights must be non-negative but I do get negative weights. Could someone please explain to me why this happens?

ebenmichael commented 2 years ago

How negative are the weights?

Sometimes you'll end up with very small negative weights because the optimization problem is only solved up to a certain tolerance. You can just treat those as 0. For example the default for multisynth only solves up to 1e-4 tolerance, so weights that are between 0 and -1e-4 could show up, but they're basically zero.

Germancampos commented 2 years ago

Yes, negative weights are very small. Okay, so I'll take them as zeros. Thank you very much for your help.