4. 统计描述和基线表格绘制

2023-12-05

目录

1. 连续型变量统计描述

单变量统计描述

1.summary函数

2.psych包中的describe()函数

3.Hmisc包中的describe()函数

4.pastecs包的stat.desc()的函数

分组统计描述

1.doBy包的summaryBy函数(重点学习)

2.函数aggregate()

2.分类变量统计描述

3.基线表格快速绘制

(1)临床资料基线表基本概念和统计方法

(2)绘制基线表实操


1. 连续型变量统计描述

单变量统计描述

1.summary函数

使用 summary () 函数来获取描述性统计量 (连续&分类变量)

最大值 最小值 四分位数 和数值型变量的 均值 以及因子向量和逻辑向量的 频数 统计

summary(mtcars$mpg)

优势: 同时可以处理几个变量 的计算

myvars <- c("mpg","hp","wt")
summary(mtcars[myvars])

2.psych包中的describe()函数

可以计算 非缺失值 的数量, 平均数 标准差 中位数 截尾均值 绝对中位差 最小值 最大值 值域 ,偏度,峰度和平均值的标准误差

library(psych)
describe(mtcars$mpg)
describe(mtcars[myvars]) #也可以同时处理多个变量

3.Hmisc包中的describe()函数

Hmisc包中的describe()函数可返回变量和 观测的数量 缺失值 唯一值的数目 、Info(关于变量的连续性的统计量), 平均值 、Gmd(基尼均差), 分位数 ,以及五个 最大的值 和五个 最小的值

library(Hmisc)
Hmisc::describe(mtcars$mpg)
Hmisc::describe(mtcars[myvars]) #也可以同时处理多个变量

4.pastecs包的stat.desc()的函数

pastecs包中有一个名为stat.desc()的函数,它可以计算种类繁多的描述性统计量。

#install.packages("pastecs")
library(pastecs)
stat.desc(mtcars,basic =TRUE,desc = TRUE,norm = T,p=0.95)

(1)其中的data是一个数据框。
若basic=TRUE(默认值),则计算其中所有值、空值、缺失值的数量,以及最小值、最大值、值域,还有总和。
(2)若desc=TRUE(同样也是默认值),则计算中位数、平均数、平均数的标准误、平均数置信度为95%的置信区间、方差、标准差以及变异系数。
(3)若norm=TRUE(不是默认的),则返回正态分布统计量,包括偏度和峰度(以及它们的统计显著程度)和Shapiro–Wilk正态检验结果。这里使用了p值来计算平均数的置信区间(默认置信度为0.95)

分组统计描述

1.doBy包的summaryBy函数(重点学习)

其格式如下:
summaryBy(var1 + var2 + var3 ~ groupvar1 + groupvar2,data= ?, id=NULL,FUN= ?)

library(doBy)
summaryBy(mpg+wt+qsec~vs,data=mtcars,id=NULL,mean)
summaryBy(mpg+wt+qsec~vs+am,data=mtcars,id=NULL,mean)

~前面为需要计算的连续型变量,~后面为需要分组的分组变量,FUN=需要计算的统计量

还可以通过自定义FUN的内容来扩充每次的计算统计量。如下,

fun1 <- function(x){
  c(m=mean(x, na.rm=T), v=var(x, na.rm=T),q=quantile(x, na.rm=T), md = median(x, na.rm=T) ,l=length(x),sd = sd(x,na.rm = T))
}
summaryBy(mpg+wt+qsec~vs,data=mtcars,id=NULL,FUN=fun1)

  • 2.函数aggregate()

aggregate(mtcars[myvars],by=list(am=mtcars$am),mean)
  am      mpg       hp       wt
1  0 17.14737 160.2632 3.768895
2  1 24.39231 126.8462 2.411000

2.分类变量统计描述

参考链接内容

5.基本统计方法-分类变量的组间比较_分类变量统计方法-CSDN博客

3.基线表格快速绘制

(1)临床资料基线表基本概念和统计方法

临床资料基线表(Clinical Data Baseline Table)是一种常用于临床研究和流行病学研究中的数据表格。 它是研究的起点,通常在开始进行研究时收集和记录的数据。这些数据用于描述研究参与者在研究开始前的初始状态和特征,这个初始状态被称为“基线”。

