Education Descriptive Statistics
Goal
Generate clear descriptive summaries of education research data so the user understands the sample, variables, item distributions, group balance, and baseline patterns before deeper analysis.
Use After
Use after:
education-quantitative-data-cleaningeducation-survey-instrument-designeducation-quantitative-study-designeducation-program-evaluationeducation-psychometric-scale-developmenteducation-learning-analytics-design
Do not expose the skill name to users. Present it as "描述性统计与样本概览".
Inputs
- Cleaned dataset
- Data dictionary
- Variable roles: demographic, grouping, scale/item, outcome, timepoint, class/school
- Scale score table if available
- Planned analyses
Workflow
- Identify variable types:
- categorical: gender, grade, group, school type
- ordinal: Likert items, rating levels
- continuous: scores, scale means, time, counts
- nested IDs: class, school, teacher
- timepoint: pre/post/follow-up
- Produce sample description:
- N
- participant categories
- school/class/teacher structure
- group allocation
- attrition if longitudinal/intervention
- Produce variable descriptives:
- mean, SD, median, min, max
- frequencies and percentages
- missing counts
- item-level distributions
- Produce group/timepoint descriptives:
- experimental vs control
- pre vs post
- grade/class/school groups
- teacher/student groups if relevant
- Generate cross-tabulations:
- group x gender
- group x grade
- group x school/class
- intervention completion x group
- Recommend visualizations.
- Flag descriptive risks:
- very small groups
- skewed variables
- ceiling/floor effects
- unbalanced baseline
- suspicious missing patterns
- Draft descriptive-results wording.
Tool Calls
R
install.packages(c("tidyverse", "psych", "gtsummary", "gt", "janitor", "skimr"))
library(tidyverse)
library(psych)
library(gtsummary)
library(janitor)
library(skimr)
Overall descriptives:
psych::describe(data[, c("score_pre", "score_post", "self_efficacy")])
Frequency table:
data |> count(gender) |> mutate(percent = n / sum(n) * 100)
Cross-tab:
janitor::tabyl(data, group, gender) |> janitor::adorn_percentages("row")
Group descriptives:
data |>
group_by(group) |>
summarise(
n = n(),
mean = mean(score_post, na.rm = TRUE),
sd = sd(score_post, na.rm = TRUE)
)
Publication-style table:
data |>
select(group, gender, grade, score_pre, score_post) |>
tbl_summary(by = group)
Python
pip install pandas numpy scipy seaborn matplotlib tabulate
Overall descriptives:
df[["score_pre", "score_post", "self_efficacy"]].describe()
Frequencies:
df["gender"].value_counts(dropna=False)
df["gender"].value_counts(normalize=True, dropna=False) * 100
Cross-tab:
pd.crosstab(df["group"], df["gender"], normalize="index") * 100
Group descriptives:
df.groupby("group")["score_post"].agg(["count", "mean", "std", "median", "min", "max"])
SPSS
Analyze -> Descriptive Statistics -> Frequencies
Analyze -> Descriptive Statistics -> Descriptives
Analyze -> Descriptive Statistics -> Explore
Analyze -> Descriptive Statistics -> Crosstabs
Analyze -> Compare Means -> Means
Graphs -> Chart Builder
Output Format
1. Sample Description Table
| Characteristic | Category | n | % |
|---|
2. Continuous Variable Descriptives
| Variable | N | Mean | SD | Median | Min | Max | Missing |
|---|
3. Group/Timepoint Descriptives
| Group | Timepoint | N | Mean | SD | Median | Min | Max |
|---|
4. Cross-Tabulation
| Row Variable | Column Variable | Pattern | Note |
|---|
5. Visualization Plan
| Purpose | Recommended Chart | Variables |
|---|---|---|
| Sample composition | Bar chart | Gender/grade/group |
| Score distribution | Histogram/density | Achievement/scale score |
| Group comparison | Boxplot/violin plot | Group x outcome |
| Pre-post change | Line/slope chart | Timepoint x score |
| Relationship | Scatterplot | Two continuous variables |
6. Descriptive Findings Draft
The final sample included [N] participants from [schools/classes]. [x%] were in the intervention group and [x%] were in the comparison group. The mean pre-test writing score was [M] (SD = [SD]), while the mean post-test score was [M] (SD = [SD]). Descriptive results suggested [brief pattern], which was further examined using [planned inferential analysis].
Use Chinese if the paper is Chinese:
本研究最终纳入 [N] 名学生,来自 [学校/班级数量]。实验组占 [x%],对照组占 [x%]。前测写作成绩均值为 [M](SD = [SD]),后测成绩均值为 [M](SD = [SD])。描述性结果显示 [简要模式],后续将通过 [统计方法] 进一步检验。
Education-Specific Checks
- Always describe grade, class, school, and teacher where relevant.
- For interventions, report baseline group balance descriptively before inferential tests.
- For longitudinal/pre-post data, report attrition by group.
- For scale items, inspect ceiling/floor effects common in student attitude data.
- For nested data, report number of schools/classes, not only student N.
- For small samples, avoid overinterpreting mean differences.
Quality Rules
- Descriptive statistics do not prove significance or causality.
- Report missing values and valid N clearly.
- Use SD for approximately continuous variables; use frequencies for categorical variables.
- Do not average categorical codes such as gender or school type.
- Do not hide highly unbalanced groups.
- If Likert items are summarized with means, acknowledge ordinal nature when appropriate; scale scores are usually more defensible.
User-Facing Closure
End by routing to the next likely analysis:
描述性统计已经能说明样本和变量的基本情况。接下来可以进入三条路线:A. 信效度分析,B. t 检验/方差分析/相关回归,C. 可视化和结果表格整理。你希望先看哪一部分?如果你不确定,我会按论文设计自动推荐。