Comments (6)
After my biostat course (or during it), I will plan on trying to implement g-estimation of SNM. Basically, the estimator is computational intensive since you need to search through potential values. You have to explore many points in a parameter space (fine-grained enough). For interactions, this becomes a a grid search problem. As of now, optimization is beyond me. Plans are to get a working g-estimation of SNM for simple scenarios. As some reference points, the following R package might be useful to compare (and pull from)
https://oce.ovid.com/article/00001648-201703000-00029/HTML
https://cran.r-project.org/web/packages/DTRreg/DTRreg.pdf
Reference to argue / compare to marginal structural models
https://cdn1.sph.harvard.edu/wp-content/uploads/sites/343/2013/03/msm-cie-fnl.pdf
from zepid.
Looks like statsmodels
GEE
will need to be used. I will also need to minimize \psi
through something like scipy
. Unfortunately, going to be somewhat slow since I have to use GEE
which takes longer to fit than GLM
. However, the weights
option only works for GEE
for what I want it to do.
Not ideal overall since g-estimation needs some heavy lifting. It is likely to be horrendously slow... Might be worth toying around with sklearn
to compare time. Once I implement DCDR, I will need sklearn
as a dependency
from zepid.
According to Technical 14.1 in HR, a multiplicative model can be used when Y is positive. For a binary Y, it can be used when Pr(Y=1) is small in all strata of L. These don't generalize to time-varying treatments
As a result of this, I plan on only implementing g-estimation for additive SNM. I think this is justified on several fronts. First is the above issues listed. Second, additive scale interaction/modification is more meaningful for public health (and other fields)
from zepid.
There are some interesting potential sensitivity analyses for g-estimation (fine point 14.2). Basically instead of alpha = 0, you can assess unmeasured confounding by allowing alpha =/= 0. For example, it could be be alpha = 0.1
Source for further details on sensitivity analyses
https://www.jstor.org/stable/2669923?seq=1#metadata_info_tab_contents
EDIT: I think I will only be able to do this for the optimization algorithm. Basically, you would add a minus term to the number to minimize. Should be easy to do. I don't know how I would do this for the closed form solution.
from zepid.
Scratch like everything I said regarding binary Y's. I had misunderstood. In actuality, estimating Risk Ratios is more difficult, not Risk Differences. G-estimation will support but ATE and RD. For now, I don't plan on adding support for risk ratios (for several reasons, including implementation difficulty and some assumptions required for SNM)
from zepid.
Closed via #96
from zepid.
Related Issues (20)
- IPTW handle PerfectSeparationErrors in the marginal structural model better
- AIPW for survival analysis ? HOT 1
- Dual treatments
- ValueError better pytest strategy
- Package compatibility? HOT 2
- Update documentation (and possibly re-organize) HOT 2
- MonteCarloGFormula
- Add Odds Ratio and other estimands for AIPTW and TMLE
- Addition of meta-analysis tools
- add p-value column in a forrest plot/ effectmeasureplot HOT 2
- Enhancement in graphics.py to change odds text size HOT 1
- Saving DAGs programatically HOT 11
- sklearn dependancy in setup.py should be scikit-learn HOT 1
- AIPW formula equivalent to what's in the literature? HOT 2
- Perfect separation error for using `SingleCrossfitTMLE` HOT 2
- Superlearn check weights HOT 2
- SingleCrossFit `invalid value encountered in log` HOT 8
- Unable to install latest 0.9.0 version through pip HOT 7
- Risk Ratio Summary HOT 1
- The default regression argument of zepid.base.interaction_contrast_ratio differs from the description in the documentation. 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 zepid.