Surrogates Errata file ====================== All notes/changes refer to frozen PDF/book version. Updates and fixes get pushed to the HTML/online version regularly. Chapter 1 --------- p.17 - Eq. (1.1), the coefficient in front of S_w should be 0.036 not 0.0365. It is correct in the code following. Thanks to Georgios Kontoudis, VT. p.17 - wingwgt default Wfw should be 0.4 not 0.28 as per baseline values in Table 1.1. Fix yields minor downstream changes to analysis. Thanks to Chris Franck, VT. p.28 - Table 1.2: T0 maximum should be 360 not 3600. Thanks to Annie Sauer, VT. Chapter 2 --------- p.34 - Figure 2.3: caption should say "pooled over nonzero settings" rather than "and one". Thanks to Stephen Walsh, VT. p.36 - interp(...) leading to the plot in Figure 2.5 is missing dupl="mean" which can lead to a warning. p.46-49 - Tables 2.5-2.6: the ranges for theta and phi are reversed compared to the defaults in the tpm library. This discrepancy originates in the LANL data files included in the tpm-git repo and ranges reported in the original papers (Mehta, et al. 2014; Sun, et al., 2019a). Neither set of ranges is "correct". The tpm library will produce sensible simulations either way around, although care is required (to check for commensurate ranges) if you are making comparisons to data files storing previous runs. The reduced ranges in Table 2.6 match the code. When in doubt, here as elsewhere, trust the code. Thanks to Shin-Fu Tsai, National Taiwan University. p.53 - It could be helpful to have a Wikipedia link to "volatile organic compounds": https://en.wikipedia.org/wiki/Volatile_organic_compound. Thanks to Chris Franck, VT. p.56 - Figure 2.15: colors in matplot are off versus the legend. Fix is to use lty=1:nc and col=1:nc in both matplot and legend calls. Thanks to Stephen Walsh, VT. p.61 - Exercise #3d: using testing/simulations from #b not #a. Thanks to Erica Porter, VT. Chapter 3 --------- p.83 - final displayed equation on the page: 12x_2 should be 12x_1. Thanks to Abhyuday Mandal, UGA. Chapter 4 --------- p.123 - both places where uniform x is referenced it should be [0,1]^m. Thanks to Georgios Kontoudis, VT. Chapter 5 --------- p.174 - code block at top of page: lines defining XX, yy, and yytrue should be indexed as (n + 1):(n + nprime) in order to extract all 1000 elements of the testing set. Many thanks to Gyeong-Geun Lee, Korea Atomic Energy Research Institute. p.187 - start of Section 5.3.1: both likelihood expressions at the bottom of this page have a negative exponent for the first parenthetical expression with a fraction inside. Either un-negate the exponent or move the denominator to the numerator. Thanks to Stephen Walsh, VT. p.197 - Ka2, which is a covariance matrix built from a Matern kernel with nu=10 is sometimes numerically non-positive definite, leading to an error when plotting paths for Figure 5.18. Adding eps to the diagonal as Ka2 <- powerexp(R, alpha=2, theta=1) + diag(eps, nrow(R)) helps and leads to no substantive difference downstream. p.216 - Section 5.5, Ex #1a: IG(theta; beta, alpha) should be IG(theta; alpha, beta). The pdf of the IG is correct; just it's parameters got flipped. Chapter 7 --------- p.281 - last line: "demands a stop argument" should be "demands an end argument". Thanks to Stephen Walsh, VT. p.318 - penultimate sentence: v_\ell(x) should be v_j(x). Thanks to Stephen Walsh, VT. p.319 - Thomas Christie, Cambridge UK, pointed out that Eq. (7.13) could be modified to include a max(c_j,0) in the numerator for inequality constraints. The equation as given isn't incorrect (it is what is in the original paper). But Thomas' suggestion does lead to a simpler implementation in the laGP software implementation, which has since been updated to reflect this change. See the HTML version for specifics. p.327 - start of last paragraph: demo("GSB") should be demo ("GSBP"). Thanks to Stephen Walsh, VT. Chapter 8 --------- p.336: - below Eq. (8.2): should U_{N_N} should be U_{n_M}. Thanks to Stephen Walsh, VT. p.349 - below 3rd code chunk: should be \hat{\sigma}^2_\epsilon, with the hat conveying a estimate implied by tau2hat*ghat. Thanks to Stephen Walsh, VT. p.353 - final code block: train and test are swapped, in three occurrences. Since the swap is consistent, the fix has no downstream implications. I.e., tables and figures following are correct. p.356 - below 1st code chunk: should be \hat{\sigma}^2_\epsilon, as above. Thanks to Stephen Walsh, VT. p.357 - ViVldet function: covar.sep(XFu, XFu, d=mle$d, g=1e-7) call changed to covar.sep(XFu, d=mle$d, g=1e-7) for symmetric matrices. This is a little faster, and less prone to numerical instability due to a quirk of the plgp::covar.sep implementation. No noticeable changes to downstream analysis, however this fix allows g=1e-7 to be replaced with g=eps and could help with XFu containing replicates. Chapter 9 --------- p.386 - borehole input range for r should be [0, 50000], which agrees with the coded that follows. Thanks to Stephen Walsh, VT. p.399 - three text lines from the bottom: mu + 1.96 sigma is better as mu +/- 1.96 sigma to capture both quantiles. Thanks to Stephen Walsh, VT. p.401 - displayed equations: any X^\eta should be \bar{X}_\eta and it helps to clarify that this is a (centered) design matrix derived from x^\eta . Thanks to Stephen Walsh, VT. p.409 - lgbb.rest[2:4] should be lgbb.rest[,2:4], more clearly indicating the columns being selected. With current R (e.g., 3.6.x) this change has no effect on downstream analysis. p.425 - as per (6.9), should have a minus in g_j(x') = - K_j^{-1} k_j(x') / v_j(x'). p.439 - x_{j+1} augments X_j(W) not X_n(W). Thanks to Stephen Walsh, VT. p.445 - Algorithm 9.2: obj(u) should be -obj(u) to maximize the objective. Thanks to Stephen Walsh, VT. Chapter 10 ---------- p.456 - middle paragraph: remove the transpose on V^T in "KN = UCn V^T + D". Thanks to Mohamed Salem, VT. p.460 - middle code block: note that U <- U[,n:1] is just for visualization purposes in Figure 10.1. We don't need U for anything downstream. p.461 - Eq. (10.4): an inverse is missing around "(Cn + LnAn^{-1})" for the mean/first equation. Thanks to Mohamed Salem, VT. p.461 - Eq. (10.5) and paragraph above: "Un = Cn + An^{-1} Ln" should be "Kn = ..." and "c + N/2 ..." should be "c - N/2 ..." in the first line of the equation. Thanks to Scott Koermer, VT. p.461 - A Y_n in the final paragraph for hat{nu}_n should should be bar{Y}_n. Also note on this page that lambda_i are the diagonal elements of Lambda. Thanks to Stephen Walsh, VT. p.466 - Eq. (10.6): \hat{nu}_N is incorrectly squared in the first line. Thanks to Scott Koermer, VT. p.477 - Note that "erf" is the "error function", which is similar to the standard Gaussian cdf (Phi). Appendix -------- p.499 - Unfortunately, Microsoft R Open is no longer available. But you can try OpenBLAS for Windows with R: https://www.r-bloggers.com/2022/01/building-r-4-2-for-windows-with-openblas/