「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

统计分析 S 语言的优点和发展背景

2013 年 10 月 17 日

S 语言是由贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。它的丰富的数据类型,特别有利于实现新的统计算法,其交互式运行方式及强大的图形及交互图形功能使得我们可以方便的探索数据。资深分析师 Catherine 最近撰文详细介绍了S 语言的优点和背后的发展历史。

Catherine 首先分析了 S 语言诞生之前的统计分析状况:

计算机总是善于计算方面的工作。当然,前提是你已经写完并且把一个程序调试到能够实现你所想要的算法。但是在 20 世纪 60 年代和 70 年代,计算机在现实数据方面表现很差劲,尤其是在图像显示方面。由于这些技术的限制加上在统计理论的发展趋势,人们不得不把统计实践以及对统计人员的训练集中于建模和假设性的测试上。在这种假设的环境下,研究者先建立精心设计的实验(在农业技术站),之后猜想假设(通常是农业)适合模型,然后再运行测试用例,进行验证。像 SPSS 这种基于电子表格菜单驱动式程序反映了这种做法。事实上,SPSS 和 SAS Analytics 的第一个版本由可以从一个程序(Fortran 或者其他)调用的子程序组成,进而可以安装和测试模型的工具箱。

John Tukey 抛弃了探索性数据分析(EDA)的概念,这就像一块巨石穿过一个玻璃屋顶,进入形式化和理论支撑的框架中。如今,很难想象当初对数据集的分析居然可以不用箱线图来检查偏差和异常,或者不用通过与分位数图对比来检查一个线性模型的残差的常态。这些想法都源自 Tukey,如果没有他们,就不会有今天统计学的入门课程。当然也并不总是这样。

关于 EDA(探索性数据分析),Catherine 认为这不仅仅是一种方法更是一种理论。这种方法的关键是遵循以下的几条经验法则:

  • 在可能的情况下,用图形来辨别感兴趣的功能。
  • 分析是递增的。即尝试一种模式,然后再基于这种模式的基础上适应另一种模式。
  • 使用图形检查模型假设。在出现异常的地方,做出备注。
  • 使用稳健的方法,以防止偏离分布假设。

Tukey 的方法掀起了一股使用新的图形化方法和稳定性估计进行开发的潮流。这也同时激发了一个新的软件开发框架的发展,并且这种软件框架比探索方法更具有适用性。

S 语言是由约翰·钱伯斯和他的同事在贝尔实验室开发的, 最初把它作为一个个平台,进行统计分析,尤其是杜克排序。S 语言的第一版是在 1976 年开发的,最初它仅仅被用于实验室内部。但是知道 1988 年,S 语言遇到了类似如今格式的一些事情。这时,S 语言依然对贝尔实验室以外的的用户可用。这门语言的每一个方面都适合“新模式”的数据分析:

  • S 语言与编程环境共同运作,是一种解释型语言。S 的语法很类似 C,但是 S 语言存在一些小困难。例如,S 具有的内存管理和变量声明的功能,因此用户不必编写或调试这些东西。S 语言的编程开销较低,这使得数据集的分析可以更快速的在更短的时间内完成。
  • 从 S 诞生之初,S 允许创建高级图形,你可以向任何打开的图形窗口添加功能。你可以很容易地突出感兴趣的点,查询这些点的价值,添加平滑散点图等。
  • 直到 1992 年面向对象特性才被加入到 S 中的。在编程语言中,对象通过构建数据和函数来满足用户的要求。人的思想总是面向对象的,统计推理,尤其是如此。统计人员经常与频率表、时间序列、矩阵、不同的数据类型、模型打交道。在任何情况下,原始数据被赋予属性和期望:例如,时间序列由观测数据和时间点组成。对于每一种数据类型,标准的统计和描述是必须的。对于一个时间序列,我可能会做一个时间序列图和相关图,对于一个拟合模型,我可能会绘制拟合度和残差。对于所有这些概念,S 都可以创建相应的对象,并且你可以创建多个你想要的对象。对象使得从问题的概念到问题的代码实现变得非常简单。

Catherine 指出:

