正如 Eppes 博士在电视连续剧 NUMB3RS(数字追凶) 开始所说的那样,数学对现代科学与工程至关重要。就像牛顿所观察到的那样,我们站在巨人的肩膀上:科学与工程相当于一个公共活动,为了实现某个目而创建的工具通常可用于提高其他领域的生产力。
我们也很难用只言片语来概括数字计算机对现代科学与工程的重要性。流程可能从科学的观察和测量方法开始,但分析会紧随其后,并且还需要强大且易用的工具来分析所收集的大量数据。
数学统计原则的主要目的是允许收集和分析数据。统计是一个广泛的类别,涵盖收集、组织、分析、解释和显示数据。
本着为此类数据统计分析制作一个强大工具的想法,贝尔实验室的工程师在 1976 年开发了一种名为 S 的编程语言。随着编程语言 S 能力和知名度的提高,它转变成了 S-Plus,这是由 TIBCO 分发的一个商业软件包。
正如成功的商业工具经常发生的事情一样,GNU 项目制作了 S 的一个开源版本,并将它命名为 R。S-Plus 和 R 的一个主要区别是,R 主要是一个命令行的软件包,而 S-Plus 则提供了图形用户界面 (GUI)。
R 的以下特征使它变得特别有用:
交互式 — 输入命令后可立刻看到结果。 简单 — 从安装并开始使用它的那一刻起,就可以
轻松获得有用的结果。 全面 — R 利用了庞大的统计分析软件库,这些软件库与软件包一起成长。 可扩展 — 可以轻松地创建自己的功能库并与 R 社区共享它们。
R 还提供了各种工具,可使用它们来将数据轻松导入软件包以进行分析。
统计的重要性
统计这门学科可以指导决策制定过程。收集您所感兴趣话题的有意义数据,确定各种统计值,比如有助于制定更好决策的数据约束解决方案所包含的最小值、最大值、众数值、平均值、中间值和标准方差。例如,如果产品所用的材质会因为温度太高而熔化,那么在大规模生产之前应了解这一点。必须确保预计的最高温度远低于所用材质的最低熔点。
统计数据有助于制定更明智的决策
制定明智的决策需要努力工作。无论处于哪个领域,在制定决策之前必须尽职调查。世上没有免费的午餐。例如,如果您的目标是做一个赚钱的投资者(确定具有增长潜力的股票、购买价格和目标卖出价格),那么您必须研究该股票的优势,其中一个重要的特点是它过去的业绩。
找到此类统计数据并不难。可以从您的代理所推荐的来源下载此类统计数据。采用使用电子表格格式或逗号分隔的文本文件下载历史数据,这样可以轻松将此数据输入到 R 中。将数据输入 R 中以后,可以轻松采用几种统计分析工具找到制定明智决策所需的信息。
这同样适用于工程或科学领域。NASA 工程师花费了大量时间来构建原型设备(比如火箭引擎)并测试它们,这样,它们不仅可以提供所需的推力,而且安全性也大幅提高了。选择特定设计肯定是一个明智的决策,这样才不会将资金和人力浪费在发射不久即会爆炸的火箭上。需要分析大量测试数据来引导决策的制定。
统计有助于解释数据
统计分析过程的一部分是解释数据 — 即为数据分配含义并确定该含义的意义。例如,当设计除草剂时,农业科学家会将它们小心地喷洒到隔离的植物种群上,并记录随着时间的推移它们的表现。除草剂背后的理念是在不伤害作物的情况下除去杂草,评估其有效性的一种简单方法是一段固定时间内所除杂草与作物的比率。
收集了此类数据之后,如果没有看到预期的结果,那么数据中的其他线索可能会暗示原因。如果收集到了其他巧合数据,比如每天为植物浇多少水,以及植物的光照时间,那么科学家可能会发现隐藏的模式,找到测试失败的原因。此类隐藏模式可能会非常简单,比如每天浇水不够,无法让除草剂发挥作用。如果没有收集并分析表现数据,就无法分配含义。
统计数据有助于建立贝叶斯推断
在收集更多数据时,可以开始使用贝叶斯推断,这是一种更新假设的概率估计的方法。近年来,随着数字计算机技术的出现,使用新数据更新概率的贝叶斯技术已进入全盛时期。R 是应用贝叶斯推断的理想工具,因为 Comprehensive R Archive Network 中提供了很多应用它的软件包。
统计可以让您挖掘宝藏
R 的交互特性使探索数据的老式批处理方式具有新的灵活性。使用 R,在感到需要探索时,您可以不断地输入构建和显示对象的命令。这种灵活性可以让您在添加到科学知识的数据中找到宝藏。
R 数据类型
现实世界的计算机模型和数学抽象差不多。在 R 会话中建模的系统可以多种不同的数据类型表示。
R 数据类型以命名变量的形式保存,要显示变量的内容或值,只需输入名称即可。R 中的变量是区分大小写的(A 和 a 不同)并且必须是惟一的。启动 R 后,可以输入如清单 1 所示的命令。
清单 1. R 中的命名变量
> a <- 7> a[1] 7> hours_per_day <- 24> days_per_week <- 7> hours_per_week <- hours_per_day * days_per_week> hours_per_week[1] 168
标量和向量
数学是科学的语言,最简单的数学对象是标量,一个表示对象值或大小的数字。在 R 中,使用简单的赋值就可以创建具有标量值的变量。下列命令表示同样的事 — 将 3.14 分配给名为 pi 的变量:
> pi <-- 3.14> 3.14 --> pi> pi = 3.14> pi[1] 3.14
R 手动将 向量 定义为 "由一个对象集合组成的单一实体"。构建向量的 c() 函数看起来是这样的:
> days_per_month <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
此外,可以将名称附加到向量元素中,如下所示:
> names(days_per_month) <- c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")> days_per_monthJan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 31 28 31 30 31 30 31 31 30 31 30 31
请注意,names 向量的输入数据是字符串。向量可以包含 R 提供的任意数据类型集合,包括字符串。