Replication of Reinstein & Snyder (2005): expert reviews and movie box office

David A. Reinstein and Christopher M. Snyder, "The Influence of Expert Reviews on Consumer Demand for Experience Goods: A Case Study of Movie Critics", Journal of Industrial Economics 53(1), March 2005, 27–51. doi:10.1111/j.0022-1821.2005.00244.x

Replication run November 2026 from the authors' original data and Stata code. Data and code downloads

AI replication, directed by a co-author

This replication was carried out by Claude, an AI model made by Anthropic (Claude Opus 5.5, running in Claude Code), and guided by David Reinstein, one of the paper's two authors. Claude found the original files in David's archive, ported the authors' Stata code to Python, ran it, compared the output with the published tables, and wrote this page. David chose what to check and asked for the results to be published.

In brief

1. Table-by-table status

TableContentStatusNotes
IDescriptive statisticsMatchesEBERT UP mean is 0.4154; the paper prints 0.41 (0.42 when rounded).
IICorrelationsMatchesExcept ln(TOTREV) with SISKEL UP and EBERT UP: 0.17 and 0.16 here, 0.16 and 0.17 in print. Looks transposed.
IIIProbits for review timing (selection check)MatchesCoefficients, pseudo R² and log likelihoods for columns 1–4 match; a few SEs differ by 0.01. Column 5: see section 4.
IVMain difference-in-differences, by subsampleExactAll coefficients, SEs, R² and N.
VDramas, robustnessExactAll coefficients, SEs, R² and N.
VIComparison with the "traditional" methodExactOnly difference: constant in column 2 is 12.15 here, 12.14 in print.
VIICompetitors' weekend revenueMatches log; star unsupportedSee section 3.

Not replicated: the drama-only versions of Table VII that the authors ran but did not report (they are in original_code/mktbox2.log), and footnote 16 (weekends with only one movie in the data).

2. Main results (Tables IV–VI)

The paper's design compares movies Siskel and Ebert reviewed during their opening weekend with movies reviewed after it. For the second group a good review cannot have affected opening-weekend sales, so any correlation between their reviews and revenue reflects underlying quality. The difference between the two groups estimates the reviews' influence. The outcome is ln(opening-weekend revenue, 1999 dollars), with controls for Leonard Maltin's rating, screens, four-day weekends, and year, month, genre and distributor dummies. Standard errors are clustered by opening weekend.

Table IV: influence effects (identical to the paper)

SampleNDURING × ONE UPDURING × TWO UPR²
All movies6090.11 (0.12)0.25 (0.15)*0.78
Wide release (>1,533 screens)304−0.06 (0.14)−0.04 (0.20)0.69
Narrow release3050.13 (0.18)0.37 (0.21)*0.70
Dramas1980.51 (0.24)**0.65 (0.34)*0.79
Action1480.07 (0.22)0.08 (0.24)0.82
Comedy267−0.01 (0.14)−0.37 (0.30)0.75

Standard errors in parentheses. * p<0.10, ** p<0.05, *** p<0.01.

Table V: dramas, alternative specifications (identical to the paper)
SpecificationDURING × ONE UPDURING × TWO UPR²
(1) ln(OPENREV)0.51 (0.24)**0.65 (0.34)*0.79
(2) Without MALTIN0.51 (0.25)**0.56 (0.33)*0.78
(3) ln(revenue per screen)0.32 (0.24)0.58 (0.42)0.34
(4) ln(TOTREV)0.70 (0.34)**0.85 (0.56)0.72

N = 198 in every column.

Table VI: the "traditional" method, which ignores timing (identical to the paper)

Regressing revenue on reviews without the timing comparison gives much larger "effects", which is the paper's point: most of the raw correlation reflects quality, not influence.

(1) All(2) All + MALTIN(3) Reviewed during(4) Reviewed during + MALTIN
ONE UP0.22 (0.05)***0.15 (0.05)***0.25 (0.05)***0.18 (0.05)***
TWO UP0.37 (0.06)***0.25 (0.06)***0.40 (0.06)***0.28 (0.07)***
MALTIN0.26 (0.04)***0.27 (0.05)***
N609609492492
R²0.760.780.760.77

