前言

前言

本书介绍探索性数据分析的实用工具,书中章节按照我自己处理数据集时遵循的步骤进行组织。

  • 导入和清洗:无论数据格式如何,我们通常都需要花费一些时间和精力进行数据的读取、清洗和变换,并进行检查,以确保在此过程中信息完好无损。
  • 单变量探索:通常情况下,我会首先逐个检查变量,弄清变量的意义,分析变量值的分布,选择合适的汇总统计量。
  • 成对探索:为了发现变量之间的关系,我会分析表格和散点图,计算相关性并进行线性拟合。
  • 多变量分析:如果变量之间存在明显关系,我就要使用多元回归以增加控制变量,从而研究更复杂的关联关系。
  • 估计和假设检验:在汇报统计结果时,有3个重要问题需要回答。效应规模如何?再次运行同一测量时,预期的变化性有多大?这个明显的效应是否可能是偶然产生的?
  • 可视化:在数据探索中,可视化是寻找可能关系和效应的一个重要工具。如果一个明显的效应是统计显著的,那么可视化可以帮助我们有效地展示结果。

本书采用的是计算方法。相比数学方法,计算方法具有如下优点。

  • 大多数概念用Python代码进行展示,而非数学符号。总体而言,Python代码的可读性更好,而且这些代码是可执行的,读者可以下载、运行并进行修改。
  • 每一章都附有练习,可以帮助读者扩展并巩固知识。编写程序时,你把自己对知识的理解表达为代码;调试代码时,这些理解也可以得到修正。
  • 一些练习使用了实验检验统计行为。例如,你可以通过生成随机样本并计算它们的总和来探索中心极限定理(Central Limit Theorem,CLT)。练习得到的可视化结果展示了CLT的工作原理及适用条件。
  • 一些概念很难从数学角度进行理解,却很容易通过模拟掌握。例如,通过运行随机模拟对 p 值进行近似,可以增强我们对 p 值含义的理解。
  • 由于本书使用通用编程语言(Python),因此读者几乎可以从任何数据源导入数据,而不必受限于使用特定统计工具进行了清洗和格式化的数据集。

本书使用基于项目的方法。在我的课堂上,学生需要完成一个为期一个学期的项目。在项目中,学生要提出一个统计问题,寻找可以解决这个问题的数据集,并将学到的各种技术应用于这个数据集。

为了展示我采用的统计分析方法,本书将介绍一个贯穿各章的案例。这个案例使用的数据来自以下两方面资源。

  • 全国家庭增长调查(National Survey of Family Growth,NSFG),这一调查由美国疾病控制和预防中心(Center for Disease Control and Prevention,CDC)开展,以收集“与家庭生活、婚姻状况、妊娠情况、生育情况、避孕情况,以及两性健康相关的信息”。参见http://cdc.gov/nchs/nsfg.htm
  • 行为危险因素监测系统(Behavioral Risk Factor Surveillance System,BRFSS),由国家慢性病预防和健康促进中心(National Center for Chronic Disease Prevention and Health Promotion)主持,以“跟踪美国的健康状况及风险行为”。参见http://cdc.gov/BRFSS/

其他示例使用的数据来自美国国税局(IRS)、美国人口普查(U.S. Census)及波士顿马拉松赛(Boston Marathon)。

《统计思维》的第2版包含了第1版的各章,但对其中很多内容进行了大幅修改,并新增了关于回归、时间序列分析、生存分析和分析方法的章节。本书第1版没有使用pandas、SciPy和StatsModels,所以这些内容也都是新增的。

写作思路

人们在编写新教材时,通常会参考已有教材。这样做的结果就是,大部分图书都采用相似的结构顺序叙述相似的内容。

我没有这样做。实际上,在撰写本书时出于以下几点考虑,我几乎没有使用任何纸质资料。

  • 我的目的是探索新方法,因此不想过多介绍已有方法。
  • 既然本书的授权是免费的,那么我希望书中所有的内容都不受版权限制。
  • 我的很多读者都无法到提供纸质资料的图书馆去,因此我尽量引用互联网上的免费资源。
  • 一些传统媒体的支持者认为,只使用电子资料是偷懒且不可靠的做法。关于偷懒,他们可能说对了,但是我不认为电子资料不可靠,因此希望对自己的理论进行验证。

