# Rafaluk-Mohr (2019): reproduction audit

**Verdict: close approximate reconstruction of the two main pooled results. Exact replication remains unverified.**

Source: Charlotte Rafaluk-Mohr, *The relationship between parasite virulence and environmental persistence: a meta-analysis*, Parasitology, DOI 10.1017/S0031182019000015. Based on the user-supplied six-page PDF, especially Methods and Results (page 2), Table 1 (page 3) and Figures 1–3 (page 4).

## Published versus reconstructed

| Analysis | Published r | Reconstructed r | Published P | Reconstructed P | Reconstructed 95% CI |
|---|---:|---:|---:|---:|---|
| Full, 16 datasets | -0.3555 | -0.3520 | 0.1906 | 0.1962 | [-0.7285, 0.1877] |
| Restricted, 9 table/figure datasets | +0.3871 | +0.3902 | 0.0872 | 0.0850 | [-0.0567, 0.7069] |

Both reconstructed 95% intervals cross zero, matching the paper's qualitative conclusions for the overall analyses. The restricted pathogen-type Q test is also close: published Q=5.68, df=2, P=0.0584; reconstructed Q=5.6820, P=0.0584.

## What was actually done

1. Extracted the original Figure 3 JPEG from PDF page 4 without resampling it.
2. Calibrated its x axis using seven printed Fisher-z ticks and its y axis using seven standard-error ticks.
3. Digitized 16 plotted point centres. Their identities were cross-checked against their signed effect sizes in Figure 1A and the study IDs in Table 1. The very close H and I markers carry mapping uncertainty.
4. Converted x positions to Fisher z and then r=tanh(z).
5. Inferred the effective sample sizes from y-axis standard errors, assuming v=1/(n-3), and rounded n to integers. These are reconstructed inputs, not verified original sample sizes.
6. Applied inverse-variance random-effects pooling with DerSimonian–Laird tau-squared and normal 95% intervals, then back-transformed the pooled Fisher z to r. The paper specifies metacor and R 3.4.0 but not its package version or heterogeneity estimator; DL is an explicit reconstruction assumption.
7. Repeated the calculation for the restricted subset identified by the nine Yes entries in Table 1 and nine markers in Figure 2A.

The published pooled coefficients were used only as comparison targets, never as fitting constraints. Digitizing outputs is a consistency/reconstruction test, not an independent re-extraction of primary evidence.

## Discrepancies requiring original data/code

- **Eight versus nine:** the Results text says eight restricted datasets, while Table 1 lists C, E, F1–F5, G2 and G3 (nine) and Figure 2A plots them. The reproduced estimate agrees closely when using those nine. An illustrative eight-row sensitivity excluding G2 yields r=0.3334, P=0.1810. There is no evidence that G2 was the author's omitted row; this is only a sensitivity check.
- **Fungal sign:** the smaller-analysis text reports fungi r=-0.43 while describing their direction as opposite to negative viruses. Figure 2B shows the fungal estimate above zero, approximately +0.43. A sign typo is plausible and cannot be treated as a confirmed correction without author verification.
- **Subgroup estimates:** the reported fungal r=0.5154 is near our common-effect value (0.5183), whereas our random-effect value is 0.4411 and agrees more closely with the plotted fungal point. The cell-culture value -0.8885 is similarly near our common-effect value (-0.8883), rather than our random-effect value (-0.9594). These are unresolved model/output differences, not proof of an implementation error.
- **Virulence moderator:** the text gives Q=43.57 with df=6, but Table 1 lists six response categories and Figure 1C plots six. Our grouping from Table 1 gives df=5 and Q=140.07, so this result was not reproduced.
- **Measure conversion:** Table 1 includes Spearman r_s, R², t statistics and means/uncertainties. Rebuilding their transformations requires the original extraction table and cited primary studies. The present test starts from the plotted effect estimates and cannot validate those conversions or the biological suitability of virulence proxies.

## Limits and uncertainty

The coordinate resolution, assumed Fisher-z variance, inferred n values, unspecified historical settings and possible dependence among datasets prevent a claim of exact replication. Sixteen datasets come from nine papers, and several share sources; the conventional model does not account for unknown within-paper dependence.

A sensitivity simulation varied each horizontal point coordinate independently by +/-0.75 pixels, with inferred sample sizes held fixed. The central 95% ranges of the resulting pooled correlations were [-0.3561834132452964, -0.3477867148318107] (full) and [0.3846155216937163, 0.3959769014376015] (restricted). Both published pooled r values fall inside these chosen-resolution ranges. These are digitization sensitivity ranges, not biological confidence intervals, and do not capture n or model uncertainty.

## Run the reconstruction

Install Python dependencies with `python -m pip install numpy scipy pandas matplotlib`, then run `python reproduce.py` from this folder. It writes the CSV data, comparison table, JSON results and regenerated forest plot. Formula sanity fixtures are included. R users can run `replicate-in-R.R` with the meta package; the R script has not been executed here.

## Implication for the web tool

This benchmark requires a correlation mode: r and sample size, Fisher-z transformations, correlation-specific variance, and explicit tracking of multiple datasets from one paper. Binary risk-ratio and Hedges-g modes cannot substitute for this analysis. Exact original-data replication remains a separate validation milestone.