基线表通常包含以下信息:

  1. 人口学特征: 参与者的年龄、性别、种族等基本特征;

  2. 临床特征: 包括参与者的疾病状态、症状和既往病史等;

  3. 生活方式和行为习惯: 如吸烟史、饮酒习惯、运动频率等;

  4. 生理测量值: 如身高、体重、血压、生化指标等;

  5. 疾病评估量表: 用于评估研究参与者的疾病严重程度和症状;

临床资料基线表的描述性统计方法

在绘制临床资料基线表时,可以使用不同的描述性统计方法来总结不同类型的变量。以下是针对常见变量类型的描述性统计推荐方法:

  1. 连续型变量: 连续型变量是指可以取无限个值的变量,如年龄、体重、血压等。 对于连续型变量,通常使用以下描述性统计:

    - 平均值(Mean): 反映变量的中心位置;

    - 标准差(Standard Deviation): 反映变量的离散程度;

    - 中位数(Median): 中间值,将数据分为两等份;

    - 最小值(Minimum)和最大值(Maximum): 描述数据的范围;

    - 四分位数(Quartiles): 分为四等份,有25%、50%、75%等。

  2. 分类型变量: 分类型变量是指只能取有限个离散值的变量,如性别、种族、病情等级等。 对于分类型变量,通常使用以下描述性统计:

    - 计数(Count): 各类别出现的次数。

    - 百分比(Percentage): 各类别在总样本中所占的比例。

    - 众数(Mode): 出现频率最高的类别。

  3. 有序型变量: 有序型变量是指有一定顺序或等级的变量,但差值不具有数值意义,如疼痛程度等级、教育水平等。 对于有序型变量,可以使用以下描述性统计:

    - 中位数(Median): 反映中间值,有序变量的特点是中位数有实际意义。

    - 百分位数(Percentiles): 反映数据在有序序列中的位置。

  4. 二分类变量: 二分类变量是一种特殊的分类型变量,只有两个类别,如是否患病、是否接受治疗等。对于二分类变量,可以使用以下描述性统计:

    - 计数(Count): 各类别出现的次数。

    - 百分比(Percentage): 各类别在总样本中所占的比例。

绘制临床资料基线表展示组间比较的p值时该如何选择合适的方法呢?

  1. 连续性变量且符合正态分布、方差齐性: 如果两组数据都是连续性变量,并且符合正态分布且方差齐性,可以选择使用 Student's t-test(独立样本t检验) 。如果有多组间比较,可以使用 方差分析(ANOVA) ,并结合 事后多重比较方法(如Tukey's HSD test)

  2. 连续性变量但不符合正态分布、方差齐性: 如果两组数据都是连续性变量,但不满足正态分布和方差齐性的要求,可以考虑使用非参数检验**,如 Mann-Whitney U检验(Wilcoxon秩和检验) 。对于多组间比较,可以使用 Kruskal-Wallis H检验 ,并结合适当的多重比较方法。

  3. 分类变量: 如果需要比较的是分类变量,如两组间的比例差异,可以使用 卡方检验(χ²检验) 。若分类变量有多个水平,可以使用 Fisher's精确检验 拟合优度检验 ,并结合多重比较方法。

  4. 多个连续性变量: 如果需要同时比较多个连续性变量,可以使用 多重回归分析 方差分析 。在这种情况下,可以绘制出适当的多个p值,或者使用 Bonferroni校正 来控制多重比较的错误率。

在展示p值时,通常会标明明确的检验方法和显著性水平(例如,p < 0.05),以表明组间差异是否具有统计学意义。另外,为了更全面地理解结果,也可以同时提供置信区间等统计信息。

(2)绘制基线表实操

基线表格示例:

实操:

R语言 tableon e包绘制临床资料基线表

示例: 使用梅奥诊所原发性胆汁性肝硬化数据集进行演示:

1.加载数据

## 加载梅奥诊所原发性胆汁性肝硬化数据
library(survival)
data(pbc)
## 检查变量
head(pbc)

2. 将分类变量转换为因子变量


## 将分类变量转换为因子变量
varsToFactor <- c("status", "trt", "ascites", "hepato", "spiders", "edema", "stage")
pbc[varsToFactor] <- lapply(pbc[varsToFactor], factor)

03 创建变量列表

## 创建变量列表
dput(names(pbc))
vars <- c("time", "status", "age", "sex", "ascites", "hepato",
          "spiders", "edema", "bili", "chol", "albumin",
          "copper", "alk.phos", "ast", "trig", "platelet",
          "protime", "stage")

