dxy logo
首页丁香园病例库学术专区全部版块
搜索
登录

统计描述怎么写?以冠心病患者为例,正确呈现均数 ± 标准差 / 中位数 + 四分位数

用户头像
注销用户 · 发布于 2025-12-12 · IP 天津天津
2428 浏览
icon墨点星沟 推荐

在临床研究投稿时,很多医生朋友会收到这样的审稿意见:“请补充计量资料的正态性检验结果,非正态分布指标不应使用均数 ± 标准差描述”“计数资料的百分比计算有误,建议重新核对”。其实,统计描述是 SCI 论文 “结果部分” 的开篇,也是审稿人最先关注的内容 —— 如果连 “年龄用均数还是中位数”“百分比怎么算” 都出错,后续再复杂的统计分析也会失去可信度。今天就以 180 例冠心病患者的真实数据为例,手把手教大家区分计量资料的描述方式,掌握计数资料的规范呈现,同时附上 R 和 SPSS 的实操步骤,让你的统计描述既符合临床逻辑,又满足 SCI 期刊要求。​

先看一个常见的错误案例:某医生在论文中写道 “180 例冠心病患者,年龄 58±12 岁,甘油三酯 2.3±1.8 mmol/L,合并高血压 85 例(47.2%)”。投稿后被审稿人指出两点问题:一是未说明年龄和甘油三酯的正态性检验结果,无法判断 “均数 ± 标准差” 是否适用;二是甘油三酯通常呈非正态分布,用均数描述会掩盖数据的真实分布特征(比如存在高值 outliers 时,均数会被拉高)。这个案例的核心问题,就是没掌握 “先判断数据分布,再选择描述方式” 的统计逻辑。​

一、计量资料描述:先做正态性检验,再选 “均数 ± 标准差” 或 “中位数(四分位数)”​

计量资料是指能通过数值量化的指标(如年龄、血压、血脂),其描述方式完全由 “数据分布类型” 决定 —— 正态分布用 “均数 ± 标准差(x̄±s)”,非正态分布用 “中位数(四分位数)[M(Q1, Q3)]”。我们以 180 例冠心病患者的 3 个核心指标(年龄、总胆固醇、甘油三酯)为例,完整演示从 “分布判断” 到 “结果呈现” 的过程。​

1. 第一步:正态性检验(关键前提,不能省略)​

在选择描述方式前,必须先通过 “统计检验 + 可视化” 判断数据是否符合正态分布。​

  • R 实操:Shapiro-Wilk 检验 + Q-Q 图​

假设我们已将 180 例冠心病患者数据导入 R,数据框名为chd_data,包含年龄(岁)、总胆固醇(mmol/L)、甘油三酯(mmol/L)3 个变量。代码如下:

# 1. 加载必备包

install.packages(c("psych", "car"))

library(psych)

library(car)

# 2. 提取计量资料变量

numeric_vars d_data[, c("年龄", "总胆固醇", "甘油三酯")]

# 3. Shapiro-Wilk正态性检验(样本量时首选)

for (var in colnames(numeric_vars)) {

cat("=== ", var, "的正态性检验结果 ===\n")

# 排除缺失值

data_complete .omit(numeric_vars[[var]])

# 执行检验

sw_test complete)

print(sw_test)

# 结果解读:P>0.05提示符合正态分布

}

# 4. Q-Q图可视化验证(更直观判断分布)

par(mfrow = c(1, 3)) # 1行3列布局

for (var in colnames(numeric_vars)) {

qqPlot(numeric_vars[[var]], main = paste(var, "Q-Q图"), pch = 16, col = "blue")

}

假设检验结果如下:​

  • 年龄:Shapiro-Wilk 检验 P=0.15 > 0.05,Q-Q 图点近似沿直线分布 → 符合正态分布;​
  • 总胆固醇:Shapiro-Wilk 检验 P=0.22 > 0.05,Q-Q 图点分布均匀 → 符合正态分布;​
  • 甘油三酯:Shapiro-Wilk 检验 P=0.02 05,Q-Q 图点偏离直线(右侧有长尾) → 不符合正态分布。​
  • SPSS 实操:探索分析(含检验与图形)​

操作步骤:​

  1. 点击【分析】→【描述统计】→【探索】;​
  2. 将 “年龄、总胆固醇、甘油三酯” 选入 “因变量列表”,“显示” 选择 “两者”;​
  3. 点击【统计量】,勾选 “描述性” 和 “正态性检验”;​
  4. 点击【图形】,勾选 “Q-Q 图” 和 “箱图”(箱图可辅助看是否有异常值);​
  5. 点击【确定】,输出结果。​