原来的 S 语言严格遵循杜克的 EDA,以至于到达了在 S 语言中只能做 EDA 相关的事情,否则其他事情用 S 做起来都很笨拙的程度。这是一门有态度的语言。例如,虽然 S 附带一些有用的内部功能,它缺乏一些最明显的特征功能而你期望统计软件来来拥有这些功能。现在还没有任何一种能够处理两个样本或者实际假设性检测的功能。但尽管如此,假设检验有时候是一件正确的事情。1988 年,总部位于西雅图的 Statistical Science 注册了 S 的许可证,并把 S 语言的增强版本,S-PLUS,移植到 DOS 和后来的 Windows®上。实事求是地了解客户想要什么,Statistical Science 把经典统计的功能添加到 S-PLUS 中。方差分析(ANOVA),t 检验,和其他模型等功能被添加到其中。S 语言面向对象的本质就是:任何的拟合模型的结果本身就是一个 S 对象。适当的函数调用提供配合,残差,和假设检验的 P 值。模型对象,甚至可以包含中间计算分析步骤,如设计矩阵的 QR 分解。

在 11 月 1 日开幕的 QCon 全球企业开发大会(上海站),参与者将有机会聆听与统计分析相关的专题讲师的经验分享:

  • 大数据应用 从大数据创业公司和互联网公司的创新数据产品角度来了解大数据的最新应用。
  • 大数据处理技术 关注大数据处理和分析的最新技术和工具以及未来的技术走向。
  • 推荐系统 探讨推荐系统的系统、架构、算法和策略,分享各大公司在应用推荐系统时的工程技术和实战经验。
2013 年 10 月 17 日 09:241459
用户头像

发布了 501 篇内容, 共 218.7 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

iTerm2 实现 ssh 自动登录,并使用 Zmodem 实现快速传输文件

米开朗基杨

iterm2

简化业务代码开发:看Lambda表达式如何将代码封装为数据

华为云开发者社区

函数式接口 数据 代码 函数 lambad

QA为什么转换角色

BY林子

软件测试 QA 职业发展

redis持久化怎么选?成年人从来不做选择...

moon聊技术

惊喜来袭!253页全彩免费电子书《Python 编程参考》正式上线发布

穿甲兵技术社区负责人

Python go redis 程序设计

案例加源码:万字长文带你彻底搞懂MySQL的索引优化

程序员小毕

MySQL sql 源码 性能优化 索引

是找茬?还是装B?阿里面试每轮必问的“Spring Boot”意义何在?

比伯

Java 编程 架构 面试 计算机

作业1

瑾瑾呀

我所认为的产品经理能力模型

day day up

使用Apollo升级一下yml文件管理和发布

Sky彬

springboo

WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba

阿里云视频云

WebRTC

【有奖调研】中国人工智能开发者调研

百度大脑

合约跟单交易软件系统开发|合约跟单交易APP开发

开發I852946OIIO

系统开发

阿里架构师深入讲解Android开发!教你一种更清晰的Android架构!BAT大厂面试总结

欢喜学安卓

android 程序员 面试 移动开发

TarsBenchmark | 服务性能压测利器

TARS基金会

微服务 压力测试 TARS

架构师 3 期 3 班 -week8- 作业

zbest

作业 week8

阿里巴巴2021年最新开源十亿级Java高并发系统设计手册

Java架构追梦

Java 阿里巴巴 架构 并发 系统架构设计手册

架构师系列 14 PageRank算法

桃花原记

《2020年微信视频号研究报告》 | 视频号 28 天 (11)

赵新龙

28天写作

IM即时通讯实现的原理

v16629866266

COCO聊天挖矿系统开发|COCO聊天挖矿软件APP开发

开發I852946OIIO

系统开发

2020中国ToB独角兽:估值逆势起飞,寡头效应加剧

ToB行业头条

iOS音视频--视频合集

程序员 音视频 OpenGL ES GPUImage Metal

Elastic search 单节点、两节点、三节点环境

escray

elasticsearch elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

SpringCloud 从入门到精通 11---Nacos负载均衡

Felix

Java 程序经验小结:返回零长度的数组或集合,而不是null

后台技术汇

28天写作

《我想进大厂》之分布式事务篇

艾小仙

Java 面试 后端

Soul网关源码阅读番外篇(一) HTTP参数请求错误

Java 源码阅读 网关

热情空前,家长纷纷变身“寒假规划师”,如何抓住这波热潮?

ZEGO即构

AI 在线教育 在线课堂

地下钱庄简单介绍

IT方案内参

大数据 地下钱庄 技战法

阿里架构师经验分享!Android面试知识点总结宝典助你通关!顺利通过阿里Android岗面试

欢喜学安卓

android 程序员 面试 移动开发

统计分析S语言的优点和发展背景-InfoQ