04  根据治疗组(trt)创建Table 1


## 根据治疗组(trt)创建Table 1 
tableOne <- CreateTableOne(vars = vars, strata = c("trt"), data = pbc)

## 只需输入对象名称,将调用print.TableOne方法
tableOne

`CreateTableOne()`函数用于创建汇总表,用于比较不同组之间的基线特征。 它有多个参数,每个参数的含义和设置方法:

CreateTableOne(
  vars,
  strata,
  data,
  factorVars,
  includeNA = FALSE,
  test = TRUE,
  testApprox = chisq.test,
  argsApprox = list(correct = TRUE),
  testExact = fisher.test,
  argsExact = list(workspace = 2 * 10^5),
  testNormal = oneway.test,
  argsNormal = list(var.equal = TRUE),
  testNonNormal = kruskal.test,
  argsNonNormal = list(NULL),
  smd = TRUE,
  addOverall = FALSE
)

1. vars: 要汇总的变量,以字符向量的形式提供。 因子变量将被视为分类变量,数值变量将被视为连续变量。 如果为空,则使用数据集中的所有变量。

2. strata: 分层(分组)变量的名称,以字符向量的形式提供。 如果省略,则返回总体结果而不进行分层。

3. data: 存放变量的数据框。 所有变量(包括vars和strata中的变量)都必须在这个数据框中。

4. factorVars: 要被视为分类变量的数值变量,以字符向量的形式提供。 不包括因子变量,除非需要通过删除空的水平来重新设置它们的水平。如果省略,只有因子变量被视为分类变量。在vars参数中指定的变量也必须在factorVars参数中指定。

5. includeNA: 逻辑值,如果为TRUE,则将缺失值视为常规因子水平,而不是缺失值。 在汇总表中,缺失值将显示为分类变量的最后一个水平。仅对分类变量有效。

6. test: 逻辑值,如果为TRUE,并且存在多个组,则进行组间比较。

7. testApprox: 指定进行大样本近似检验的函数。 默认为chisq.test,不推荐在某些单元格具有小计数(少于5)的情况下使用。

8. argsApprox: 一个带有参数名称的列表,传递给testApprox函数。 默认值为list(correct = TRUE),这对于chisq.test开启连续性校正。

9. testExact: 指定进行精确检验的函数。 默认为fisher.test。如果单元格具有大量数据,可能会由于内存限制而失败。在这种情况下,应该使用基于大样本近似的方法。

10. argsExact: 一个带有参数名称的列表,传递给testExact函数。 默认值为list(workspace = 2*10^5),指定为fisher.test分配的内存空间。

11. testNormal: 指定进行基于正态假设的检验的函数。 默认为oneway.test,当只有两个组时,它等同于t检验。

12. argsNormal: 一个带有参数名称的列表,传递给testNormal函数。 默认值为list(var.equal = TRUE),假定组间方差相等,用于执行普通的方差分析(ANOVA)。

13. testNonNormal: 指定执行非参数检验的函数。 默认为kruskal.test(Kruskal-Wallis秩和检验)。当只有两个组时,它等同于wilcox.test(Mann-Whitney U检验)。

14. argsNonNormal: 一个带有参数名称的列表,传递给testNonNormal函数。 默认值为list(NULL),仅用作占位符。

15. smd: 逻辑值,如果为TRUE,并且存在多个组,则计算所有两两比较的标准化均值差(Standardized Mean Difference)。

16. addOverall: 逻辑值,只在提供strata时使用。如果为TRUE,则在汇总表中添加一个总体列。 标准化均值差和p值的计算仅基于分层列。

05 指定非正态变量


## 指定非正态变量将适当地显示变量,并显示非参数检验的p值。在exact参数中指定变量以获取精确的检验p值。cramVars可用于显示二级分类变量的两个水平。
print(tableOne, nonnormal = c("bili", "chol", "copper", "alk.phos", "trig"),
      exact = c("status", "stage"), cramVars = "hepato", smd = TRUE)

06 详细总结

## 使用summary.TableOne方法进行详细总结
summary(tableOne)

07 查看

## 只使用$操作符查看分类部分
tableOne$CatTable
summary(tableOne$CatTable)


## 只使用$操作符查看连续部分
tableOne$ContTable
summary(tableOne$ContTable)

