Skip to content

3.1 描述性统计 ​

本节目标

读完本节后你能:

  • 区分描述性统计与推论统计,根据变量类型选对指标。
  • 写出心理学论文中规范的样本特征段和变量描述段,并套用三线表模板。
  • 在 SPSS 和 Python 中跑出均值、标准差、偏度、峰度、相关矩阵、分组描述。
  • 识别异常值、缺失数据与偏态分布,判断它们对后续分析的影响。

本节路线图

  • 概述:描述性统计是什么,为什么写论文绕不开它
  • 论文场景:人口学特征表 + 变量描述/相关矩阵表 + 段落模板
  • 常用方法:集中趋势、离散程度、分布形态、频次
  • 软件实现:SPSS 与 Python(pandas + scipy)
  • 进阶要点:异常值、缺失值、正态性、分组、可视化、APA 规范

概述 ​

描述性统计(descriptive statistics)是用一组数字或图形把样本数据的主要特征总结出来的方法。它不做"从样本推到总体"的判断,那是推论统计的任务。

为什么先讲它?因为:

  1. 它是后续一切分析的前置。配对 t 检验要看差值的分布,ANOVA 和回归要检查模型残差;回归还要查异常点与共线性。元分析则常要读取论文里的均值和标准差。这些都依赖描述性统计先把数据"摸清楚"。
  2. 它是论文里的标配。任何一篇规范的实证心理学论文,Method 节里都有样本特征段,Results 节开头都有变量描述/相关矩阵表。没写好描述性统计,审稿人会直接判断你"不熟悉学科规范"。
  3. 它最容易暴露问题。均值超出量表范围、SD 接近 0、分布出现长尾或孤立点,都会提示先核对编码、测量和模型,而不是直接进入显著性检验。

描述性统计回答四类问题:集中在哪里(均值、中位数、众数)、散得多开(标准差、四分位距、范围)、长什么样(偏度、峰度、直方图)、有几类各多少(频次、百分比)。

心理学论文中的常用场景 ​

社心论文里的描述性统计几乎只出现在两个地方:Method 节末尾的样本特征,和 Results 节开头的变量描述。写的时候可以直接套用手册里的模板。

场景一:报告样本人口学特征 ​

放在 Method → Participants 部分。常见做法有两种:

  • 小样本或人口学维度少(≤ 3 个):直接写在正文里,不做表。
  • 大样本或维度多:做一张人口学特征表,正文给一句总览。

正文段落模板:

研究共招募 N = 234 名大学生被试参与,其中女性 129 人(55.1%),男性 105 人(44.9%)。被试年龄范围为 18–30 岁(M = 21.4,SD = 2.3)。学历分布为本科 76.9%(n = 180)、硕士 17.9%(n = 42)、博士 5.2%(n = 12)。所有被试均为汉族,自愿参加并签署知情同意书,完成实验后获得 ¥ X 元报酬。

写作经验

  • 中文论文里习惯用 N 表示总样本量、n 表示子样本量,斜体。
  • 百分比保留 1 位小数,与年龄、量表分均值的小数位数保持一致。
  • 关键变量(性别、年龄)必报;其他维度(学历、专业、收入)按研究需要报。

人口学特征表模板:

变量类别n%
性别男10544.9
女12955.1
学历本科18076.9
硕士4217.9
博士125.2
年龄M (SD)21.4 (2.3)—

注:N = 234。

场景二:报告变量描述与相关矩阵 ​

放在 Results 节开头,几乎所有社心论文都会有一张这种表——把所有研究变量的均值、标准差、信度系数,以及它们两两之间的相关,合并到一张表里。这张表通常叫 Table 1,在三线表的对角线放 Cronbach's α,让读者一眼能判断你的测量是否可靠。

正文段落模板:

