Comments (2)
Thanks for bringing this to our attention and for the clear example.
To clarify, attr(tau_hat, "weights")$vals
is the sequence of values of the loss function we minimize estimate the unit weights omega, the time weights lambda, and the regression coefficients beta of Y on X
that we see as we run the optimizer --- it's not the weights themselves. It's the curve synthdid_rmse_plot(tau_hat)
displays to help diagnose problems like this one.
What seems to be happening is that when the covariates are large, the gradient steps we take when estimating beta are so large that they increase our loss function. The scaling issue comes up because the step size used by sc.weight.fw.covariates is from a pre-specified schedule --- it takes steps of the form beta_{t+1} = beta_t + (1/t)*gradient --- instead of something more appropriate to the scale of the covariates and therefore of the gradient. We should be able to fix this by incorporating some curvature information, either by using something like a quasi-newton step instead of a gradient step or choosing the step size via line search. Let's look into doing this.
from synthdid.
Thanks Taro and David. I am experiencing a similar issue. Would you recommend as an interim solution just doing a linear transformation - e.g. dividing covariates by some "large" constant?
from synthdid.
Related Issues (20)
- Extracting data behind plot HOT 2
- event study graph similar to 4b in SDID Stata publication (page 25) HOT 1
- Confusion about synthdid_plot HOT 1
- panel.matrices error: no variation in treatment status HOT 6
- Integer values for dates in synth did plot HOT 2
- Plot - change axis limits HOT 2
- Replication code for Table 1 HOT 5
- panel matrices issue HOT 1
- I would like to know if it is feasible to add a control group in this way. HOT 1
- panel.matrices HOT 1
- 1 treatment group and 2 control groups - error for vcov(tau.hat, method='placebo'): dim(X) must have a positive length
- Proposal to enhance stopping criterion in sc.weight.fw.covariates HOT 1
- How to extract standard error from results.
- how to examine the significance of variables HOT 1
- No Variation in Treatment Status error HOT 1
- Alternative SE Clustering Specifications? HOT 2
- Encountering the error "nrow(Y) > N0 is not TRUE" after synthdid_estimate HOT 1
- Incorrect date labels and se calculation issue HOT 1
- What are the treatment effect +- numbers? HOT 2
- The package cannot use this data. Treatment adoption is not simultaneous. HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from synthdid.