导出到excel和word

导出到excel



## 如果您的工作流程包括在撰写稿件时复制到Excel和Word中,您可能会受益于quote参数。这将引用所有内容,以免Excel搞乱了单元格。
# 方法1
tab1Mat <- print(tableOne, nonnormal = c("bili", "chol", "copper", "alk.phos", "trig"),
      exact = c("status", "stage"), quote = TRUE)
write.csv(tab1Mat, file = "Result1_Table1.csv")
# 方法2
print(tableOne,  formatOptions = list(big.mark = ","))
tab1Mat2 <- print(tableOne, showAllLevels = TRUE, quote = FALSE, noSpaces = TRUE, printToggle = FALSE)
write.csv(tab1Mat2, file = "Result2_Table1.csv")

导出到word


## 如果您希望在Word中居中对齐值,请使用noSpaces选项。
print(tableOne, nonnormal = c("bili", "chol", "copper", "alk.phos", "trig"),
      exact = c("status", "stage"), quote = TRUE, noSpaces = TRUE)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4. 统计描述和基线表格绘制 的相关文章

  • FL Studio2024中文语言版水果编曲软件

    FL Studio21 2这款软件在国内被广泛使用 因此又被称为 水果 它提供音符编辑器 可以针对作曲者的要求编辑出不同音律的节奏 例如鼓 镲 锣 钢琴 笛 大提琴 筝 扬琴等等任何乐器的节奏律动 此外 它还提供了方便快捷的音源输入 对于在
  • “丝路电商”与泛欧在线公共采购平台Peppol

    近期上海商务委员会公布 关于在上海市创建 丝路电商 合作先行区的方案 以下简称方案 方案中提出 全面贯彻落实党的二十大精神 立足新发展阶段 完整 准确 全面贯彻新发展理念 加快构建新发展格局 统筹发展和安全 发挥上海在改革开放中的突破攻坚作
  • Springboot养老院信息管理系统的开发-计算机毕设 附源码 27500

    Springboot养老院信息管理系统的开发 摘 要 随着互联网趋势的到来 各行各业都在考虑利用互联网将自己推广出去 最好方式就是建立自己的互联网系统 并对其进行维护和管理 在现实运用中 应用软件的工作规则和开发步骤 采用Springboo
  • 分治—快速选择算法

    文章目录 215 数组中的第K个最大元素 1 题目 2 算法原理 3 代码实现 LCR 159 库存管理 III

