Skip to content

Instantly share code, notes, and snippets.

@daaronr
Created January 9, 2026 18:01
Show Gist options
  • Select an option

  • Save daaronr/b9447c40a7a6b948f399073496f98c37 to your computer and use it in GitHub Desktop.

Select an option

Save daaronr/b9447c40a7a6b948f399073496f98c37 to your computer and use it in GitHub Desktop.
Scanner Data & Price Elasticity Experts - Unjournal evaluator search for plant-based substitution research
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Scanner Data Methodology Experts - Unjournal Evaluator Search</title>
<script src="https://cdn.plot.ly/plotly-2.27.0.min.js"></script>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
color: #e6edf3;
min-height: 100vh;
padding: 20px;
}
.container { max-width: 1400px; margin: 0 auto; }
h1 { text-align: center; margin-bottom: 5px; font-size: 1.8em; }
.subtitle { text-align: center; color: #8b949e; margin-bottom: 10px; font-size: 0.95em; }
.paper-box {
background: rgba(255,255,255,0.05);
border-radius: 12px;
padding: 20px;
margin-bottom: 20px;
border-left: 4px solid #f39c12;
}
.paper-box h3 { color: #f39c12; margin-bottom: 10px; }
.paper-box .question { color: #3498db; font-style: italic; margin-top: 10px; }
#plot2d { width: 100%; height: 500px; border-radius: 12px; background: #161b22; margin-bottom: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 20px; }
.card {
background: rgba(255,255,255,0.05);
border-radius: 12px;
padding: 20px;
}
.card h3 { margin-bottom: 15px; display: flex; align-items: center; gap: 10px; }
.card h3 .emoji { font-size: 1.3em; }
.expert-list { list-style: none; }
.expert-list li {
padding: 10px;
margin: 8px 0;
background: rgba(255,255,255,0.03);
border-radius: 8px;
border-left: 3px solid;
}
.expert-list li.method { border-color: #e74c3c; }
.expert-list li.scanner { border-color: #2ecc71; }
.expert-list li.plantbased { border-color: #9b59b6; }
.expert-list li.overlap { border-color: #f39c12; }
.expert-list li strong { color: #fff; }
.expert-list li .paper { color: #8b949e; font-size: 0.9em; margin-top: 5px; }
.tag {
display: inline-block;
padding: 2px 8px;
border-radius: 12px;
font-size: 0.75em;
margin-left: 8px;
}
.tag.arxiv { background: #b31b1b; }
.tag.econ { background: #2980b9; }
.tag.ea { background: #27ae60; }
a { color: #3498db; text-decoration: none; }
a:hover { text-decoration: underline; }
.legend-inline {
display: flex;
gap: 20px;
justify-content: center;
margin: 15px 0;
flex-wrap: wrap;
}
.legend-inline span {
display: flex;
align-items: center;
gap: 6px;
}
.dot { width: 12px; height: 12px; border-radius: 50%; }
</style>
</head>
<body>
<div class="container">
<h1>Scanner Data & Price Elasticity Experts</h1>
<p class="subtitle">Potential Unjournal evaluators for methodological review of observational vs. experimental elasticities</p>
<div class="paper-box">
<h3>Target Paper</h3>
<p><strong>"Observational price variation in scanner data cannot reproduce experimental price elasticities"</strong></p>
<p style="color: #8b949e;">SSRN 4899765 | Methodology: Comparing scanner data identification with RCT results</p>
<p class="question">Pivotal Question: "How much do plant-based products substitute for animal products and improve welfare?"</p>
</div>
<div class="legend-inline">
<span><div class="dot" style="background: #e74c3c;"></div> Obs vs Exp Methods</span>
<span><div class="dot" style="background: #2ecc71;"></div> Scanner/Demand Estimation</span>
<span><div class="dot" style="background: #9b59b6;"></div> Plant-Based/Animal Welfare</span>
<span><div class="dot" style="background: #f39c12;"></div> Multi-domain Overlap</span>
</div>
<div id="plot2d"></div>
<div class="grid">
<div class="card">
<h3><span class="emoji">🔬</span> Methodological Experts (Obs vs Exp)</h3>
<ul class="expert-list">
<li class="method">
<strong>Steven T. Berry</strong> <span class="tag econ">econ.EM</span>
<div class="paper">"Nonparametric Identification of Differentiated Products Demand Using Micro Data"</div>
</li>
<li class="method">
<strong>Lars Roemheld</strong> <span class="tag econ">stat.AP</span>
<div class="paper">"Interference Produces False-Positive Pricing Experiments"</div>
</li>
<li class="method">
<strong>Alberto Abadie</strong> <span class="tag econ">stat.ME</span>
<div class="paper">"Synthetic Controls in Action" - causal inference pioneer</div>
</li>
<li class="method">
<strong>John K.-H. Quah</strong> <span class="tag econ">econ.TH</span>
<div class="paper">"Price Heterogeneity as a source of Heterogenous Demand"</div>
</li>
<li class="method">
<strong>François Gardes</strong> <span class="tag econ">stat.AP</span>
<div class="paper">"Panel and Pseudo-Panel Estimation of Food Consumption Elasticities"</div>
</li>
</ul>
</div>
<div class="card">
<h3><span class="emoji">🛒</span> Scanner Data / Demand Estimation</h3>
<ul class="expert-list">
<li class="scanner">
<strong>Rob Donnelly</strong> <span class="tag arxiv">cs.LG</span>
<div class="paper">"Counterfactual Inference for Consumer Choice Across Many Product Categories"</div>
</li>
<li class="scanner">
<strong>Francisco J. R. Ruiz</strong> <span class="tag econ">stat.ML</span>
<div class="paper">"SHOPPER: A Probabilistic Model of Consumer Choice with Substitutes"</div>
</li>
<li class="scanner">
<strong>Giovanni Compiani</strong> <span class="tag econ">econ.GN</span>
<div class="paper">"Demand Estimation with Text and Image Data"</div>
</li>
<li class="scanner">
<strong>Jacek Białek</strong> <span class="tag econ">stat.AP</span>
<div class="paper">"Scanner data in inflation measurement: from raw data to price indices"</div>
</li>
<li class="scanner">
<strong>Lauri Valkonen</strong> <span class="tag econ">stat.AP</span>
<div class="paper">"Price Optimization Combining Conjoint Data and Purchase History"</div>
</li>
</ul>
</div>
<div class="card">
<h3><span class="emoji">🌱</span> Plant-Based / Animal Welfare (EA Forum)</h3>
<ul class="expert-list">
<li class="plantbased">
<strong>Jacob Peacock</strong> <span class="tag ea">EA Forum</span>
<div class="paper">"Price-, Taste-, and Convenience-Competitive Plant-Based Meat Would Not Currently Replace Meat" (score: 242)</div>
</li>
<li class="plantbased">
<strong>Seth Ariel Green</strong> <span class="tag ea">EA Forum</span>
<div class="paper">"Meaningfully reducing meat consumption is an unsolved problem: meta-analysis" (score: 233)</div>
</li>
<li class="plantbased">
<strong>Tom Bry-Chevalier</strong> <span class="tag ea">EA Forum</span>
<div class="paper">"Cultivating doubt: why I no longer believe cultivated meat is the answer"</div>
</li>
<li class="plantbased">
<strong>Samara Mendez</strong> <span class="tag ea">EA Forum</span>
<div class="paper">"Inconsistent evidence for price substitution between butter and margarine"</div>
</li>
<li class="plantbased">
<strong>saulius</strong> <span class="tag ea">EA Forum</span>
<div class="paper">"Corporate campaigns affect 9 to 120 years of chicken life per dollar"</div>
</li>
</ul>
</div>
<div class="card">
<h3><span class="emoji">⭐</span> Key Overlaps (Recommended for Review)</h3>
<ul class="expert-list">
<li class="overlap">
<strong>david_reinstein</strong> <span class="tag ea">Unjournal</span>
<div class="paper">Author of the pivotal question post; understands both methodology and application</div>
</li>
<li class="overlap">
<strong>Samara Mendez</strong> <span class="tag ea">EA + Methods</span>
<div class="paper">Wrote on butter/margarine substitution - directly relevant methodology + domain</div>
</li>
<li class="overlap">
<strong>Karolina Sarek</strong> <span class="tag ea">EA Forum</span>
<div class="paper">"RCTs in Development Economics, Their Critics and Their Evolution" - methods focus</div>
</li>
<li class="overlap">
<strong>Steven T. Berry + Rob Donnelly</strong>
<div class="paper">Combined: Berry's identification theory + Donnelly's scanner data implementation</div>
</li>
</ul>
</div>
</div>
<div class="card" style="margin-top: 20px;">
<h3><span class="emoji">📚</span> Most Relevant arXiv Papers</h3>
<table style="width: 100%; border-collapse: collapse;">
<tr style="border-bottom: 1px solid rgba(255,255,255,0.1);">
<th style="text-align: left; padding: 10px;">Paper</th>
<th style="text-align: left; padding: 10px;">Authors</th>
<th style="text-align: left; padding: 10px;">Relevance</th>
</tr>
<tr><td style="padding: 10px;"><a href="https://arxiv.org/abs/2204.06637">Nonparametric Identification of Differentiated Products Demand</a></td><td>Steven T. Berry</td><td>Core identification theory</td></tr>
<tr><td style="padding: 10px;"><a href="https://arxiv.org/abs/2402.14538">Interference Produces False-Positive Pricing Experiments</a></td><td>Lars Roemheld</td><td>Experimental validity</td></tr>
<tr><td style="padding: 10px;"><a href="https://arxiv.org/abs/1906.02635">Counterfactual Inference for Consumer Choice</a></td><td>Rob Donnelly</td><td>Scanner data methods</td></tr>
<tr><td style="padding: 10px;"><a href="https://arxiv.org/abs/1711.03560">SHOPPER: Probabilistic Consumer Choice Model</a></td><td>Francisco J. R. Ruiz</td><td>Substitution modeling</td></tr>
<tr><td style="padding: 10px;"><a href="https://arxiv.org/abs/2203.06279">Synthetic Controls in Action</a></td><td>Alberto Abadie</td><td>Causal inference methods</td></tr>
<tr><td style="padding: 10px;"><a href="https://arxiv.org/abs/0710.0559">Panel Estimation of Food Consumption Elasticities</a></td><td>François Gardes</td><td>Food demand elasticity</td></tr>
</table>
</div>
</div>
<script>
// 2D scatter plot: Method rigor vs Domain relevance
const experts = [
// arXiv methodology experts
{name: "Steven T. Berry", method: 0.70, domain: 0.35, type: "method", size: 18},
{name: "Lars Roemheld", method: 0.75, domain: 0.30, type: "method", size: 16},
{name: "Alberto Abadie", method: 0.70, domain: 0.25, type: "method", size: 18},
{name: "John K.-H. Quah", method: 0.75, domain: 0.32, type: "method", size: 14},
{name: "François Gardes", method: 0.73, domain: 0.45, type: "method", size: 14},
// Scanner data experts
{name: "Rob Donnelly", method: 0.60, domain: 0.76, type: "scanner", size: 16},
{name: "Francisco J. R. Ruiz", method: 0.55, domain: 0.76, type: "scanner", size: 16},
{name: "Giovanni Compiani", method: 0.58, domain: 0.75, type: "scanner", size: 14},
{name: "Jacek Białek", method: 0.50, domain: 0.73, type: "scanner", size: 12},
// Plant-based / EA experts
{name: "Jacob Peacock", method: 0.35, domain: 0.81, type: "plantbased", size: 18},
{name: "Seth Ariel Green", method: 0.40, domain: 0.78, type: "plantbased", size: 16},
{name: "Tom Bry-Chevalier", method: 0.32, domain: 0.82, type: "plantbased", size: 14},
{name: "saulius", method: 0.30, domain: 0.75, type: "plantbased", size: 14},
// Overlaps
{name: "david_reinstein", method: 0.65, domain: 0.80, type: "overlap", size: 20},
{name: "Samara Mendez", method: 0.70, domain: 0.68, type: "overlap", size: 16},
{name: "Karolina Sarek", method: 0.69, domain: 0.55, type: "overlap", size: 14},
];
const colors = {
method: '#e74c3c',
scanner: '#2ecc71',
plantbased: '#9b59b6',
overlap: '#f39c12'
};
const trace = {
x: experts.map(e => e.method),
y: experts.map(e => e.domain),
mode: 'markers+text',
type: 'scatter',
marker: {
size: experts.map(e => e.size),
color: experts.map(e => colors[e.type]),
opacity: 0.85,
line: {width: 1, color: 'white'}
},
text: experts.map(e => e.name),
textposition: 'top center',
textfont: {size: 10, color: 'white'},
hoverinfo: 'text',
hovertext: experts.map(e =>
`<b>${e.name}</b><br>Method: ${e.method.toFixed(2)}<br>Domain: ${e.domain.toFixed(2)}`)
};
// Ideal evaluator zone
const idealZone = {
x: [0.6, 0.8, 0.8, 0.6, 0.6],
y: [0.6, 0.6, 0.85, 0.85, 0.6],
mode: 'lines',
fill: 'toself',
fillcolor: 'rgba(243, 156, 18, 0.1)',
line: {color: 'rgba(243, 156, 18, 0.5)', dash: 'dot'},
name: 'Ideal Evaluator Zone',
hoverinfo: 'skip'
};
const layout = {
title: {
text: 'Expert Mapping: Methodology vs Domain Relevance',
font: {color: 'white', size: 16}
},
xaxis: {
title: {text: 'Methodological Expertise (Obs/Exp, Causal ID)', font: {color: '#e74c3c'}},
range: [0.2, 0.85],
gridcolor: 'rgba(255,255,255,0.1)',
tickfont: {color: 'white'}
},
yaxis: {
title: {text: 'Domain Relevance (Food, Animal Welfare)', font: {color: '#2ecc71'}},
range: [0.2, 0.9],
gridcolor: 'rgba(255,255,255,0.1)',
tickfont: {color: 'white'}
},
paper_bgcolor: '#161b22',
plot_bgcolor: '#161b22',
showlegend: false,
annotations: [{
x: 0.7, y: 0.72,
text: 'Ideal Zone',
showarrow: false,
font: {color: 'rgba(243, 156, 18, 0.7)', size: 11}
}]
};
Plotly.newPlot('plot2d', [idealZone, trace], layout, {responsive: true});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment