Materials for the data-management Practice section
Chapter 3 develops the 3S framework (source, structure, standardization) as a way of reading what a study’s data actually commits it to. Its Practice section asks you to turn that framework on published work.
The Practice assignment. Analyze two empirical studies that interest you and write a one-page annotated bibliography on their data-management practices, critiquing each study’s approach to its source, its structure, and its standardization.
The studies, filtered to data management
Ninety-one studies in the database carry a written annotation on how they handled their data. Each card below shows that annotation, which is the raw material for the assignment. Read the study itself before critiquing it, though. The annotations record what was done, not whether it was done well. That judgment is yours to make and defend.
stageLens ="DM"
studiesData = {const rows =await d3.csv("/studies/studies.csv");return rows.map(d => ({...d,yearNum:+d.year||null,stageList: (d.stages||"").split("|").filter(s => s),recNum:+d.top_rec||0 }));}stageMeta = ({DM: {label:"Data management",chapters:"Ch. 3–4",note:"dm_note",accent:"#1f6feb"},CR: {label:"Concept representation",chapters:"Ch. 5–6",note:"cr_note",accent:"#8250df"},DA: {label:"Computational analysis",chapters:"Ch. 7–8",note:"da_note",accent:"#bc4c00"},SC: {label:"Scientific communication",chapters:"Ch. 9–10",note:"sc_note",accent:"#1a7f37"}})// A lens is either fixed by the hub page or chosen by the reader. When fixed,// show plain text instead of a disabled dropdown: a disabled control announces// as "unavailable" to screen readers, which misdescribes a deliberate setting.viewof chosenLens = stageLens ===null? Inputs.select(newMap([ ["All design stages","ALL"],...Object.entries(stageMeta).map(([k, v]) => [`${v.label} (${v.chapters})`, k]) ]), {label:"Design stage",value:"ALL"} ): Inputs.input(stageLens);activeLens = stageLens ===null? chosenLens : stageLensinScope = activeLens ==="ALL"? studiesData: studiesData.filter(d => d.stageList.includes(activeLens))viewof queryText = Inputs.text({label:"Search",placeholder:"title, journal, abstract, annotation…",width:320,submit:false})viewof disciplinePick = Inputs.select( ["All disciplines",...newSet(inScope.map(d => d.discipline).filter(x => x))].sort( (a, b) => (a ==="All disciplines"?-1: b ==="All disciplines"?1: a.localeCompare(b)) ), {label:"Discipline",value:"All disciplines"})viewof recommendedOnly = Inputs.toggle({label:"Recommended starting points only",value:false})filtered = {const q = (queryText ||"").trim().toLowerCase();return inScope.filter(d => disciplinePick ==="All disciplines"|| d.discipline=== disciplinePick).filter(d =>!recommendedOnly || d.recNum>=4).filter(d => {if (!q) returntrue;return [d.title, d.journal, d.abstract, d.discipline, d.theme, d.dm_note, d.cr_note, d.da_note, d.sc_note].some(v => (v ||"").toLowerCase().includes(q)); }).sort((a, b) => (b.recNum- a.recNum) || (b.yearNum- a.yearNum));}
stageLens ===null?html``:html`<p class="lens-static">Design stage: <strong>${stageMeta[stageLens].label}</strong> (${stageMeta[stageLens].chapters}; fixed on this page. <a href="/studies/">Browse all stages</a>.)</p>`
html`<p class="studies-count" role="status"> <strong>${filtered.length}</strong> ${filtered.length===1?"study":"studies"}${activeLens ==="ALL"?"":`annotated for ${stageMeta[activeLens].label.toLowerCase()}`}${filtered.length!== inScope.length?html`<span> · filtered from ${inScope.length}</span>`:""}</p>`
Two studies that made the same choice for different reasons will teach you more than two that differ on everything. A pair worth trying: one study that repurposed data collected for another purpose entirely, and one that collected its own. The 3S questions land differently on each, and the contrast is where the argument comes from.
The studies flagged recommended are ones where the data-management decisions are unusually visible in the published text, which makes them easier to critique honestly.