前言
随着计算机与信息技术的发展,互联网、大数据、人工智能等现代信息技术不断实现突破,逐渐渗透到人类生产生活的各个领域,以前所未有的方式将人们带入一场剧烈的信息变革之中。随着社会信息化程度的日益加深,医疗行业数据系统的信息容量也在不断扩大,高效地挖掘和利用这些宝贵的医学信息资源,为疾病的预防、诊断和治疗提供科学的决策依据,促进医学研究的进一步发展,具有非常重要的意义。与此同时,数据数量与日俱增,数据质量参差不齐,这使得医疗工作者和科研人员的工作难度不断加大,对专业技术水平、数据分析方法和团队科研协作都提出了更高的要求。
面对日渐复杂的大数据,科学工作者很难用单一的统计软件高效、完美地完成从数据挖掘、数据清洗、统计分析到结果呈现的全部工作,因此需要熟悉和掌握多种统计工具,各取所长、整合使用。例如,SAS作为一个成熟度高、稳定性强的商业化系统,有强大的大数据管理及清洗的功能,在公司和企业中的应用非常广泛,但是它在对大数据(如健康注册系统)进行某些统计分析时,运行速度较慢。相对而言,Stata、R语言和Python却可以非常快速地完成同样的运算程序。此外,Stata是对初学者非常友好的软件,命令简单,运行速度快,是非常出色的统计软件;R语言有极其灵活和强大的绘图能力,可以更好地表现数据结果,大大提升数据分析的效率;Python以语言简单、分析高效而著称,尤其在机器学习、文本处理等领域表现突出。因此,如果能掌握几种统计软件的使用方法,并且能够根据具体研究目的自由切换不同的统计软件,则可以达到事半功倍的效果。
此外,大规模的项目通常需要跨单位、跨学科合作,科研团队的国际化、多元化的趋势越来越明显。每个研究人员的背景不同,擅长的领域或使用的统计软件也大相径庭。为了更好地进行学术交流,促进彼此之间的合作,完成复杂的研究项目,熟悉和掌握多种统计软件的基本操作就显得非常重要。但是,学习任何一门技术都需要投入大量的时间和精力,若想同时掌握多种统计软件的使用方法,需要付出更多的时间和努力。幸运的是,SAS、R语言、Stata和Python等软件的数学和统计学基础是相通的,主要区别在于它们采用不同的语言环境和编程方法。如果读者已经掌握其中任何一个软件的操作和使用方法,再去学习其他3种软件,则会触类旁通,大大提高学习效率。但是,目前还没有相关的书籍介绍如何将SAS、R语言、Stata和Python这4种常用的统计软件整合起来,用于大数据的管理和分析。
目前,市面上单独介绍SAS、R语言、Stata和Python等统计软件的书籍大多面面俱到地讲解每个命令、每个选项、每个模块,针对一种统计方法提供尽可能多的解决方案。的确,这样可以帮助读者全面、具体地了解各个软件,但同时也可能使读者花费很多时间学习了大量不实用的知识。此外,大多数介绍统计软件的书籍往往止步于如何进行统计分析,而常常忽略了如何高效、准确地提取主要结果,如何生成可直接用于报告、交流或达到SCI发表要求的表格等方面。
因此,本书立足于大数据研究的现状,首先介绍必须掌握的数学和统计学基础知识;其次,根据真实的电子病历及健康注册系统的数据特征,模拟出与其复杂程度和处理难度相当的模拟数据库;最后,针对同一研究问题,在SAS、R语言、Stata和Python中进行同步处理,详细讲解如何在这4个统计软件中实现从数据导入、数据清洗、统计分析、结果整理输出(表格或图)到结果解释的全部过程,从而可完成软件的对比学习,达到事半功倍的效果。以上3点也是本书的特色所在。
本书着眼于真实的医学领域的数据处理问题,主要介绍在4个软件中最常用、最高效的命令及编程方法,使数据工作者能够在短时间内掌握每个软件的精髓,并且能够学以致用,切实应用到自己的研究项目中,解决相关问题。但本书不会过多地涉及诸如模型的比较和选择等问题,因为这类问题通常是由研究课题或项目决定的,不存在“放之四海而皆准”的准则。对这类问题感兴趣的读者,请查阅相关书籍或文章。
本书可分为3部分: 第1部分包括第1、2章,介绍数学基础知识和统计学基础知识;第2部分包括第3~7章,在概要介绍统计软件基础知识之后,分别介绍SAS、R语言、Stata和Python的基础编程知识;第3部分包括第8~12章,在概要说明本书软件实践的几个重要问题之后,分别介绍SAS、R语言、Stata和Python的实践内容。读者可根据自己的兴趣和时间自行选择相应的章节学习。建议读者在阅读某软件的基础编程知识和实践操作前,先阅读第3章和第8章,从而了解本书的布局。
本书主要面向在校本科生、研究生,以及要掌握SAS、R语言、Stata和Python的数据工作者,熟悉4种软件的任意一种且想要在短时间内掌握其他软件的读者,尤其适合医科学生、临床医生或药企人员等医疗相关人员学习使用。
笔者自2014年萌生编写本书的想法,2017年动笔,2019年组建编写团队,到2020年春完成初稿,其间曾多次产生放弃的念头,幸好坚持了下来。笔者一直坚信“二八定律”,即学习并掌握一个软件的20%的基础知识,将能使用户理解80%的软件功能,从而能顺利完成80%的工作任务。尽管本书介绍的诸多方法看起来很容易理解和掌握,但要想真正用好这些软件,仍需读者仔细钻研、刻苦练习。不过这些努力是值得付出的,假以时日,所有努力都会带来丰厚的回报。
感谢Fang Fang教授、Yudi Pawitan教授给予笔者的大力支持;感谢邓文江同学在R语言部分的付出;感谢编写团队成员在整个过程中的坚持和付出,从而使本书得以完成;最后,感谢清华大学出版社编辑给予本书的帮助和指导,从而使本书得以顺利出版。书中难免存在疏漏和不足之处,恳请读者不吝赐教,笔者将感激不尽。
孙江伟
2021年4月