各研究变量的均值、标准差及相关系数见表 1。结果显示,自尊与幸福感呈显著正相关(r = .51, p < .001),与焦虑呈显著负相关(r = –.42, p < .001)。所有量表的内部一致性信度(Cronbach's α)均在 .79 以上,表明测量具有良好的可靠性。

变量描述与相关矩阵表模板:

变量MSD偏度峰度123
1. 自尊3.450.78–0.21–0.14(.85)
2. 焦虑2.100.920.450.12–.42***(.79)
3. 幸福感4.120.65–0.320.05.51***–.35***(.81)

注:N = 234。对角线括号内为 Cronbach's α。* p < .05,** p < .01,*** p < .001。

几个细节坑

  • 相关系数小数点前的 0 要省略(写 .51 不写 0.51),这是 APA 7 的硬规定。
  • 均值和标准差不省略前导 0(写 0.78 不写 .78)。
  • 显著性星号一般两两相关全做双侧检验。
  • 偏度和峰度不是必报,也不能单独决定能否使用参数方法;它们应与分布图、异常点、样本量、研究设计和模型残差一起判断。

描述性统计的常用方法 ​

按"问什么问题用什么指标"来组织。

集中趋势:数据的"中心"在哪 ​

指标公式适用变量何时优先用
均值 MeanX¯=1n∑i=1nXi定距、定比数据近似正态、无极端值
中位数 Median排序后第 50% 分位定序及以上偏态分布、有极端值(如收入、反应时)
众数 Mode出现次数最多的值任意,定类必用描述类别变量(最常见的群体、最热门的选项)

经验法则

反应时(RT)、收入、社交关系数等常见右偏变量,优先同时查看中位数与 IQR;是否还报告均值、使用变换或改用稳健模型,要由研究问题和后续模型决定。李克特单题通常先报各类别频数或中位数;多题合成分能否用均值,要结合量表构造和实际分布判断。类别变量用频数、比例和众数描述。

离散程度:数据散得多开 ​

最常用的两个:方差(variance)和标准差(SD)。

s2=1n−1∑i=1n(Xi−X¯)2,s=s2

注意分母是 n−1(贝塞尔修正,针对样本估计总体方差),不是 n。SPSS、R、Python 默认都是 n−1。

其他指标:

  • 范围(range):max−min。最简单,但对异常值极敏感。
  • 四分位距(IQR):Q3−Q1。中间 50% 数据的跨度,箱线图盒子的高度,抗异常值。
  • 变异系数(CV):CV=s/X¯。无量纲,可跨变量比较离散程度(比如比较"工资"和"工龄"哪个更分散)。

分布形态:偏度与峰度 ​

  • 偏度(skewness)刻画对称性。正态分布偏度为 0;> 0 表示右偏(长尾在右,如反应时、收入);< 0 表示左偏(长尾在左,如考试得分接近天花板)。
  • 峰度(kurtosis)主要反映尾部厚度和极端值倾向。要先确认软件口径:pandas 的 Series.kurt() 报 Fisher 超额峰度(正态分布为 0),有些软件或公式则报 Pearson 峰度(正态分布为 3)。因此表格必须写清是哪一种定义。

不把经验阈值当通行证

|偏度| < 2、|超额峰度| < 7 常被当作经验筛查线,但它们不是所有参数方法共用的正态性判据,也不能推出“满足阈值即可使用参数检验”。同样,超出阈值也不等于必须转换数据或改做秩检验。

按下面的顺序判断:

  • 先画直方图、Q-Q 图和箱线图,核对长尾、离群点、取值边界与录入错误。
  • 再检查目标方法真正要求近似正态的量:配对 t 检验看差值,ANOVA 看组内误差,回归看给定预测变量后的误差,而不是要求每个原始变量都正态。
  • 结合样本量、组间是否平衡、方差是否接近以及异常点影响;必要时比较原模型与稳健方法、变换或重抽样结果。

偏度和峰度是诊断线索,不是自动决策规则。

频次与比例 ​

针对类别变量。

  • 频次(frequency):每一类多少人。
  • 百分比(percentage / valid percent):valid percent 排除了缺失值,是论文里通常报告的那个。
  • 列联表(cross-tabulation):两个类别变量交叉。例如 性别 × 是否参加干预 → 4 个格子,配合卡方检验使用。

软件实现 ​

下面以 df 为已读入的数据框(被试 × 变量)演示。SPSS 给出菜单路径与等价语法两种。

SPSS ​

1. 连续变量的均值、SD、偏度、峰度 ​

菜单:Analyze → Descriptive Statistics → Descriptives → 选入变量 → Options 勾选 Mean / Std. Deviation / Skewness / Kurtosis。

语法:

bash
DESCRIPTIVES VARIABLES=self_esteem anxiety wellbeing
  /STATISTICS=MEAN STDDEV MIN MAX SKEWNESS KURTOSIS.

2. 类别变量频次 ​

菜单:Analyze → Descriptive Statistics → Frequencies → 选入变量。

语法:

bash
FREQUENCIES VARIABLES=gender education
  /ORDER=ANALYSIS.

3. 分组描述(按性别看自尊均值) ​

菜单:Analyze → Compare Means → Means。

语法:

bash
MEANS TABLES=self_esteem BY gender
  /CELLS=MEAN COUNT STDDEV.

4. 探索性分析(含箱线图、Q-Q 图、Shapiro-Wilk) ​

菜单:Analyze → Descriptive Statistics → Explore → 选 Plots → 勾 Histogram、Normality plots with tests。

语法:

bash
EXAMINE VARIABLES=self_esteem BY gender
  /PLOT BOXPLOT HISTOGRAM NPPLOT
  /STATISTICS DESCRIPTIVES
  /MISSING LISTWISE.

5. 相关矩阵 ​

bash
CORRELATIONS
  /VARIABLES=self_esteem anxiety wellbeing
  /PRINT=TWOTAIL NOSIG
  /MISSING=PAIRWISE.
一键搞定 Table 1 的小技巧

SPSS 自带的 CORRELATIONS 输出不带均值和 SD。可以分两次跑(一次 DESCRIPTIVES、一次 CORRELATIONS),再手动拼到一张表里;或者直接用 R 包 apaTables::apa.cor.table() / Python 的 pingouin.rcorr() 一键生成可粘贴的格式。

Python ​

主要用 pandas + scipy.stats,可视化用 seaborn。

1. 一行总览 ​

python
import pandas as pd
df = pd.read_csv("data.csv")

# 连续变量总览:count / mean / std / min / Q1 / median / Q3 / max
df.describe()

# 类别变量总览
df.describe(include="object")

# 全部变量
df.describe(include="all")
python
# 对每列运行 Shapiro-Wilk 检验,返回 W、p 值和按 alpha 判断的 normal 列
import pingouin as pg
pg.normality(df[["self_esteem", "anxiety", "wellbeing"]])

2. 单个指标 ​

python
df["self_esteem"].mean()
df["self_esteem"].median()
df["self_esteem"].mode()           # 众数(可能多个)
df["self_esteem"].std()            # ddof=1,与 SPSS 一致
df["self_esteem"].var()
df["self_esteem"].quantile([0.25, 0.5, 0.75])
df["self_esteem"].skew()           # 偏度
df["self_esteem"].kurt()           # 超额峰度(excess kurtosis)

3. 类别变量频次 ​

python
df["gender"].value_counts()                         # 频次
df["gender"].value_counts(normalize=True) * 100     # 百分比

# 列联表
pd.crosstab(df["gender"], df["condition"])
pd.crosstab(df["gender"], df["condition"], normalize="index")  # 行百分比

4. 分组描述 ​

python
df.groupby("gender")["self_esteem"].agg(["count", "mean", "std", "min", "max"])

# 多变量同时分组
df.groupby("gender")[["self_esteem", "anxiety", "wellbeing"]].agg(["mean", "std"])

5. 相关矩阵 ​

python
# pandas 默认 Pearson;可改 method="spearman" / "kendall"
df[["self_esteem", "anxiety", "wellbeing"]].corr().round(2)

# 带显著性的相关矩阵(推荐)
import pingouin as pg
pg.rcorr(df[["self_esteem", "anxiety", "wellbeing"]],
         method="pearson", upper="pval", decimals=2)

6. 一键生成"准 Table 1" ​

python
def table1(df, vars):
    """生成均值、SD、偏度、峰度的描述统计表。"""
    stats = df[vars].agg(["mean", "std", "skew", "kurt"]).T
    stats.columns = ["M", "SD", "Skewness", "Kurtosis"]
    return stats.round(2)

table1(df, ["self_esteem", "anxiety", "wellbeing"])

进阶要点 ​

下面这几个点教科书里散落各处,但每个都直接关系到你能不能把数据"看明白"。

1. 异常值(outliers):先看见,再决定怎么办 ​

怎么发现:

  • 箱线图:超出 Q1−1.5×IQR 或 Q3+1.5×IQR 的点。最直观,不依赖正态假设。
  • Z 分数:|z|>3.29(相当于双侧 .001)通常视为异常。注意 z 分数本身基于均值和 SD,容易被异常值"污染"。
  • 马氏距离(Mahalanobis distance):处理多变量异常值。SPSS 在 Regression → Save → Distances 里能输出。

怎么处理(按推荐程度):

  1. 检查录入错误——身高 1880cm、年龄 105 岁这种,直接改或删。
  2. 检查注意力检测题、答题速度——答题时间过短(如 < 1 秒/题)或选了相反答案的"反向题陷阱",剔除。
  3. 保留并报告——如果只是真实数据中的极端值,先做敏感性分析(含 vs 不含异常值),看结论是否稳健,并在论文中报告。
  4. 温莎化(winsorization)——把超过 5%(或 1%)分位的值替换为该分位值。
  5. 变换——log、平方根,常用于反应时和收入。

不要做的事

  • 不要光因为某个值"看着远"就删,要给出事先设定的剔除标准(最好预注册),否则就是 p-hacking。
  • 不要删除数据后却不报告,违反 APA 透明性原则。

2. 缺失数据(missing data) ​

至少回答三个问题:

  • 缺多少:每个变量的缺失率。> 5% 就要慎重;> 20% 通常需要专门方法处理。
  • 缺得有规律吗:MCAR(完全随机缺失)/ MAR(随机缺失)/ MNAR(非随机缺失)。Little's MCAR test 可粗略检验。
  • 怎么办:
    • Listwise deletion(默认行为):损失样本量,要求 MCAR。
    • 均值/中位数填补:不推荐,会低估方差。
    • 多重插补(multiple imputation, MI):金标准之一。R 用 mice,Python 用 sklearn.impute.IterativeImputer,SPSS 在 Analyze → Multiple Imputation。
    • FIML(在 SEM 里直接用全信息极大似然):无需先填补,AMOS / lavaan / Mplus 都支持。

3. 正态性评估:不要只看 Shapiro-Wilk ​

先明确要检查什么。单样本 t 检验关注观测值相对总体均值的误差,配对 t 检验关注配对差值,独立样本 t 检验与 ANOVA 关注各组误差,线性回归关注给定预测变量后的误差。描述每个原始变量的形状仍然有用,但“某个变量不正态”不等于模型推断必然无效。

图形、数值和模型诊断结合使用:

  • 直方图和箱线图:识别偏态、边界、混合分布与孤立点。
  • Q-Q 图(quantile-quantile plot):重点看系统性弯曲和尾部偏离,不要求所有点精确贴线。
  • 偏度、超额峰度及其软件定义:用于描述偏离的方向和程度,不作单一判定线。
  • Shapiro-Wilk:检验“数据来自正态总体”这一精确零假设;p 值反映样本量与偏离程度的共同作用,不是非正态程度的效应量。

实操建议

不存在“Shapiro-Wilk 只适合 n < 50”或“N > 200 几乎一定显著”的通用分界。截至 2026-08-11,SciPy 1.18.0 的 scipy.stats.shapiro 要求至少 3 个观测,并提示 N > 5000 时 W 统计量仍准确,但 p 值可能不准确。

大样本下检验能发现很小的偏离,小样本下则可能漏掉有影响的偏离。不要用一次正态性检验替代残差图、异常点诊断和敏感性分析。 t 检验、ANOVA 与回归在一些大样本、近似平衡且无强影响点的情形下对非正态具有一定稳健性;方差不齐、组样本量失衡、重尾或强异常点同时出现时,不能沿用这个结论。

4. 分组描述与可视化:描述性统计的可视化形式 ​

描述性统计不只是数字,还包括图。论文 Results 节里的"图 1"很多时候就是描述性统计的可视化版本。

按变量类型对应的常用图:

数据形式图类型工具
单连续变量分布直方图、密度图sns.histplot / sns.kdeplot
单连续变量按组比较箱线图、小提琴图、雨云图sns.boxplot / sns.violinplot
两连续变量关系散点图(带回归线)sns.regplot
多连续变量两两关系散点矩阵 / 相关热图sns.pairplot / sns.heatmap
类别 × 类别堆叠条形图、马赛克图sns.countplot

详细的作图原则与代码见 4 · 科研作图。

5. APA 7 报告规范速查 ​

几条最常踩雷的格式

  • 统计符号斜体:M、SD、N、n、r、p、t、F。
  • p 值:精确到小数点后 2–3 位(p = .03,p = .002),< .001 才写 p < .001,不写 p = .000。
  • 相关系数和 p 值省略前导 0:r = .42,p = .03。
  • 均值、标准差、未标准化系数保留 2 位小数;测量量表的单条目分可保留 2 位。
  • 自由度写在统计量后括号内:t(232) = 2.41。
  • 区分"达到显著"和"接近显著"——APA 7 不再鼓励用 "marginally significant" 这种说法。

6. 信度(reliability):放在描述统计还是单独一节 ​

严格说,Cronbach's α、McDonald's ω 是测量的属性,不是数据的属性,但论文里习惯把它们和描述性统计一起报——通常放进相关矩阵的对角线上。

最低限度报告:每个多条目量表的 α 值。α ≥ .70 通常视为可接受,> .80 良好,> .90 优秀(但 α 过高也可能意味着条目冗余)。这个话题完整展开会牵扯到测量学,本节不深入;先记住"对角线放 α"这个惯例就够了。

资源与工具 ​

延伸阅读 ​

  • 甘怡群等. (2017). 心理与行为科学统计(第二版). 北京大学出版社. ——本系列推荐教材,第 2–3 章覆盖本节内容。
  • Kline, R. B. (2016). Principles and practice of structural equation modeling (4th ed.). Guilford Press. ——SEM 中的分布诊断与估计方法参考。
  • Tabachnick, B. G., & Fidell, L. S. (2019). Using multivariate statistics (7th ed.). Pearson. ——异常值检测与多变量假设检查的标准参考。
  • Schafer, J. L., & Graham, J. W. (2002). Missing data: Our view of the state of the art. Psychological Methods, 7(2), 147–177. ——缺失数据处理的经典综述。
  • APA. (2020). Publication manual of the American Psychological Association (7th ed.). ——表格、统计符号、数字格式的官方规定。
  • Shapiro, S. S., & Wilk, M. B. (1965). An analysis of variance test for normality (complete samples). Biometrika, 52(3/4), 591–611. https://doi.org/10.1093/biomet/52.3-4.591
  • Lumley, T., Diehr, P., Emerson, S., & Chen, L. (2002). The importance of the normality assumption in large public health data sets. Annual Review of Public Health, 23, 151–169. https://doi.org/10.1146/annurev.publhealth.23.100901.140546
  • Blanca, M. J., Alarcón, R., Arnau, J., Bono, R., & Bendayan, R. (2017). Non-normal data: Is ANOVA still a valid option? Psicothema, 29(4), 552–557. https://doi.org/10.7334/psicothema2016.383
  • SciPy 1.18.0 documentation. scipy.stats.shapiro(核查于 2026-08-11). https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.shapiro.html