(This page has no text content)
DATA “Matheus has written the best book yet to teach you how to go from toy models to state-of-the-art methods that work on real data and solve important, practical problems.” —Sean J. Taylor Chief Scientist at Motif Analytics “Causal Inference in Python is an accessible introduction to causal inference, focusing on the tools and contexts most familiar to the Python data analytics community.” —Nick Huntington-Klein Professor of Economics and author of The Effect: An Introduction to Research Design and Causality Causal Inference in Python Twitter: @oreillymedia linkedin.com/company/oreilly-media youtube.com/oreillymedia How many buyers will an additional dollar of online marketing attract? Which customers will only buy when given a discount coupon? How do you establish an optimal pricing strategy? Causal inference is the best way to determine how the levers at your disposal affect the business metrics you want to drive. And it only requires a few lines of Python code. In this book, author Matheus Facure explains the largely untapped potential of causal inference for estimating impacts and effects. Managers, data scientists, and business analysts will learn classical causal inference methods, like A/B tests, linear regression, propensity score, synthetic controls, and difference-in-differences—and modern developments such as using machine learning for heterogeneous effect estimation. Each method is illustrated by an application in the industry. This book helps you: • Learn how to use basic concepts of causal inference • Frame a business problem as a causal inference problem • Understand how bias interferes with causal inference • Learn how causal effects can differ from person to person • Use observations of the same customers across time for causal inference • Use geo and switchback experiments when randomization isn’t an option • Examine noncompliance bias and effect dilution Matheus Facure is an economist and senior data scientist at Nubank, the biggest FinTech company outside Asia. He’s successfully applied causal inference in a wide range of business scenarios, from automated and real-time interest and credit decision-making, to cross-selling emails and optimizing marketing budgets. He’s the author of Causal Inference for the Brave and True. 9 7 8 1 0 9 8 1 4 0 2 5 0 5 7 9 9 9 US $79.99 CAN $99.99 ISBN: 978-1-098-14025-0
Praise for Causal Inference in Python Causal inference is one of the most important approaches for modern data scientists, but there’s still a big gap between theory and applications. Matheus has written the best book yet to teach you how to go from toy models to state-of-the-art methods that work on real data and solve important, practical problems. I’m excited to finally have the perfect resource to recommend that clearly explains the latest approaches and provides detailed code and examples for those who learn by doing. —Sean J. Taylor, Chief Scientist at Motif Analytics The analyst who avoids answering all causal questions is limiting themselves greatly, and the analyst who answers them carelessly is asking for trouble. Facure’s book is an accessible introduction to causal inference, focusing on the tools and contexts most familiar to the Python data analytics community —Nick Huntington-Klein, Professor of Economics and author of The Effect: An Introduction to Research Design and Causality Causal inference tools play a major role in guiding decision-making. In this engaging book, Matheus Facure provides a clear introduction to these tools, paying particular attention to how to use them in practice. The business applications and detailed Python code will help you get the job done. —Pedro H. C. Sant’Anna, Emory University and Causal Solutions
(This page has no text content)
Matheus Facure Causal Inference in Python Applying Causal Inference in the Tech Industry Boston Farnham Sebastopol TokyoBeijing
978-1-098-14025-0 [LSI] Causal Inference in Python by Matheus Facure Copyright © 2023 Matheus Facure Alves. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://oreilly.com). For more information, contact our corporate/institutional sales department: 800-998-9938 or corporate@oreilly.com. Acquisitions Editor: Nicole Butterfield Development Editor: Virginia Wilson Production Editor: Katherine Tozer Copyeditor: Kim Cofer Proofreader: James Fraleigh Indexer: Sue Klefstad Interior Designer: David Futato Cover Designer: Karen Montgomery Illustrator: Kate Dullea July 2023: First Edition Revision History for the First Edition 2023-07-14: First Release See http://oreilly.com/catalog/errata.csp?isbn=9781098140250 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. Causal Inference in Python, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. The views expressed in this work are those of the author and do not represent the publisher’s views. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights.
Table of Contents Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi Part I. Fundamentals 1. Introduction to Causal Inference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 What Is Causal Inference? 3 Why We Do Causal Inference 4 Machine Learning and Causal Inference 5 Association and Causation 6 The Treatment and the Outcome 7 The Fundamental Problem of Causal Inference 8 Causal Models 9 Interventions 10 Individual Treatment Effect 12 Potential Outcomes 12 Consistency and Stable Unit Treatment Values 13 Causal Quantities of Interest 14 Causal Quantities: An Example 16 Bias 18 The Bias Equation 19 A Visual Guide to Bias 21 Identifying the Treatment Effect 23 The Independence Assumption 25 Identification with Randomization 25 Key Ideas 28 v
2. Randomized Experiments and Stats Review. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Brute-Force Independence with Randomization 31 An A/B Testing Example 33 The Ideal Experiment 37 The Most Dangerous Equation 38 The Standard Error of Our Estimates 41 Confidence Intervals 42 Hypothesis Testing 49 Null Hypothesis 51 Test Statistic 53 p-values 54 Power 56 Sample Size Calculation 57 Key Ideas 59 3. Graphical Causal Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Thinking About Causality 61 Visualizing Causal Relationships 63 Are Consultants Worth It? 65 Crash Course in Graphical Models 66 Chains 67 Forks 68 Immorality or Collider 70 The Flow of Association Cheat Sheet 71 Querying a Graph in Python 72 Identification Revisited 75 CIA and the Adjustment Formula 76 Positivity Assumption 78 An Identification Example with Data 78 Confounding Bias 80 Surrogate Confounding 81 Randomization Revisited 82 Selection Bias 83 Conditioning on a Collider 83 Adjusting for Selection Bias 87 Conditioning on a Mediator 89 Key Ideas 90 vi | Table of Contents
Part II. Adjusting for Bias 4. The Unreasonable Effectiveness of Linear Regression. . . . . . . . . . . . . . . . . . . . . . . . . . . 95 All You Need Is Linear Regression 95 Why We Need Models 96 Regression in A/B Tests 97 Adjusting with Regression 100 Regression Theory 104 Single Variable Linear Regression 105 Multivariate Linear Regression 105 Frisch-Waugh-Lovell Theorem and Orthogonalization 106 Debiasing Step 107 Denoising Step 109 Standard Error of the Regression Estimator 110 Final Outcome Model 111 FWL Summary 112 Regression as an Outcome Model 114 Positivity and Extrapolation 116 Nonlinearities in Linear Regression 117 Linearizing the Treatment 119 Nonlinear FWL and Debiasing 121 Regression for Dummies 122 Conditionally Random Experiments 122 Dummy Variables 124 Saturated Regression Model 127 Regression as Variance Weighted Average 129 De-Meaning and Fixed Effects 131 Omitted Variable Bias: Confounding Through the Lens of Regression 134 Neutral Controls 135 Noise Inducing Control 136 Feature Selection: A Bias-Variance Trade-Off 138 Key Ideas 139 5. Propensity Score. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 The Impact of Management Training 141 Adjusting with Regression 143 Propensity Score 144 Propensity Score Estimation 145 Propensity Score and Orthogonalization 146 Propensity Score Matching 146 Inverse Propensity Weighting 149 Variance of IPW 151 Table of Contents | vii
Stabilized Propensity Weights 155 Pseudo-Populations 156 Selection Bias 157 Bias-Variance Trade-Off 158 Positivity 159 Design- Versus Model-Based Identification 161 Doubly Robust Estimation 162 Treatment Is Easy to Model 164 Outcome Is Easy to Model 167 Generalized Propensity Score for Continuous Treatment 169 Key Ideas 175 Part III. Effect Heterogeneity and Personalization 6. Effect Heterogeneity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 From ATE to CATE 179 Why Prediction Is Not the Answer 181 CATE with Regression 183 Evaluating CATE Predictions 187 Effect by Model Quantile 189 Cumulative Effect 192 Cumulative Gain 194 Target Transformation 197 When Prediction Models Are Good for Effect Ordering 199 Marginal Decreasing Returns 199 Binary Outcomes 200 CATE for Decision Making 201 Key Ideas 205 7. Metalearners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Metalearners for Discrete Treatments 208 T-Learner 209 X-Learner 212 Metalearners for Continuous Treatments 217 S-Learner 218 Double/Debiased Machine Learning 223 Key Ideas 230 viii | Table of Contents
Part IV. Panel Data 8. Difference-in-Differences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Panel Data 236 Canonical Difference-in-Differences 239 Diff-in-Diff with Outcome Growth 240 Diff-in-Diff with OLS 242 Diff-in-Diff with Fixed Effects 243 Multiple Time Periods 244 Inference 246 Identification Assumptions 249 Parallel Trends 249 No Anticipation Assumption and SUTVA 251 Strict Exogeneity 252 No Time Varying Confounders 252 No Feedback 253 No Carryover and No Lagged Dependent Variable 254 Effect Dynamics over Time 255 Diff-in-Diff with Covariates 257 Doubly Robust Diff-in-Diff 260 Propensity Score Model 260 Delta Outcome Model 260 All Together Now 261 Staggered Adoption 263 Heterogeneous Effect over Time 268 Covariates 272 Key Ideas 273 9. Synthetic Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Online Marketing Dataset 275 Matrix Representation 278 Synthetic Control as Horizontal Regression 280 Canonical Synthetic Control 284 Synthetic Control with Covariants 287 Debiasing Synthetic Control 291 Inference 295 Synthetic Difference-in-Differences 298 DID Refresher 298 Synthetic Controls Revisited 298 Estimating Time Weights 301 Synthetic Control and DID 303 Key Ideas 305 Table of Contents | ix
Part V. Alternative Experimental Designs 10. Geo and Switchback Experiments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 Geo-Experiments 310 Synthetic Control Design 311 Trying a Random Set of Treated Units 314 Random Search 316 Switchback Experiment 319 Potential Outcomes of Sequences 321 Estimating the Order of Carryover Effect 321 Design-Based Estimation 324 Optimal Switchback Design 328 Robust Variance 331 Key Ideas 334 11. Noncompliance and Instruments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Noncompliance 337 Extending Potential Outcomes 339 Instrument Identification Assumptions 342 First Stage 344 Reduced Form 345 Two-Stage Least Squares 346 Standard Error 347 Additional Controls and Instruments 349 2SLS by Hand 351 Matrix Implementation 351 Discontinuity Design 353 Discontinuity Design Assumptions 355 Intention to Treat Effect 356 The IV Estimate 357 Bunching 358 Key Ideas 359 12. Next Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 Causal Discovery 362 Sequential Decision Making 362 Causal Reinforcement Learning 363 Causal Forecasting 363 Domain Adaptation 364 Closing Thoughts 365 Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 x | Table of Contents
Preface Picture yourself as a new data scientist who’s just starting out in a fast-growing and promising startup. Although you haven’t mastered machine learning, you feel pretty confident about your skills. You’ve completed dozens of online courses on the subject and even gotten a few good ranks in prediction competitions. You are now ready to apply all that knowledge to the real world and you can’t wait for it. Life is good. Then, your team leader comes with a graph that looks something like this: And an accompanying question: “Hey, we want you to figure out how many addi‐ tional customers paid marketing is really bringing us. When we turned it on, we defi‐ nitely saw some customers coming from the paid marketing channel, but it looks like we also had a drop in organic applications. We think some of the customers from paid marketing would have come to us even without paid marketing.” Well…you were expecting a challenge, but this?! How could you know what would have happened without paid marketing? I guess you could compare the total number of applications, organic and paid, before and after turning on the marketing campaign. But in a fast xi
growing and dynamic company, how would you know that nothing else changes when they launch the campaign (see Figure P-1)? Figure P-1. Fast-growing company with an ever-changing product Changing gears a bit (or not at all), place yourself in the shoes of a brilliant risk ana‐ lyst. You were just hired by a lending company and your first task is to perfect its credit risk model. The goal is to have a good automated decision-making system that assesses the customers’ credit worthiness (underwrites them) and decides how much credit the company can lend them. Needless to say, errors in this system are incredi‐ bly expensive, especially if the given credit line is high. A key component of this automated decision making is understanding the impact more credit lines have on the likelihood of customers defaulting. Can they manage a huge chunk of credit and pay it back or will they go down a spiral of overspending and unmanageable debt? To model this behavior, you start by plotting credit average default rates by given credit lines. To your surprise, the data displays this unexpected pattern: xii | Preface
The relationship between credit and defaults seems to be negative. How come giving more credit results in lower chances of defaults? Rightfully suspicious, you go talk to other analysts in an attempt to understand this. It turns out the answer is very simple: to no one’s surprise, the lending company gives more credit to customers that have lower chances of defaulting. So, it is not the case that high lines reduce default risk, but rather, the other way around. Lower risk increases the credit lines. That explains it, but you still haven’t solved the initial problem: how to model the relationship between credit risk and credit lines with this data. Surely you don’t want your system to think more lines implies lower chances of default. Also, naively randomizing lines in an A/B test just to see what happens is pretty much off the table, due to the high cost of wrong credit decisions. What both of these problems have in common is that you need to know the impact of changing something that you can control (marketing budget and credit limit) on some business outcome you wish to influence (customer applications and default risk). Impact or effect estimation has been the pillar of modern science for centuries, but only recently have we made huge progress in systematizing the tools of this trade into the field that is coming to be known as causal inference. Additionally, advance‐ ments in machine learning and a general desire to automate and inform decision- making processes with data has brought causal inference into the industry and public institutions. Still, the causal inference toolkit is not yet widely known by decision makers or data scientists. Hoping to change that, I wrote Causal Inference for the Brave and True, an online book that covers the traditional tools and recent developments from causal inference, all with open source Python software, in a rigorous, yet lighthearted way. Now, I’m taking that one step further, reviewing all that content from an industry perspective, with updated examples and, hopefully, more intuitive explanations. My goal is for this book to be a starting point for whatever question you have about making decisions with data. Prerequisites This book is an introduction to causal inference in Python, but it is not an introduc‐ tory book in general. It’s introductory because I’ll focus on application, rather than rigorous proofs and theorems of causal inference; additionally, when forced to choose, I’ll opt for a simpler and intuitive explanation, rather than a complete and complex one. It is not introductory in general because I’ll assume some prior knowledge about machine learning, statistics, and programming in Python. It is not too advanced either, but I will be throwing in some terms that you should know beforehand. Preface | xiii
For example, here is a piece of text that might appear: The first thing you have to deal with is the fact that continuous variables have P T = t = 0 everywhere. That’s because the probability is the area under the density and the area of a single point is always zero. A way around this is to use the conditional density f T X instead of the conditional probability P T = t X . I won’t provide much explanation on what a density is and why it is different from a probability. Here is another example, this time about machine learning: Alternatively, you can use machine learning models to estimate the propensity score. But you have to be more careful. First, you must ensure that your ML model outputs a calibrated probability prediction. Second, you need to use out-of-fold predictions to avoid bias due to overfitting. Here, I won’t explain what a machine learning model is, nor what it means for it to have calibrated predictions, what overfitting is, or out-of-fold prediction. Since those are fairly basic data science concepts, I’ll expect you to know them from the start. In fact, here is a list of things I recommend you know before reading this book: • Basic knowledge of Python, including the most commonly used data scientist libraries: pandas, NumPy, Matplotlib, scikit-learn. I come from an economics background, so you don’t have to worry about me using very fancy code. Just make sure you know the basics pretty well. • Knowledge of basic statistical concepts, like distributions, probability, hypothesis testing, regression, noise, expected values, standard deviation, and independence. Chapter 2 will include a statistical review, in case you need a refresher. • Knowledge of basic data science concepts, like machine learning model, cross- validation, overfitting, and some of the most used machine learning models (gra‐ dient boosting, decision trees, linear regression, logistic regression). • Knowledge of high school math, such as functions, logarithms, roots, matrices, and vectors, and some college-level math, such as derivatives and integrals. The main audience of this book is data scientists working in the industry. If you fit this description, there is a pretty good chance that you cover the prerequisites that I’ve mentioned. Also, keep in mind that this is a broad audience, with very diverse skill sets. For this reason, I might include some notes, paragraphs, or sections that are meant for the most advanced reader. So don’t worry if you don’t understand every single line in this book. You’ll still be able to extract a lot from it. And maybe you’ll come back for a second read once you’ve mastered some of the basics. xiv | Preface
Outline Part I covers the basics concepts on causal inference. Chapter 1 introduces the key concepts of causal inference as you use them to reason about the effect of cutting pri‐ ces. Chapter 2 talks about the importance of A/B testing (or randomized control trial) not only as an instrument for decision making, but as the gold standard you will use to benchmark the other causal inference tools. This will also be a great opportunity to review some statistical concepts. Chapter 3 is mostly theoretical, covering causal identification and graphical models, a powerful method for (literally) drawing your assumptions about the causal process and reasoning about what you need to do in order to untangle association from causation. After finishing Part I, you should have the basic foundation to think in terms of causal inference. In Part II you’ll be introduced to two of the workhorses for untangling causation from correlation: linear regression and propensity weighting. Chapter 4 covers linear regression, but not from a perspective that most data scientists are familiar with. Rather, you’ll learn about an important bias removal technique: orthogonalization. Chapter 5 covers propensity score and doubly robust estimation. Part III takes what you saw in Part II and adds machine learning and big data to the mix. You’ll look into causal inference as a tool for personalized decision making. Through the eyes of a food delivery service, you’ll try to understand which customers should be given discount coupons to capture their loyalty and which customers don’t need that extra incentive. In Chapter 6, you’ll enter the world of heterogeneous treat‐ ment effects. Chapter 7 goes into some of the recent developments in the intersection between machine learning and causal inference. In this chapter, you’ll learn methods like the T-, X-, and S-learners and Double/Debiased Machine Learning, all in the con‐ text of treatment personalization. Part IV adds the time dimension to causal inference. In some situations, you’ll have records of the same customers or markets across multiple time periods, which builds up to what is called a panel dataset. You’ll learn how to leverage panels to uncover the true impact of paid marketing, even without being able to randomize who gets to see your advertisements. Chapter 8 will walk you through difference-in-differences, including some of the recent developments in this literature. Chapter 9 will cover synthetic control (and variations of it), also in the context of understanding the impact of marketing campaigns. Finally, Part V dives into alternative experiment designs, for when randomization is off the table. Chapter 10 will cover geo-experiments, where the goal is to find regions to treat and regions to serve as controls, and switchback experiments, for when you have very few units of analysis and wish to figure out the treatment effect by turning the treatment on and off for the same unit. Chapter 11 dives into experiments with Preface | xv
noncompliance and introduces you to instrumental variables (IV). It also briefly cov‐ ers discontinuity design. Conventions Used in This Book The following typographical conventions are used in this book: Italic Indicates new terms, URLs, email addresses, filenames, and file extensions. Constant width Used for program listings, as well as within paragraphs to refer to program ele‐ ments such as variable or function names, databases, data types, environment variables, statements, and keywords. Constant width bold Shows commands or other text that should be typed literally by the user. Constant width italic Shows text that should be replaced with user-supplied values or by values deter‐ mined by context. This element signifies a tip or suggestion. This element signifies a general note. This element indicates a warning or caution. Using Code Examples Supplemental material (code examples, exercises, etc.) is available for download at https://github.com/matheusfacure/causal-inference-in-python-code. If you have a technical question or a problem using the code examples, please email support@oreilly.com. xvi | Preface
This book is here to help you get your job done. In general, if example code is offered with this book, you may use it in your programs and documentation. You do not need to contact us for permission unless you’re reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing examples from O’Reilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your product’s documentation does require permission. We appreciate, but generally do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: “Causal Inference in Python by Matheus Facure (O’Reilly). Copyright 2023 Matheus Facure Alves, 978-1-098-14025-0.” If you feel your use of code examples falls outside fair use or the permission given above, feel free to contact us at permissions@oreilly.com. O’Reilly Online Learning For more than 40 years, O’Reilly Media has provided technol‐ ogy and business training, knowledge, and insight to help companies succeed. Our unique network of experts and innovators share their knowledge and expertise through books, articles, and our online learning platform. O’Reilly’s online learning platform gives you on-demand access to live training courses, in-depth learning paths, interactive coding environments, and a vast collection of text and video from O’Reilly and 200+ other publishers. For more information, visit https://oreilly.com. How to Contact Us Please address comments and questions concerning this book to the publisher: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 800-889-8969 (in the United States or Canada) 707-829-7019 (international or local) 707-829-0104 (fax) support@oreilly.com https://www.oreilly.com/about/contact.html Preface | xvii
We have a web page for this book, where we list errata, examples, and any additional information. You can access this page at https://oreil.ly/causal-inference-in-python. For news and information about our books and courses, visit https://oreilly.com. Find us on LinkedIn: https://linkedin.com/company/oreilly-media. Follow us on Twitter: https://twitter.com/oreillymedia. Watch us on YouTube: https://youtube.com/oreillymedia. Acknowledgments First, I would like to express my gratitude to my amazing editor, Virginia Wilson. I am grateful for all the feedback and patience you have shown me. Without you, this book would not have been written. I am also thankful for Nicole Butterfield and the entire team at O’Reilly for supporting my first work and putting so much trust in me. Also, a special thanks to Danny Elfanbaum, who helped me out a lot with technical issues during the writing process. I am indebted to all the technical reviewers who dedicated their precious time to review this book. Thank you, Laurence Wong, for the very detailed comments and for suggesting important additions to the book. Thank you, Adrian Keister, for your thorough review, incredibly pertinent critiques, for trying out the code and making very relevant suggestions on how to make it clearer. The book has greatly improved thanks to your feedback. Jorge Reyes, thanks for leaving no stone unturned and spot‐ ting very hard-to-find mistakes in the technical notation, for all the relevant ques‐ tions you made, and for all the kind compliments. Thank you, Roni Kobrosly, for your comments on how to make the book more accessible and engaging. Thank you, Subhasish Misra, for the helpful feedback, especially on Chapter 5. Shawhin Talebi, I appreciate the suggestions you have made on very pertinent topics to add to the book. Thank you to all those who provided me with more content-specific feedback. Thank you, Guilherme Jardim Duarte, for all your help with all things related to Pearlian causality, especially in reviewing Chapter 3. Many thanks to Henrique Lopes and Juliano Garcia for your review on the intersection between causal inference and busi‐ ness applications. Chapters 4, 6, and 7 were greatly improved with your feedback. Raphael Bruce, I’m very grateful for your honest and precise feedback on Chapter 4. Thank you, Luis Moneda, for your expertise, for all our great talks about causality, and for helping me review Chapter 1. Thank you, Denis Reis, for the review of Chap‐ ter 2. Statistics is a tricky subject, and having you as a reviewer took a lot of anxiety off my shoulders. Writing about a technical topic can sometimes be a solitary endeavor, which is why I feel incredibly fortunate for all the support I got from such amazing and respected professionals: Sean J. Taylor, Pedro H. C. Sant’Anna, Nick C. Huntington-Klein, xviii | Preface
Comments 0
Loading comments...
Reply to Comment
Edit Comment