Tuesday, June 8, 2021

05.02

Week 5, Day 2

I met with Roger Dev for a couple hours today, and dove into the code for the causality toolkit. It was really useful overall; I feel much more comfortable with the codebase, and I'm well-equipped to start my implementation. My first steps will be to restructure the causal graph src to include encapsulation for each of the causality levels:
  1. Probability Space
  2. Causal Graph
  3. Intervention
  4. Counterfactuals
Here are a few more next steps, summarized from the notes taken during my meeting with Roger:
  • cGraph intervention only finds one backdoor blocking set (change to a loop).
  • Check if CDE code actually determines the CDE or if it's an NDE algorithm (CDE should have do-calculus).
  • Look into generation of numpy.random distributions.
  • interventionTest effectively calculates the ACE -- restructure to remove duplication.
  • Come up with synthetic example for testing (reference interventionTest.py)
  • Major question: How to model data for an individual (unit-level)? Essentially, we want to create "worlds" of synthetic data (for each observation). Then, the task is to find the closest "world" to this one, to get around the fundamental problem of causal inference.
  • Create another function like predictDist (called "findClosestWorld", etc) -- Instead of returning distribution of one variable, return the whole subspace and average them together. This function should use a new abstract function (also called by predictDist).
Side note: I turned 20 today! ðŸŽ‰