随机推荐

  • 分治-归并算法——LCR 170. 交易逆序对的总数

    文章目录 0 归并排序 1 题目 2 算法原理 3 代码实现 0 归并排序 归并排序是典型的分治 将数组分成若干个子数组 数组两两比较 不是很清楚的 可以查看此篇文章 数据结构 七大排序 这里以力扣 9
  • 分治-归并排序

    文章目录 315 计算右侧小于当前元素的个数 1 题目 2 算法原理 3 代码实现 493 翻转对
  • 小学全科教师是什么意思

    作为一名小学全科教师 我们的目标是提供全面的教育 帮助孩子们在各个学科领域中取得均衡发展 我们不仅教授语文 数学等传统学科 还注重培养孩子们的独立思考能力 创新精神和社交技巧 下面 我将从几个方面阐述小学全科教师的重要性和职责 小学全科教师
  • xampp环境安装

    XAMPP是完全免费且易于安装的Apache发行版 其中包含Apache MariaDB PHP和Perl 类似XAMPP的服务器套件还有很多 我用过的还有UPUPW 它们都极大的简化了开发环境的配置 下载链接 Download XAMPP
  • SiLM5350SBBCA-DG一款可提供分离输出 隔离门极驱动器完美UCC5350SBDR

    SiLM5350SBBCA DG是一款适用于IGBT MOSFET的单通道 隔离门极驱动器 具有10A拉电流和10A灌电流驱动能 力 提供分离输出 可单独控制 上升时间和下降时间 在SOP8W封装中具有5000 VRMS隔离耐压 在 SOP
  • 优维产品最佳实践第17期:善用控制台

    背 景 遇到页面报错时 是不是感到困扰 不知如何解决 页面响应缓慢时 是否感到迷茫 不清楚从何入手排查 面对主机高负载时 是不是觉得确认异常根因很有挑战 本期最佳实践为您讲解如何通过控制台排查定位 页面报错时 获取traceId确认报错组件
  • 【学习笔记】机器学习——GAN

    提出于2014年 GAN由两个神经网络组成 一个试图生成看起来与训练数据相似数据的 生成器 以及一个试图从虚假数据中分辨出真实数据的 判别器 生成器和判别器在训练期间相互竞争 对抗训练 训练竞争性网络 是一种重要的机器学习思想 生成器 G
  • CVE-2016-2510&CVE-2017-5586 BeanShell漏洞

    前言 首先我们需要了解BeanShell具体是做什么 BeanShell 是一种轻量级的可嵌入式脚本语言 用于在 Java 环境中执行脚本代码 它提供了一种简单 灵活的方式来扩展和定制 Java 应用程序的行为 允许开发人员动态地执行和评估
  • 2024年十大值得关注的编程语言

    探索2024年最有影响力的编程语言 Python的多功能无与伦比 JavaScript在Web领域的统治地位 Rust的高效性 等等 通过实际操作示例 发现适合您编程之旅的最佳选择 在技术世界不断变化的沙漂中导航是一段令人兴奋的旅程 充满了
  • react之封装有无Token(路由权限控制)的高阶组件

    TOC 前景 有些路由页面内的内容信息比较敏感 如果用户没有经过登录获取到有效Token 是没有权限跳转的 根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1 在 components 目录中 创建 A
  • Comparator接口

    Comparator接口 Comparator 是 Java 中用于比较对象的接口 它允许开发者实现自定义的比较逻辑 以用于对对象进行排序或者确定它们的顺序 主要方法 Comparator 接口中包含一个抽象方法 int compare T
  • MN316 OpenCPU丨HTTP使用介绍

    HTTP Hyper Text Transfer Protocol 即超文本传输协议 是一个简单的请求 响应协议 通常运行在 TCP 之上 它指定了客户端可能发送给服务器消息类型以及得到什么类型响应 HTTPS Hyper Text Tra
  • docker 内查看文件时间 docker动态查看日志最后100行

    ls all docker动态查看日志最后100行 docker logs f t tail 1 chat2db docker logs OPTIONS CONTAINER Options details 显示更多的信息 f follow
  • Android 14 CarAudioService

    文章目录 新功能 AudioMirring oemCarService 新功能 AudioMirring 简单的说就是两个bus输出的是同一个音频数据 构建的流程是 一个输入src的bus 和两个输出dst的bus 通过setParamte
  • Pytest框架 — 11.Fixture装饰器的使用(一)

    1 Fixture装饰器的用途 做测试前后的初始化设置 如测试数据准备 链接数据库 打开浏览器等这些操作都可以使用Fixture来实现 测试用例的前置条件可以使用Fixture实现 比直接使用Pytest框架的 setup 和 teardo
  • 2024最新版软件测试八股文(文档)

    前言 第一个就刷掉一大批人 有很多 会自动化 的同学来咨询技术问题 他总会问到我一些 元素定位 的问题 元素定位其实都不算自动化面试的问题 一般我都会问 你是定位不到吗 通常结果都是说确实定位不到 做自动化 首先你得保证一点 没有你定位不到
  • 如何成为一名合格的班主任

    班主任不仅需要管理学生的学习和生活 还需要与家长 科任老师等多方进行沟通 那么 如何成为一名合格的班主任呢 责任心是关键 作为一名班主任 责任心是成功的关键 要尽心尽力地关心每一个学生的学习和生活 及时发现并解决问题 还要与家长保持密切联系
  • 软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换

    引言 数据类型转换是指将一种数据类型的值转换为另一种数据类型的过程 在编程中 我们经常需要处理不同类型的数据 正确地进行类型转换是编写健壮程序的关键 常见的数据类型转换 整数和浮点数转换为字符串 示例代码 num int 10 num fl
  • 【论文阅读】【三维场景特殊点云分割】OpenMask3D:Open-Vocabulary 3D Instance Segmentation

    前言 NeurIPS2023 OpenMask3D Open Vocabulary 3D Instance Segmentation 论文地址 https openmask3d github io static pdf openmask3d
  • 4. 统计描述和基线表格绘制

    目录 1 连续型变量统计描述 单变量统计描述 1 summary函数 2 psych包中的describe 函数 3 Hmisc包中的describe 函数 4 pastecs包的stat desc 的函数 分组统计描述 1 doBy包的s