3. Table VII: does a good review steal business from competing movies?

Here the unit is a weekend (346 of them). The outcome is ln(total US weekend box office minus the opening revenue of the movies in the data opening that weekend), i.e. roughly competitors' revenue. Review variables are summed (column 1) or averaged (column 2) over the movies opening that weekend. Standard errors are heteroskedasticity-robust (White).

The key estimate

f(DURING × TWO UP), column 1 (sum)Estimate (SE)p-value
Paper, as printed−0.08 (0.05)*< 0.10 (star)
Authors' own Stata log, mktbox2.log−0.0830 (0.0556)0.137
This replication, ordering that matches the log−0.0830 (0.0556)0.137
This replication, all 80 possible orderings−0.097 to −0.0830.095 to 0.137
Full Table VII: paper vs this replication (ordering that matches the authors' log)
Paper (1) sumReplication (1)Paper (2) meanReplication (2)
f(DURING)0.01 (0.03)0.0097 (0.0252)−0.03 (0.05)−0.0262 (0.0486)
f(DURING × ONE UP)0.03 (0.04)0.0265 (0.0422)0.09 (0.07)0.0918 (0.0698)
f(DURING × TWO UP)−0.08 (0.05)*−0.0830 (0.0556)−0.04 (0.08)−0.0462 (0.0795)
f(ONE UP)−0.03 (0.04)−0.0331 (0.0392)−0.08 (0.06)−0.0769 (0.0637)
f(TWO UP)0.07 (0.05)0.0704 (0.0546)0.09 (0.07)0.0884 (0.0725)
f(MALTIN)−0.01 (0.01)−0.0073 (0.0132)−0.06 (0.04)−0.0585 (0.0440)
f(SCREENS)−0.04 (0.01)***−0.0404 (0.0140)−0.04 (0.03)−0.0419 (0.0279)
FOURDAY0.31 (0.05)***0.3119 (0.0523)0.27 (0.06)***0.2739 (0.0610)
Constant17.36 (0.06)***17.3578 (0.0585)17.55 (0.13)***17.5523 (0.1267)
R²0.670.67720.540.5392
N346346346 (stated)347

The replication column equals the authors' log to four decimals. SCREENS is in thousands.

Two smaller Table VII issues
  • Column 2 uses 347 weekends in the authors' log, but the table note says 346.
  • In column 2 the code subtracts the mean opening revenue of the movies in the data (egen samgros = mean(wk1cpi)), not the sum, so its outcome is not exactly competitors' revenue as the note describes. Column 1 subtracts the sum.
  • Average competitors' weekend revenue is $48.1m here; the paper says $48m.

4. Other discrepancies

5. Data and code

Everything needed to reproduce the tables. Download the whole package (zip), or see the GitHub repository.

Data

Authors' original code (JIE revision)

Replication code (2026)

Output

To re-run

pip install -r replication/requirements.txt
bash replication/run_all.sh        # from the unzipped package; outputs go to replication/output/

Takes under a minute. Tested with Python 3.12, pandas 2.2, statsmodels 0.14.

How the Stata code was ported
  • Regressions follow the authors' do-files line by line. reg ..., robust cluster(weekend) becomes statsmodels OLS with errors clustered on opening weekend; probit ..., robust cluster(weekend) becomes a statsmodels probit with clustered errors; reg ..., robust (Table VII) uses HC1.
  • Opening weekend is the first Friday of the run: weekend = opendate + 6 − openwday.
  • As Stata does, constant or collinear regressors are dropped, and in probits a dummy that perfectly predicts the outcome is dropped with its observations.
  • SCREENS is divided by 1,000 to match the paper's units.
  • Table VII merges each weekend with the market box-office date falling on its Friday or the three days before, deflates using the kept movie's CPI factor, and drops weekends where the movies in the data exceed the market total, as MKTBOX2.DO does.

6. About the data