feat(lessons): add lessons from client db
This commit is contained in:
289
src/pages/student/lessons/EvalStatisticalClaimsLesson.tsx
Normal file
289
src/pages/student/lessons/EvalStatisticalClaimsLesson.tsx
Normal file
@ -0,0 +1,289 @@
|
||||
import React from "react";
|
||||
import {
|
||||
Search,
|
||||
GitBranch,
|
||||
AlertTriangle,
|
||||
Scale,
|
||||
Layers,
|
||||
BookOpen,
|
||||
} from "lucide-react";
|
||||
import LessonShell, {
|
||||
ConceptCard,
|
||||
ExampleCard,
|
||||
TipCard,
|
||||
PracticeFromDataset,
|
||||
} from "../../../components/lessons/LessonShell";
|
||||
import StudyDesignWidget from "../../../components/lessons/StudyDesignWidget";
|
||||
import {
|
||||
EVAL_STATS_EASY,
|
||||
EVAL_STATS_MEDIUM,
|
||||
} from "../../../data/math/evaluating-statistical-claims";
|
||||
|
||||
interface LessonProps {
|
||||
onFinish?: () => void;
|
||||
}
|
||||
const SECTIONS = [
|
||||
{ title: "Observational vs Experimental", icon: Search },
|
||||
{ title: "Random Assignment", icon: GitBranch },
|
||||
{ title: "Confounding Variables", icon: AlertTriangle },
|
||||
{ title: "Causation vs Correlation", icon: Scale },
|
||||
{ title: "Identifying Bias", icon: Layers },
|
||||
{ title: "Practice & Quiz", icon: BookOpen },
|
||||
];
|
||||
|
||||
export default function EvalStatisticalClaimsLesson({ onFinish }: LessonProps) {
|
||||
return (
|
||||
<LessonShell
|
||||
title="Evaluating Statistical Claims"
|
||||
sections={SECTIONS}
|
||||
color="amber"
|
||||
onFinish={onFinish}
|
||||
>
|
||||
{/* Section 1 */}
|
||||
<div>
|
||||
<h2 className="text-3xl font-extrabold text-slate-900 mb-6">
|
||||
Observational vs Experimental Studies
|
||||
</h2>
|
||||
<ConceptCard color="amber">
|
||||
<p className="text-slate-700 leading-relaxed">
|
||||
The type of study determines what conclusions you can draw.
|
||||
</p>
|
||||
<div className="grid md:grid-cols-2 gap-4 mt-4">
|
||||
<div className="bg-blue-50 border border-blue-200 rounded-xl p-4">
|
||||
<p className="font-bold text-blue-800 mb-1">
|
||||
Observational Study
|
||||
</p>
|
||||
<p className="text-sm text-slate-700">
|
||||
Researcher <strong>observes</strong> without intervening. Can
|
||||
show <strong>association</strong> only.
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-emerald-50 border border-emerald-200 rounded-xl p-4">
|
||||
<p className="font-bold text-emerald-800 mb-1">Experiment</p>
|
||||
<p className="text-sm text-slate-700">
|
||||
Researcher <strong>assigns treatments</strong>. Can show{" "}
|
||||
<strong>causation</strong>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</ConceptCard>
|
||||
<ExampleCard title="Example: Spot the Difference" color="amber">
|
||||
<p>
|
||||
Observational: "Students who eat breakfast tend to have higher
|
||||
GPAs."
|
||||
</p>
|
||||
<p className="text-slate-500">
|
||||
Experiment: "Randomly assign half the students to eat breakfast for
|
||||
a month, compare GPAs."
|
||||
</p>
|
||||
<p className="text-slate-500">
|
||||
<strong className="text-amber-700">
|
||||
Only the experiment can claim breakfast causes higher GPAs.
|
||||
</strong>
|
||||
</p>
|
||||
</ExampleCard>
|
||||
</div>
|
||||
|
||||
{/* Section 2 */}
|
||||
<div>
|
||||
<h2 className="text-3xl font-extrabold text-slate-900 mb-6">
|
||||
Random Assignment
|
||||
</h2>
|
||||
<ConceptCard color="amber">
|
||||
<p className="text-slate-700 leading-relaxed">
|
||||
<strong>Random sampling</strong> determines generalizability.{" "}
|
||||
<strong>Random assignment</strong> determines causation. These are
|
||||
different concepts!
|
||||
</p>
|
||||
<div className="mt-4 overflow-x-auto">
|
||||
<table className="w-full text-sm border-collapse">
|
||||
<thead>
|
||||
<tr className="bg-amber-100 text-amber-900">
|
||||
<th className="border border-amber-300 px-3 py-2"></th>
|
||||
<th className="border border-amber-300 px-3 py-2 text-center font-bold">
|
||||
Random Assignment YES
|
||||
</th>
|
||||
<th className="border border-amber-300 px-3 py-2 text-center font-bold">
|
||||
Random Assignment NO
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="text-slate-700">
|
||||
<tr className="bg-white">
|
||||
<td className="border border-slate-200 px-3 py-2 font-bold bg-amber-50">
|
||||
Random Sampling YES
|
||||
</td>
|
||||
<td className="border border-slate-200 px-3 py-2 text-center bg-emerald-50 font-semibold text-emerald-800">
|
||||
Generalize + Cause & Effect
|
||||
</td>
|
||||
<td className="border border-slate-200 px-3 py-2 text-center bg-blue-50 font-semibold text-blue-800">
|
||||
Generalize only
|
||||
</td>
|
||||
</tr>
|
||||
<tr className="bg-slate-50">
|
||||
<td className="border border-slate-200 px-3 py-2 font-bold bg-amber-50">
|
||||
Random Sampling NO
|
||||
</td>
|
||||
<td className="border border-slate-200 px-3 py-2 text-center bg-purple-50 font-semibold text-purple-800">
|
||||
Cause & Effect (this group only)
|
||||
</td>
|
||||
<td className="border border-slate-200 px-3 py-2 text-center bg-rose-50 font-semibold text-rose-800">
|
||||
Neither
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</ConceptCard>
|
||||
<div className="mt-6">
|
||||
<StudyDesignWidget />
|
||||
</div>
|
||||
<div className="mt-4">
|
||||
<TipCard type="remember">
|
||||
<p className="text-slate-700">
|
||||
Random <strong>sampling</strong> → can generalize to population.
|
||||
Random <strong>assignment</strong> → can claim cause-and-effect.
|
||||
These are independent concepts.
|
||||
</p>
|
||||
</TipCard>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Section 3 */}
|
||||
<div>
|
||||
<h2 className="text-3xl font-extrabold text-slate-900 mb-6">
|
||||
Confounding Variables
|
||||
</h2>
|
||||
<ConceptCard color="amber">
|
||||
<p className="text-slate-700 leading-relaxed">
|
||||
A <strong>confounding variable</strong> is related to BOTH the
|
||||
explanatory and response variables, making it impossible to
|
||||
determine the true cause of an observed relationship.
|
||||
</p>
|
||||
</ConceptCard>
|
||||
<ExampleCard title="Example: Ice Cream & Drowning" color="amber">
|
||||
<p>Ice cream sales and drowning rates both increase in summer.</p>
|
||||
<p className="text-slate-500">
|
||||
Confounding variable:{" "}
|
||||
<strong className="text-amber-700">temperature / season</strong>
|
||||
</p>
|
||||
<p className="text-slate-500">
|
||||
Hot weather causes both — ice cream doesn't cause drowning!
|
||||
</p>
|
||||
</ExampleCard>
|
||||
<div className="mt-4">
|
||||
<ExampleCard title="Example: Coffee & Exercise" color="amber">
|
||||
<p>Study: coffee drinkers exercise more.</p>
|
||||
<p className="text-slate-500">
|
||||
Confounding: Maybe more energetic people both drink coffee AND
|
||||
exercise.
|
||||
</p>
|
||||
<p className="text-slate-500">
|
||||
<strong className="text-amber-700">
|
||||
Can't conclude coffee causes more exercise.
|
||||
</strong>
|
||||
</p>
|
||||
</ExampleCard>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Section 4 */}
|
||||
<div>
|
||||
<h2 className="text-3xl font-extrabold text-slate-900 mb-6">
|
||||
Causation vs Correlation
|
||||
</h2>
|
||||
<ConceptCard color="amber">
|
||||
<p className="text-slate-700 leading-relaxed">
|
||||
<strong>Correlation</strong> means two variables move together.{" "}
|
||||
<strong>Causation</strong> means one actually causes the other.
|
||||
Correlation alone does NOT prove causation.
|
||||
</p>
|
||||
<div className="mt-4 bg-amber-50 border border-amber-200 rounded-xl p-4">
|
||||
<p className="font-bold text-amber-900 text-sm mb-2">
|
||||
Three Requirements for Causation
|
||||
</p>
|
||||
<div className="space-y-1 text-sm text-slate-700">
|
||||
<p>1. Random assignment to treatment/control groups</p>
|
||||
<p>2. Controlled experiment (same conditions except treatment)</p>
|
||||
<p>3. Confounding variables ruled out</p>
|
||||
</div>
|
||||
</div>
|
||||
</ConceptCard>
|
||||
<TipCard type="warning">
|
||||
<p className="text-slate-700">
|
||||
The SAT will try to trick you with answer choices that claim
|
||||
causation from observational studies. Always check: was there random
|
||||
assignment?
|
||||
</p>
|
||||
</TipCard>
|
||||
</div>
|
||||
|
||||
{/* Section 5 */}
|
||||
<div>
|
||||
<h2 className="text-3xl font-extrabold text-slate-900 mb-6">
|
||||
Identifying Bias
|
||||
</h2>
|
||||
<ConceptCard color="amber">
|
||||
<p className="text-slate-700 leading-relaxed">
|
||||
Bias systematically distorts results. Know these types:
|
||||
</p>
|
||||
<div className="grid md:grid-cols-2 gap-3 mt-4">
|
||||
<div className="bg-white/60 rounded-lg p-3 border border-amber-100">
|
||||
<p className="font-bold text-amber-800 text-sm mb-1">
|
||||
Selection Bias
|
||||
</p>
|
||||
<p className="text-xs text-slate-600">
|
||||
Non-random sample excludes or over-represents groups
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-white/60 rounded-lg p-3 border border-amber-100">
|
||||
<p className="font-bold text-amber-800 text-sm mb-1">
|
||||
Response Bias
|
||||
</p>
|
||||
<p className="text-xs text-slate-600">
|
||||
Leading questions or social desirability affects answers
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-white/60 rounded-lg p-3 border border-amber-100">
|
||||
<p className="font-bold text-amber-800 text-sm mb-1">
|
||||
Nonresponse Bias
|
||||
</p>
|
||||
<p className="text-xs text-slate-600">
|
||||
People who don't respond differ from those who do
|
||||
</p>
|
||||
</div>
|
||||
<div className="bg-white/60 rounded-lg p-3 border border-amber-100">
|
||||
<p className="font-bold text-amber-800 text-sm mb-1">
|
||||
Voluntary Response
|
||||
</p>
|
||||
<p className="text-xs text-slate-600">
|
||||
Only people with strong opinions participate
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</ConceptCard>
|
||||
<ExampleCard title="Example: Leading Question" color="amber">
|
||||
<p>"Do you agree that the new park is a waste of money?"</p>
|
||||
<p className="text-slate-500">
|
||||
<strong className="text-amber-700">
|
||||
Response bias — the question pushes toward "agree"
|
||||
</strong>
|
||||
</p>
|
||||
</ExampleCard>
|
||||
</div>
|
||||
|
||||
{/* Section 6 */}
|
||||
<div>
|
||||
<h2 className="text-3xl font-extrabold text-slate-900 mb-6">
|
||||
Practice & Quiz
|
||||
</h2>
|
||||
{EVAL_STATS_EASY.slice(0, 2).map((q) => (
|
||||
<PracticeFromDataset key={q.id} question={q} color="amber" />
|
||||
))}
|
||||
{EVAL_STATS_MEDIUM.slice(0, 1).map((q) => (
|
||||
<PracticeFromDataset key={q.id} question={q} color="amber" />
|
||||
))}
|
||||
</div>
|
||||
</LessonShell>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user