UTF-8
Errata: October 14, 2021

Thank you for purchasing Fighting Churn with Data. Please post errata not listed below in this book's LiveBook Errata thread. We'll update this list as necessary. Corrections are made to all formats during the book's second printing. Thank you!



In Chapter 2, Section 2.7.1, page 72

The unlabeled equation under point 3 on page 72 contains a "2" that should be an exponent. The equation should read:

(1 - c)2N - [c(1 - c)2]N - (1 - c)2N x (1 - c) - (1 - c)3N

In Chapter 2, Section 2.7.3, page 74

Equation 2.19 is missing the division operator "/" between "(365/12)" and "p," so it should read:

c = 100% - (1 - c')(365/12) / p


Please note that if you are working from the print Book, you can continue to refer to the downloadable source code from this book's product page located here.

For the following updates, if you want to work from these, please download the updated source code from Github.


Errata resulting from fightchurn code packaging

There have been some modifications to the paths described in the first printing of Fighting Churn With Data to enable packaging the Python code. The following two differences summarize the changes:

1. To run the code listings, the first printing of the book refers to the script

fight-churn/listings/py/run_churn_list.py

the path in the current code is

fight-churn/fightchurn/run_churn_listing.py

2. To generate the data, the first printing of the book refers to scripts under

fight-churn/data-generation/

the path in the current code is

fight-churn/fightchurn/datagen



The following are a detailed listing of all the individual changes.

In Chapter 2, pages 42-43, sidebar code for Fighting Churn with Data:

If you are using the code from github after September 2021, or the fightchurn pip package, the paths have changed from those described in the first edition.


In the first numbered list in the sidebar it should now read:

2. Create a database schema with

fight-churn/fightchurn/datagen/churndb.py.

3. Generate simulation data and save it into the Postgres schema with

fight-churn/fightchurn/datagen/churnsim.py.



In the command line example after the third paragraph it should now read:

fight-churn/fightchurn/run_churn_listing.py --chapter 2 --listing 1



In the second numbered listed in the sidebar it should now read:

1. Create a schema with

fight-churn/fightchurn/datagen/churndb.py

...

3. The listing wrapper program works from parameters stored in a JSON file

fight-churn/fightchurn/listings/conf/churnsim_listings.json.



In command line examples throughout the book:

If you are using the code from github after September 2021, or the fightchurn pip package, the paths have changed from those described in the first edition.



In the command line program examples it should read:

fight-churn/fightchurn/run_churn_listing.py

This applies in the following places:


Chapter 2, Section 2.3.2, page 52

Chapter 2, Section 2.4.3, page 60

Chapter 2, Section 2.5.2, page 60

Chapter 2, Section 2.6.2, page 68

Chapter 2, Section 2.7.3, page 75

Chapter 3, Section 3.3, page 88

Chapter 3, Section 3.5.1, page 94

Chapter 3, Section 3.5.3, page 97

Chapter 3, Section 3.5.4, page 98

Chapter 3, Section 3.7.1, page 103

Chapter 3, Section 3.8.1, page 110

Chapter 3, Section 3.10.3, page 123

Chapter 4, Section 4.3.3, page 145

Chapter 5, Section 5.1.2, page 182

Chapter 5, Section 5.2.2, page 198

Chapter 6, Section 6.1.2, page 223

Chapter 7, Section 7.1.1, page 264

Chapter 7, Section 7.1.2, page 266

Chapter 7, Section 7.1.2, page 267

Chapter 7, Section 7.2.1, page 276

Chapter 7, Section 7.3.1, page 285

Chapter 7, Section 7.3.2, page 292

Chapter 7, Section 7.4.1, page 297

Chapter 8, Section 8.2, page 326

Chapter 8, Section 8.2, page 328

Chapter 9, Section 9.1.2, page 373

Chapter 9, Section 9.1.3, page 378

Chapter 9, Section 9.2.2, page 384

Chapter 9, Section 9.3.2, page 387

Chapter 9, Section 9.4.2, page 391

Chapter 9, Section 9.5.2, page 399

Chapter 9, Section 9.5.4, page 402

Chapter 10, Section 10.1.3, page 413

Chapter 10, Section 10.2.3, page 420

Chapter 10, Section 10.3.2, page 428

Chapter 10, Section 10.5.1, page 435

Chapter 10, Section 10.5.2, page 436

Chapter 10, Section 10.5.3, page 440

Chapter 10, Section 10.5.3, page 441

Chapter 10, Section 10.5.4, page 442

Chapter 10, Section 10.5.4, page 444

Chapter 10, Section 10.6, page 447

Chapter 10, Section 10.6, page 450