Errata
These errata are errors in the printed book. These changes are implemented in this online version.
- On pg. 53, footnote 1: “Here we are referring to an ‘inquiry model’ not a ‘reference model,’ as discussed in Section 2.2.1” should read “Here we are referring to an ‘inquiry model’ not a ‘reference model,’ as discussed in Section 2.1.1”.
- On pg. 69, Table 8.1, row 1 now reads
simple_rs(N = 100, prob = .25)instead ofsimple_rs(N = 100, p = .25); row 2 now readscomplete_rs(N = 100, n = 25)instead ofsimple_rs(N = 100, p = 0.25); row 4:cluster_rashould becluster_rs; and in row 6,cluster_rashould becluster_rsandstrata_rashould bestrata_rs. Thanks to Bjorn Van Campenhout for identifying the first two errors. - On pg. 89: “to intensively revist a subset of attritors” should read “to intensively revisit a subset of attritors”.
- On pg. 101: “The \(p\)-value is the probability this also goes with the misplaced section estimates of 15 or larger” should read “The \(p\)-value is the probability under the null model of obtaining estimates of 15 or larger.”
- On pg. 158: The second code block, which includes the code
MASS::mvrnorm, should readn = 1000notN = 1000. - On pgs. 221-224: We corrected an error in Declaration 16.5 and Declaration 16.6 that erroneously switched the values of the treated and control potential outcomes when X = 0 with the values when X is at the cutoff. We modified Declaration 16.5 and Figure 16.9 to describe the design with respect to the cutoff and updated the figure caption and text to reflect these changes.
- On pg. 225: The last line of the code was changed from
diagnose_designstodiagnose_designs(). - On pg. 26: “In part IV on the research design lifecycle” should read “In Part IV on the research design lifecycle”.
- On pg. 53: “These complex inquires are made up of a series of atomic inquiries” should read “These complex inquiries are made up of a series of atomic inquiries”.
- On pg. 237: “conjoint experiments target descriptive, rather than casual, inquiries” should read “rather than causal, inquiries”.
- On pg. 273: “the local average treatment effect (LATE) described in Chapter 16.4” should read “described in Section 16.4”.
- On pg. 309: “how leaders allocate cabinet positions to bolseter coalitions” should read “to bolster coalitions”.
- On pg. 340: “They also told us also that they believed” should read “They also told us that they believed”.
- On pg. 343: in the quotation from Bonilla and Tillery (2020), “other pertinent moderations beyond gender and LGBTQ+ status” should read “other pertinent moderators beyond gender and LGBTQ+ status”.
- On pg. 348: “covey the entirety of MIDA in one sentence” should read “convey the entirety of MIDA in one sentence”.
- On pgs. 124-125: We removed a reference to the power formula from Gerber and Green (2012). We now discuss a generic restatement of statistical power.
Due to final copyediting by the Press, the website version may differ slightly from the print version. If you discover a discrepency, please email us at graeme.blair@gmail.com, acoppock@gmail.com, and macartan@gmail.com and we will fix it and send you DeclareDesign stickers!
Substantive changes
- On pg. 210-211, we changed the inquiry to be the ATT rather than the ATE, to reflect the more common practice of targeting the ATT in matching designs. Declaration 16.2 now declares the ATT as the inquiry; we now write “Our inquiry is the average treatment effect on the treated (ATT). This is the average treatment effect among the units who are in fact treated.”; and Figure 16.4 is updated to reflect the change in the x-axis title.
Code updates
We are committed to maintaining the code in this book as the R ecosystem evolves. The following changes reflect differences between the printed book and the online version.
- On pg. 103, Declaration 9.3 now reads
.summary = ~tidy(., exponentiate = TRUE)instead of.summary = ~tidy_stan(., exponentiate = TRUE), reflecting the use of the standardbroom.mixedpackage for tidying stan objects. In addition, the libraryrdssis replaced with the librarybroom.mixedin the declaration. - On pg. 155, the panel data example now declares the years level with
declare_level()and joins it to countries withcross_levels(.by = c("countries", "years")), in place ofadd_level(nest = FALSE)andby = join_using(countries, years). fabricatr 2.0 deprecates the old form; the new one draws the same data. - On pgs. 212-213, Declaration 16.3 now uses the
DIDmultiplegt2.x interface throughrdss::did_multiplegt_tidy()(mode = "dyn"withoutcome,group,time, andtreatmentin place ofY,G,T, andD), which requires thepolarspackage. The periods level is declared withdeclare_level()and joined withcross_levels(.by = c("units", "periods")), the fabricatr 2.0 form ofadd_level(nest = FALSE)andby = join_using(units, periods). - On pgs. 284-285, Declaration 18.10 now writes
se_type = "CR2"in itsdeclare_estimator()call. Under estimatr 1.x, a fit with bothfixed_effectsandclustersused CR2 standard errors by default, so this is the estimator the printed book ran; estimatr 2.0 changed that default to CR0 and warns when the choice is left implicit. Naming CR2 keeps the diagnosis as printed and removes the warning. The periods level is now declared withdeclare_level()and joined withcross_levels(.by = c("units", "periods")), the fabricatr 2.0 form ofadd_level(nest = FALSE)andby = join_using(units, periods); the data drawn are the same.

