第一部分 项目1:非均匀骰子
计算机让我们得以用过去的科学家望尘莫及的速度收集、处理和可视化数据。简而言之,计算机提供了进行科学研究的超能力。但是,为了充分挖掘和使用这份超能力,你需要掌握一些必要的编程技术。
作为一名熟悉编程的数据科学家,你将提升以下几个方面的能力。
· 记住(存储)整个数据集
· 按需获取数据
· 执行包含大量数据的复杂运算
· 完成重复性任务时不会粗心大意,也不会感到厌烦
计算机在处理这些任务时具有速度优势,并且基本不会出错,因此你可以将时间花在你的大脑更擅长的任务上:决策和思考。
这听起来绝对令人兴奋,不是吗?的确如此!那就让我们开始吧。
上大学时,我偶尔会做白日梦,想着自己能靠学过的一点统计学知识去拉斯维加斯的赌场大赢一把。如果这是你想从事数据科学工作的原因,我劝你还是坐下来先静一静,听我告诉你一个坏消息:即便是统计学家,长期来看在赌场上也占不到便宜。这是因为赌场里每一个游戏的设计都是对赌场有利的。如果想通过赌博长期稳定地赚钱,也有一个空可钻,那就是自己开一家赌场。
不管你信不信,R可以帮助你实现开赌场的梦想。通过阅读和学习本书,你将学会用R做三个虚拟的项目:一对可以用来生成随机数字的骰子,一副可以用来发牌和洗牌的扑克,以及一台模拟真实的视频彩票终端机的老虎机。在完成这三个项目之后,你所要做的就是购置一批显示器,申请一个银行账户(也许还得申请一些必需的行政许可证),然后就可以从事赌场生意了。至于具体如何操作,你就自己搞定吧。
这些项目十分简单,但内涵很深。可以这样说,认认真真地跟着本书完成全部三个项目之后,你将掌握数据科学家所必需的专业技能。具体来说,你将学会如何将数据存储到计算机内存中,如何访问计算机内存中的数据,以及如何在必要的时候对内存中的数据值进行转换。你还将学会如何用R编写自己的程序,并将其用于分析数据和运行模拟。
模拟一台老虎机(或者一对骰子、一副扑克)看似非常无聊,但是不妨换个角度这样想:老虎机其实代表了一个程序。如果你能模拟这样一个程序,也将能模拟其他不同类型的程序,比如自助抽样法的程序、马尔可夫链蒙特卡洛模拟的程序,或者是其他一些与数据分析有关的程序。此外,这三个项目还为学习R编程的所有核心概念提供了实例,这些概念包括对象、数据类型、类、记号体系、函数、环境、if树、循环以及向量化等。第一个项目将教你R编程的基本技能,之后学习接下来的项目就轻松了。
你的第一个任务非常简单:组合一些R程序以模拟赌桌上的一对骰子。之后,为了让这个项目更加有趣,我们会给骰子的不同面分配不同的权重以生成不均匀的骰子。
在这个项目中,你将学到以下技能。
· 使用R和RStudio的用户界面
· 运行R命令
· 创建R对象
· 编写自己的R函数和脚本
· 加载并使用R包
· 生成随机样本
· 快速制图
· 在需要帮助时及时获取帮助
在一个项目中介绍这么多知识点似乎有点急功近利了。其实不然,这个项目的设计初衷就是要带领你大致领略一下R语言。在之后的项目中,我们还会就这些知识点进行更加深入的研究和探讨。
在使用R和RStudio之前,你需要先安装这两个工具。它们都是免费的,你可以在网上轻松地下载安装。附录A中有安装这两个工具的详细教程。如果已经安装好了,那么就打开计算机中的RStudio,准备好进入下一章吧。