结果解读与 R 一致:年龄和总胆固醇符合正态分布,甘油三酯呈非正态分布。​

正态性检验避坑点:不要仅凭 “经验” 判断分布(比如认为 “年龄一定正态”)—— 当样本中存在极端值(如年轻冠心病患者或高龄患者较多)时,年龄也可能呈非正态分布;样本量较大(>500)时,Shapiro-Wilk 检验敏感性过高,可结合 Q-Q 图和数据实际意义判断(如血压、血脂等生理指标通常近似正态)。

2. 第二步:按分布类型选择描述方式,计算统计量​

  • 正态分布变量(年龄、总胆固醇):均数 ± 标准差(x̄±s)​

均数反映数据的 “中心位置”,标准差反映 “离散程度”,适合对称分布的数据。​

  • R 实操:用psych包的describe()函数计算,代码如下:

# 计算正态分布变量的均数和标准差

norm_desc c("年龄", "总胆固醇")], fast = TRUE)

# 提取均数(mean)和标准差(sd),保留1位小数

norm_result 变量 = rownames(norm_desc),

均数±标准差 = paste0(round(norm_desc$mean, 1), "±", round(norm_desc$sd, 1))

)

print(norm_result)

输出结果(示例):

img
  • SPSS 实操:在【探索】分析的输出结果中,查看 “描述性” 表格,直接提取 “均值” 和 “标准差”,按 “均值 ± 标准差” 格式整理。​
  • 非正态分布变量(甘油三酯):中位数(四分位数)[M(Q1, Q3)]​

中位数是数据排序后的 “中间值”,不受极端值影响;四分位数(Q1 = 第 25 百分位,Q3 = 第 75 百分位)反映数据的 “中间 50% 范围”,适合偏态分布的数据(如甘油三酯常因少数高值患者呈右偏分布)。​

  • R 实操:用quantile()函数计算,代码如下:

# 计算甘油三酯的中位数(50%分位数)和四分位数(25%、75%分位数)

tg_quant _vars$甘油三酯, probs = c(0.25, 0.5, 0.75), na.rm = TRUE)

# 整理为“中位数(Q1, Q3)”格式,保留1位小数

tg_result 变量 = "甘油三酯",

中位数(四分位数) = paste0(round(tg_quant[2], 1), "(", round(tg_quant[1], 1), ",", round(tg_quant[3], 1), ")")

)

print(tg_result)

输出结果(示例):

img
  • SPSS 实操:在【探索】分析的输出结果中,查看 “百分位数” 表格,提取 “25”“50”“75” 对应的数值,按 “中位数(Q1, Q3)” 格式整理。​

3. 第三步:SCI 论文中的规范表述(附示例)​

统计描述不仅要计算正确,还要在论文中清晰呈现,通常分 “文字描述” 和 “表格呈现” 两种方式:​

  • 文字描述示例:​

“本研究共纳入 180 例冠心病患者,其中男性 102 例(56.7%),女性 78 例(43.3%)。计量资料中,年龄符合正态分布,以均数 ± 标准差表示为 62.3±8.5 岁(范围 45-81 岁);总胆固醇亦符合正态分布,为 4.8±1.1 mmol/L;甘油三酯呈非正态分布,以中位数(四分位数)表示为 1.8(1.2, 2.5)mmol/L。”​

  • 表格呈现示例(三线表,符合 SCI 要求):
img

表格避坑点:非正态分布变量不要标注 “±”(如写成 “1.8±0.7” 是错误的);范围(如年龄 45-81 岁)可选择性添加,用于展示数据的整体跨度,但不要替代标准差或四分位数。​

二、计数资料描述:频数(百分比)[n(%)] 的正确计算与呈现​

计数资料是指按类别分组的指标(如性别、合并症、疾病分期),描述核心是 “频数 + 百分比”,但需注意 “分母的选择”(总样本量或各组样本量)和 “百分比的准确性”。我们仍以 180 例冠心病患者的计数资料(性别、合并高血压、合并糖尿病、心功能分级)为例说明。​

1. 二分类计数资料(性别、合并高血压、合并糖尿病):直接计算总样本百分比​