我使用最多的资源是维基百科(Wikipedia)。总的来说,我在维基百科上读到的统计资料都很不错(但是我在后续也做了一些小的改动)。本书多处引用了维基百科页面,希望你能通过提供的链接阅读这些资料。很多时候,维基百科页面是本书内容的补充。除去我认为必要的修改,书中使用的术语和符号与维基百科基本一致。另外两个我觉得有用的资源是Wolfram Mathworld和Reddit统计论坛(http://www.reddit.com/r/statistics)。

本书代码

本书使用的代码和数据都可从GitHub(htts://github.com/AllenDoweny/ThinkStats2)下载。Git是一个版本管理系统,可以对项目文件进行跟踪。受Git管理的文件集称为代码库(repository)。GitHub是一项托管服务,可以存储Git代码库,并提供一个便于使用的Web接口。

我的GitHub主页提供以下几种使用代码的方法。

  • 你可以点击Fork按钮,在GitHub上创建该代码库的副本。如果你还没有GitHub账号,就需要创建一个。创建副本之后,你就在GitHub上拥有了自己的代码库,可以跟踪学习本书时编写的代码。之后你可以复制这个代码库,即将文件复制到自己的计算机上。
  • 或者,你也可以复制我的代码库。这一操作不需要GitHub账号,但是你对代码所做的修改无法写回GitHub。
  • 如果你完全不想使用Git,那么可以点击GitHub页面右下角的按钮,下载文件的Zip包。

本书所有代码都无需翻译即可在Python 2和Python 3中直接运行。

编写本书代码时,我使用的是Continuum Analytics的Anaconda,这是一个免费的Python版本,其中带有运行本书代码所需的所有软件包(还有很多其他包)。Anaconda很容易安装。默认情况下,Anaconda进行用户级而非系统级安装,因此不需要管理员权限。Anaconda同时支持Python 2和Python 3,你可以从Continuum(http://continuum.io/downloads)进行下载。

如果你不想使用Anaconda,那么需要安装以下软件包。

虽然这些都是常用软件包,但并不是所有的Python安装都包含这些包,而且在有些环境下很难进行安装。如果你无法安装这些包,我强烈建议你使用Anaconda,或者包含这些包的其他Python版本。

当你复制完代码库或者将Zip包解压后,会得到一个名为ThinkStats2/code的文件夹,其中有一个nsfg.py文件。运行nsfg.py会读取一个数据文件,运行一些测试,并输出一条消息,如“All tests passed”。如果你得到的是import error,可能是因为缺少某些必要的软件包。

本书的大部分练习都使用Python脚本,但也有一些使用IPython记事本。如果你之前没有用过IPython记事本,可以访问文档http://ipython.org/ipython-doc/stable/notebook/notebook.html得到帮助。

本书读者应该熟悉Python的核心功能,包括面向对象的特征,但无需具备pandas、NumPy和SciPy知识。如果你已经熟知这些模块,可以跳过一些相关小节。

本书读者应该了解基本的数学知识,例如对数和求和。本书中有几处会涉及微积分概念,但你无需进行微积分运算。

如果你从未学习过统计学,本书会是一本很好的入门教材。如果你学习过传统的统计学课程,那么我希望本书能够修正你过去接受的一些错误观点。

Allen B. Downey是一位计算机科学教授,执教于美国马萨诸塞州尼德姆的富兰克林欧林工程学院。

致谢

如果你有任何建议或者更正,请发送电子邮件至downey@allendowney.com。如果我采纳了你的意见并对书中内容进行了修改,会将你的名字会加入致谢列表(除非你拒绝这样做)。

请在邮件中给出存在错误的句子,或句子的一部分,以便我进行搜索。当然,提供页码和章节号也可以,但还是以句子内容为佳。谢谢!

  • Lisa Downey和June Downey阅读了本书初稿,作出了很多更正,也提出了很多建议。
  • Steven Zhang发现了数处错误。
  • Andy Pethan和Molly Farison帮助调试了一些解决方案,Molly还发现了数处拼写错误。
  • Andrew Heine发现了error函数中的一个错误。
  • Dr. Nikolas Akerblom知道一只始祖马有多大。
  • Alex Morrow对一个代码示例进行了说明。
  • Jonathan Street在关键时刻发现了一个错误。
  • Gábor Lipták发现了本书的一处拼写错误及接力赛问题的解决方案。
  • 非常感谢Kevin Smith和Tim Arnold设计了plasTeX,让我可以将本书转为DocBook。
  • George Caplan的建议使本书结构更加清晰。
  • Julian Ceipek发现了一处错误和很多拼写错误。
  • Stijn Debrouwere、Leo Marihart III、Jonathan Hammler和Kent Johnson更正了本书第1印次中的错误。
  • Dan Kearney发现了一处拼写错误。
  • Jeff Pickhardt发现了一个损坏的链接和一处拼写错误。
  • Jörg Beyer发现了书中的拼写错误,并对书中代码的帮助文档进行了许多修正。
  • Tommie Gannert发送了一个补丁文件,其中包括许多更正。
  • Alexander Gryzlov对一个练习中的说明提出了建议。
  • Martin Veillette报告了一个Pearson相关性公式中的一处错误。
  • Christoph Lendenmannt提交了数个勘误。
  • Haitao Ma发现了一处拼写错误,并告诉了我。
  • Michael Kearney提出了很多极佳的建议。
  • Alex Birch提出了一些很有益的建议。
  • Lindsey Vanderlyn、Griffin Tschurwald和Ben Small阅读了本书的早期版本,并发现了很多错误。
  • John Roth、Carol Willing和Carol Novitsky进行了技术审阅,发现了很多错误,并提出了许多有益的建议。
  • Rohit Deshpande发现了一处排版错误。
  • David Palmer提出了很多建议,作出了不少更正。
  • Erik Kulyk发现了很多拼写错误。

Safari® Books Online

Safari Books Online是应需而变的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。

Safari Books Online是技术专家、软件开发人员、Web设计师、商务人士和创意人士开展调研、解决问题、学习和认证培训的首选资料。

对于组织团体、政府机构和个人,Safari Books Online提供各种产品组合和灵活的定价策略。

成为Safari Books Online的会员,你即可通过一个功能完备的数据库检索系统访问O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBMRedbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解Safari Books Online的更多信息,请访问我们的网站(http://www.safaribooksonline.com)。

联系我们

请把对本书的评价和问题发给出版社。

美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472

中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司

O'Reilly的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:
http://bit.ly/think_stats_2e

对于本书的评论和技术性问题,请发送电子邮件到:
bookquestions@oreilly.com。

要了解更多O'Reilly图书、培训课程、会议和新闻的信息,请访问以下网站:
http://www.oreilly.com

我们在Facebook的地址如下: http://facebook.com/oreilly

请关注我们的Twitter动态: http://twitter.com/oreillymedia

我们的YouTube视频地址如下: http://www.youtube.com/oreillymedia

目录