bruceR: Broadly Useful Convenient and Efficient R Functions
本文既是对bruceR包的整体介绍,也可以作为R语言快速入门的参考资料。
👩💻
1 / bruceR安装说明
2021年3月19日,bruceR正式被“R语言程序包官方仓库CRAN”收录,成为了17346个被CRAN官方收录的R包中的一员![1]
这也意味着,从此可以使用install.packages("bruceR")来安装了!
用过老版本bruceR的朋友都有体会:若从GitHub安装,非常耗时间,过程也非常坎坷。现在,bruceR大大缩减了依赖包的数量,并且有了CRAN官方收录,安装会变得更容易!
安装方法
## 方法1:从CRAN平台安装(正式版)
install.packages("bruceR")
## 方法2:从GitHub平台安装(开发版)
install.packages("devtools")
devtools::install_github("psychbruce/bruceR", force=TRUE, upgrade=FALSE)
两者有什么不同呢?
「CRAN正式版」安装过程会更快速、更顺畅(尤其对于国内用户)
「GitHub开发版」则会保持最新状态,会有更及时的bug修复和新功能尝鲜
你也可以通过RStudio的窗口界面来安装补充说明(针对所有R包,不只是bruceR):
99%的用户都能正常安装。如果你真的无法安装,请参考下面的建议做好必要的准备工作。
安装任何R包前,建议重启RStudio(一般使用RStudio而不是R本身作为代码编辑器)。
安装任何R包时,如果你看到一个对话框问“Do you want to install from sources the package which needs compilation?”,建议选择“No”,这会大大节省你的时间。
万一安装过程中出现bug而导致安装失败,99%的可能性是安装其他R包出现了问题(另外1%是网络问题)。这时不要抱怨、不要心急,而是仔细阅读报错信息,从中找出是哪个包的问题,然后手动处理那个包(包括手动卸载和重装),最后重试安装。
对于任何R包的安装,建议把R语言升级到最新版本(v4.0及以上)。另外需要说明的是,bruceR包也是在最新版本的R和RStudio环境下开发的。
对于任何R包的安装,建议Windows用户把Rtools.exe(编译工具而不是R包)也装上。
2 / bruceR设计理念与功能介绍
BRoadlyUsefulConvenient andEfficientRfunctions thatBRingUsersConcise andElegantRdata analyses.
核心理念:解放劳动力,提高生产力。
理念1:常用包的配备管理
理念2:高效率的数据分析
【理念1】常用包的配备管理
bruceR包依赖于其他20多个重要R包,也会自动安装一系列常用R包。安装成功后,当你通过library(bruceR)载入时,同时被载入到编程环境的R包还有:
数据处理类:rio / dplyr / tidyr / stringr / forcats / data.table
统计分析类:psych / emmeans / effectsize / performance
图表绘制类:ggplot2 / cowplot / see
只需要加载一个bruceR,就能一次性加载这些常用R包。当然,每个包的用法还需自行学习掌握,可以查阅每个包的帮助文档或搜索网络上的相关教程。
其中,我个人强烈推荐掌握的是data.table包,可参阅:R语言必学之「data.table」学习资源合集。另外,dplyr、stringr、ggplot2也是必学必会的基础包。
「data.table」:https://zhuanlan.zhihu.com/p/346366577
bruceR包(v0.6.0)载入时的欢迎语[Data] 数据处理类R包
rio:一站式导入/导出几乎所有格式数据(使用import()/export()函数)
dplyr:数据的各种操作处理(如分组、拼接、汇总;但更推荐data.table)
tidyr:数据的各种清理转换(如宽数据转换为长数据)
stringr:字符串处理(基于正则表达式)
forcats:分类/因子型变量处理(如因子水平的排序、标签更改)
data.table:全方位、高性能、极简化的数据框格式及其处理
[Stat] 统计分析类R包
psych:心理学研究与心理测量的相关函数工具包
emmeans:估计边际均值、简单效应检验、事后多重比较
effectsize:统计量-效应量转换、不同效应量之间的相互转换
performance:统计模型诊断、模型拟合指标计算
[Plot] 图表绘制类R包
ggplot2:一个包能顶R半边天的必学必会作图工具箱
cowplot:ggplot2拓展工具箱(多图合并、图层叠加、添加标签等)
see:ggplot2拓展工具箱(更丰富更美观的主题配色方案)
此外,bruceR会自动安装但并不默认载入的其他重要R包还包括:pacman(R包管理)、lmerTest(线性混合模型/多层线性模型)、mediation(中介效应分析)、interactions(简单斜率分析)、lavaan(结构方程建模)等。
【理念2】高效率的数据分析
R包的配备与管理只是提高效率的一个起点。
bruceR最重要的贡献,当然还是在于开发/改造出来的一系列R函数。
总的来说,bruceR设计或改良的R函数涵盖6个方面:
基础功能与分析
量表计算与分析
多因素方差分析(包括简单效应检验和多重比较)
多类型回归分析(包括模型结果的完整汇总报告)
高级统计工具箱(包括某些统计结果报告的优化)
作图辅助工具箱
下面对几个常用函数进行简要的功能介绍,详细内容还请通过help(函数名)或?函数名的方式查看帮助文档,里面均有对参数用法的说明,并提供了简单的例子。
1. 基础功能与分析
set.wd():将R工作路径设置到当前文件所在路径【注:需要安装RStudio的最新版本(version ≥ 1.4.843),否则无法正常使用】。
Print()/Glue():是内置函数print()/cat()/paste()/sprintf()的高级替代品,可以输出有颜色、有格式的文字(比如欢迎语呈现的那样)或根据变量的值动态输出不同文字。
Describe():描述统计,指标丰富,还可以在一张图中同时绘制单变量分布密度图、变量间散点图、变量间相关系数及显著性(可保存为高清晰度图片)。
Freq():频次和频率统计,可根据要求进行升/降排序。
Corr():相关分析,比Describe()提供了更多指标,包括相关系数的p值和95% CI,也有一个风格不同的相关系数矩阵图(可保存为高清晰度图片)。
LOOKUP() :查找、匹配、拼接两个数据的变量,名称致敬了Excel的“VLOOKUP”,作用相当于Excel的“INDEX + MATCH”组合函数。
2. 量表计算与分析
RECODE()/RESCALE():变量重新编码或转换取值范围。
MEAN()/SUM()/COUNT()/MODE()/STD()/CONSEC():一行简短代码解决各种多变量的“横向计算”问题(一般是某个量表多道题目的平均分或总分),极简化实现反向计分(无需额外生成新变量)。
Alpha():量表信度分析,同样是极简化实现反向计分(无需额外生成新变量),调用了jmv::reliability()函数。
EFA():探索性因素分析,调用了jmv::efa()函数。
CFA():验证性因素分析,调用了jmv::cfa()和lavaan::cfa()函数。
3. 多因素方差分析
MANOVA():单因素/多因素的被试间/被试内/混合设计方差分析ANOVA及协方差分析ANCOVA;直接提供效应量partial η²及其90% CI(该函数仅输出结果到R Console,因为一般情况下我们不会在论文中直接呈现方差分析表,如有需要,可以使用apaTables包)。
EMMEANS():简单效应检验(包括简单主效应、简单交互作用、简单简单效应等)、事后多重比较(各种比较方法与p值校正方法)、简单效应基础之上的多重比较,直接提供效应量Cohen's d及其95% CI。
4. 多类型回归分析
grand_mean_center()/group_mean_center():变量的总中心化、组中心化处理,可选择是否标准化、是否存为新的变量、是否顺便返回组均值。
regress()/GLM_summary()/HLM_summary():一般线性模型/广义线性模型/线性混合模型/广义线性混合模型的丰富结果报告(仅输出到R Console)。
model_summary():几乎所有类型回归模型的APA格式输出(可输出到R Console、Word文档、HTML文档等);支持多个模型的组合报告,表格整洁美观,一行代码直接帮你把论文结果表格整理好,复制粘贴即可,不用再手抄数据,甚至不需要手动把负号“-”改成“–”,因为都已经改好了(该函数调用并改进了texreg包的相关函数)。
5. 高级统计工具箱
med_summary():对于使用mediation包做的中介效应分析(包括普通的中介模型、有调节的中介模型、HLM中介模型等),改进了结果的呈现。
ccf_plot():时间序列数据的交叉相关分析(cross-correlation analysis),由于stats::ccf()只能画R base风格的图,难以调整图的细节和样式;该函数使用了ggplot2包来绘制交叉相关结果图,可供进一步调整,并方便保存为高清晰度图片。
granger_test():时间序列数据的格兰杰因果检验(Granger causality test),为同时分析多个时间滞后项提供更方便的分析命令和汇总的结果报告,并附以模型说明。
6. 作图辅助工具箱
theme_bruce():简单、大方、美观的ggplot2主题方案,提供多种参数设置。
最常用的函数有:
set.wd()/Describe()/Freq()/Corr()/Alpha()/MEAN()
MANOVA()/EMMEANS()/model_summary()/theme_bruce()
⚠ NEWS:最近更新的0.6.0版本对已有函数进行了不同程度的优化和改进,并弃用了某些不实用、非必要、有偏误的函数。
3 / 一套完整的例子
R代码:
#### Title ####表示一个代码块(可使用快捷键“Ctrl + Alt + T”单独运行)
R代码中的赋值都可以用=号(完全不必用<-号)
#### (1) 数据导入 ####
install.packages("bruceR")
library(bruceR)
set.wd()# 设置工作路径到当前文件所在路径(需安装1.4.843版本以上的RStudio)
# 通过rio::import()可以轻松导入任何格式的数据
# 这里只是一个示例,并无此Excel文件,可替换为你的数据
# data=import("BFI Personality.xlsx", setclass="data.table")
# 我们使用psych包里的“大五人格测验”数据(bfi)作为演示
?psych::bfi# 查看该数据的帮助文档
data=as.data.table(psych::bfi)# 转换为data.table格式
str(data)# 查看变量
glimpse(data)# 查看变量(另一种方式)
#### (2) 量表计算 ####
# 维度平均分(包括反向计分题)
# E = 外倾性,A = 宜人性,C = 尽责性,N = 神经质,O = 开放性
data[,`:=`(
Big5.E=MEAN(data,"E",1:5, rev=c(1,2), likert=1:6),
Big5.A=MEAN(data,"A",1:5, rev=1, likert=1:6),
Big5.C=MEAN(data,"C",1:5, rev=c(4,5), likert=1:6),
Big5.N=MEAN(data,"N",1:5, likert=1:6),
Big5.O=MEAN(data,"O",1:5, rev=c(2,5), likert=1:6)
)]
# 内部一致性信度
Alpha(data,"E",1:5, rev=c(1,2))
Alpha(data,"A",1:5, rev=1)
Alpha(data,"C",1:5, rev=c(4,5))
Alpha(data,"N",1:5)
Alpha(data,"O",1:5, rev=c(2,5))
#### (3) 描述统计 ####
d=data[,.(gender, age, education, Big5.E, Big5.A, Big5.C, Big5.N, Big5.O)]
Describe(d, plot=TRUE)
Corr(d)
#### (4) 方差分析 ####
# 两因素被试间设计ANOVA
#(也可以添加多个协变量)
MANOVA(na.omit(d), dv="Big5.E", between=c("gender","education"))
# 简单效应检验与事后配对比较
#(也可以设置不同的对比方式)
MANOVA(na.omit(d), dv="Big5.E", between=c("gender","education"))%>%
EMMEANS("gender", by="education")
#### (5) 回归分析 ####
lm1=lm(Big5.O~Big5.E, data=d)
lm2=lm(Big5.O~Big5.E+Big5.A+Big5.C+Big5.N+gender+education, data=d)
GLM_summary(lm1)
GLM_summary(lm2)
model_summary(list(lm1, lm2), std=TRUE)
model_summary(list(lm1, lm2), std=TRUE, file="Big5.doc")
#### (6) 中介分析 ####
# 将所有变量标准化处理(中心化的基础上进一步标准化)
d.std=grand_mean_center(na.omit(d), vars=names(d), std=TRUE)
# 建立中介变量模型和因变量模型
lm.m=lm(education~age+gender, data=d.std)
lm.y=lm(Big5.O~education+age+gender, data=d.std)
model_summary(list(lm.m, lm.y), std=TRUE)
# 使用mediation包做中介分析
# 查看mediate函数的帮助文档
?mediation::mediate
# (1) Monte Carlo方法
set.seed(123)# 设置一个随机种子以重复随机结果
med.model=mediation::mediate(
lm.m, lm.y,
treat="age", mediator="education",
sims=1000)
med_summary(med.model)
# (2) Bootstrap方法
set.seed(123)# 设置一个随机种子以重复随机结果
med.model=mediation::mediate(
lm.m, lm.y,
treat="age", mediator="education",
sims=1000, boot=TRUE, boot.ci.type="bca")
med_summary(med.model)
部分输出结果:
查看数据结构 量表信度分析(α系数、校正后的题总相关、题目删除后的α系数) 描述统计 描述统计(变量分布与相关图 - Describe函数)描述统计(变量相关图 - Corr函数)
方差分析 简单效应检验 简单效应检验基础上的事后配对比较 回归分析(GLM_summary输出至Console) 回归分析(model_summary输出至Console) 回归分析(model_summary输出至Word) 中介效应检验(Bootstrap方法)4 / 局限与展望
bruceR目前仍只是0.6.0版。在1.0.0版发布之前,必然有许多值得改进的地方。
而且,开发者是心理学专业的,在功能设计方面肯定会倾向于社会科学的数据分析方法,无法覆盖自然科学、工程技术等领域。
不过,只要是“广泛有用、方便高效”的R函数(BRoadlyUsefulConvenient andEfficientRfunctions),bruceR都可以尝试开发或改进。
欢迎各位安装使用,恳请提出宝贵意见!
谢谢!
参考:Bao, H.-W.-S. (2021). bruceR: Broadly useful convenient and efficient R functions. R package version 0.6.0. https://CRAN.R-project.org/package=bruceR
排版:shirly
作者:包寒吴霜
校对:喵君姐姐
网友评论