二分类变量只有两个类别(如性别:男 / 女,合并高血压:是 / 否),百分比分母为 “总样本量”。​

  • R 实操:用table()函数计算频数,再换算为百分比,代码如下:

# 提取计数资料变量

count_vars chd_data[, c("性别", "合并高血压", "合并糖尿病")]

# 定义函数:计算频数和百分比

count_desc {

tab (var, useNA = "no") # 不包含缺失值

pct (tab) * 100, 1) # 百分比保留1位小数

result data.frame(

类别 = names(tab),

频数(百分比) = paste0(tab, "(", pct, "%)")

)

return(result)

}

# 应用函数到每个变量

for (var in colnames(count_vars)) {

cat("=== ", var, "的描述结果 ===\n")

print(count_desc(count_vars[[var]]))

}

输出结果(示例):​

  • 性别:
img

合并高血压:

img
  • SPSS 实操:​
  1. 点击【分析】→【描述统计】→【频率】;​
  2. 将 “性别、合并高血压、合并糖尿病” 选入 “变量”;​
  3. 点击【统计量】,勾选 “百分比”;​
  4. 点击【确定】,输出 “频率表”,直接提取 “频数” 和 “百分比”。​

2. 多分类计数资料(心功能分级):按类别呈现,避免遗漏​

多分类变量有 3 个及以上类别(如心功能分级:Ⅰ 级 /Ⅱ 级 /Ⅲ 级 /Ⅳ 级),需列出所有类别及其百分比,分母仍为 “总样本量”。​

  • 示例结果(文字描述):​

“180 例冠心病患者中,心功能 Ⅰ 级 32 例(17.8%),Ⅱ 级 85 例(47.2%),Ⅲ 级 53 例(29.4%),Ⅳ 级 10 例(5.6%)。”​

  • 示例结果(表格呈现):
img

计数资料避坑点:​

  1. 百分比不要四舍五入过度(如保留 1 位小数即可,避免 “56.666%” 的冗余表述);​
  2. 所有类别的百分比之和应为 100%(若有缺失值,需在表格下方注明 “缺失例数”,如 “合并糖尿病:2 例缺失”);​
  3. 不要混淆 “构成比” 和 “率”(如 “心功能 Ⅲ 级 53 例(29.4%)” 是构成比,反映该级别在总样本中的占比;而 “年发病率” 是率,需结合时间维度计算,两者不能混用)。​

三、实操验证:确保统计描述与数据分布一致​

完成统计描述后,建议通过 “可视化图形” 验证结果是否合理,避免计算错误:​

  • 正态分布变量:用直方图(Histogram)查看是否呈 “钟形分布”——R 用ggplot2的geom_histogram(),SPSS 在【探索】分析中勾选 “直方图”;​
  • 非正态分布变量:用箱线图(Boxplot)查看中位数是否在箱体中间、是否有极端值 ——R 用geom_boxplot(),SPSS 在【探索】分析中勾选 “箱图”;​
  • 计数资料:用条形图(Bar Chart)查看各类别频数的分布 ——R 用geom_bar(),SPSS 点击【图形】→【旧对话框】→【条形图】。​

比如,甘油三酯的箱线图若显示中位数靠近 Q1(即箱体上半部分更长),则符合右偏分布,验证 “中位数(1.8)低于均数(如 2.1)” 的结果合理,进一步说明用中位数描述的正确性。​

统计描述看似是 “简单的计算”,实则是临床研究的 “门面”——180 例冠心病患者的数据通过规范描述,不仅能让审稿人快速了解样本特征,还能为后续的 “组间比较”(如不同心功能分级患者的血脂差异)奠定基础。很多医生朋友之所以在统计描述上出错,本质是跳过了 “正态性检验” 这一步,或混淆了 “均数” 与 “中位数” 的适用场景。​

接下来的系列文章中,我会聚焦 “假设检验的核心 ——P 值与置信区间”,以胃癌疗效对比为例,通俗解释 “P5 到底意味着什么”“如何避免误解 P 值”,同时教大家用 R 和 SPSS 做组间比较的基础检验。如果你的研究中遇到过 “统计描述与期刊要求不符”“不知道如何判断数据分布” 等问题,欢迎在评论区留言;想持续学习医学统计 + SCI 实操的朋友,记得关注我,后续内容会帮你一步步攻克统计难关,让论文投稿更顺利!

回复2 10

全部讨论(0)

默认最新
avatar
分享帖子
share-weibo分享到微博
share-weibo分享到微信
返回顶部