本节书摘来自华章计算机《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一书中的第2章,第2.6节,作者:[美] 德博拉·诺兰(Deborah Nolan)  邓肯·坦普·朗(Duncan Temple Lang)  更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.6 对个人跑步时间的变化进行建模

樱花公路赛的结果包含20~80岁的运动员的比赛记录。然而,不会有任何一个运动员的记录满足60年的跨度。由于我们只有14年的比赛记录,所以最多只能观察到一个运动员20~33岁的记录,或者一个80岁的运动员从他67岁之后的记录。因此,满足60年的跨度是不可能的。这意味着,当研究随时间推移的个人成绩时,我们看到的是长度最多有14年的短时间序列。研究20~80岁的成绩意味着我们必须依赖数据的横截面信息,而这样的信息需要在这些短的时间序列里获得。
可以合理地猜测在一个短的时期内,比如8~10年,一名选手的成绩大致与年龄成线性关系(我们已经从横截面数据的分段线性模型中得到了这样的结论)。我们可以绘制图形以确定是否属于这种情况。现在有300多名参赛选手的数据可以用来绘图,为了限制过度绘制的影响,我们针对不同数据子集绘制多张图形。首先我们将参赛选手分成9组,在3×3的网格上绘制9张图,分配给每组大致相同数量的选手:

为每一幅图创建一个空白画布。例如,

然后我们在组内为每个选手添加线段,使用不同颜色和类型的线段以区分不同的参赛选手。下面的addRunners()函数为每个选手添加一条线段:

我们可以创建9块空白的画布,并用以下代码为参赛选手添加线段:

invisible()函数隐藏了sapply()函数的返回值。由于该函数的功能是将线段添加到画布上,因此对于每次迭代它都返回NULL,可以安全地忽略该返回值。
在图2-17中,可以看到9幅曲线图,每幅图大约包含30名运动员。有些运动员的成绩波动有点大,我们可能需要重新回顾一下舍弃参赛选手的概念,即由于选手的成绩波动超出了预期,因此有可能是两个不同运动员记录的合并,需要将他们舍弃掉。这里我们将以上处理留作练习。另外,为每位选手的成绩拟合一条直线似乎更合理。

图2-17 多场赛事的比赛用时。这些曲线图表示至少完成8次樱花赛的男选手的跑步时间。每个连接的片段集合对应一位运动员的跑步时间。观察所有的曲线图可以看出,该图和图2-7中的散点图呈现相似的形状,例如,图形随着年龄向上弯曲。然而,我们也可以看到单个选手成绩的变化情况。例如,许多中年选手的跑步时间随着年龄的增长而迅速增加,但并不是所有人都这样。他们中的一些人的成绩在进步,而另一些人的成绩变化较慢
针对个体选手的纵向分析隐式地抑制了那些可能影响成绩的协变量,比如性别。其中一个例外就是任意给定年份的比赛条件—由于路线或天气的变化,一些年份的速度可能慢些,一些年份速度可能快些。然而,看似合理的是这样的影响跟年龄无关,因此它相当于测量噪声。
现在有了参赛选手的名单,我们希望将每位选手的成绩拟合成一条线。如果针对一位选手编写函数执行该处理,那么就可以把该函数应用到名单上所有的选手。这个函数需要怎么做呢?可以让它通过lm()函数拟合一条线。函数需要返回什么值呢?我们对返回年龄的系数感兴趣,但是需要能够在年龄的上下文中对它进行解释。由于有每位选手的多个年龄,那么就让我们返回一个年龄的中间值。并且在得到该值后,返回一个该年龄上选手成绩的预测值。需要为函数输入什么呢?实际上仅仅是参赛选手的比赛用时和年龄。我们可以将它们作为独立的参数传入函数或者传入我们的数据框中。如果是后者,我们需要知道要拟合的变量名。下面完成这项工作。我们还让函数将被拟合的线段添加到绘图中。也可以通过增加参数使其变为可选操作,该参数的缺省值为FALSE,仅当指定参数为TRUE时函数才添加线段。该函数如下:

这里我们留一道练习题,增强以上函数的功能,使它也可以返回年龄误差的SD(标准差)以及年龄系数的SE(标准误差)。另外,我们也将另一种可选方法留作练习,即同时拟合所有运动员的线段,使噪声分散在所有运动员上。
针对图2-17中的一幅曲线图,我们可以用fitOne()函数添加拟合曲线,代码如下:

观察图2-18中的黑色虚线,这些线段似乎捕捉到了每个运动员的成绩变化。

图2-18 单个选手的跑步时间关于年龄的线性拟合。这里我们用最小二乘法对每个运动员的比赛用时进行拟合,以增强图2-17右下角的曲线图。总共有30条左右单个选手的黑色虚线段
接下来检查运动员与运动员之间的差异,我们使用以下调用对全部306位运动员进行线性拟合:

现在,对至少参赛8次的运动员(且在这些参赛年度中所居住的州名相同),我们用一个单一系数表示比赛用时和年龄之间的关系。这个系数以分钟为单位,也是每年10英里赛比赛的时间单位。如果系数为正,表示该参赛者因速度变慢而使每年比赛用时增加的分钟数。
从图2-19可以发现这些系数是如何随年龄进行变化的。大量参赛选手的个人成绩发生了变化,很多人在30岁以后开始变慢,而少量的人在他们50多和60多岁期间跑得更快。不管怎样,我们还是可以看到年龄和比赛用时之间的关系,在系数方面呈线性正相关趋势。可以用如下方式进行拟合:

拟合的概要信息如下:

图2-19 运动员的纵向分析系数。该散点图显示了对300多位参赛选手进行直线拟合的斜率,这些选手都至少完成了8次樱花赛。系数为负表示参赛选手随着年龄增长速度变得更快。该图包括一条基于最小二乘法的拟合直线和一条loess拟合曲线。注意几乎所有超过50岁的选手的系数都为正值。对于50岁的选手,系数的典型值是每年大约1分钟
在图中我们沿着0水平参考线添加拟合直线,同时使用loess()函数画出平滑系数拟合曲线。该图表明,在平均情况下,年龄低于35岁的运动员的成绩有所提高。也就是说,低于35岁的选手的年龄系数是负值。假设的“平均”参赛选手在年龄超过35岁以后跑步开始放慢。到60岁时,这个典型选手每年大约会慢1.3分钟,大致是横截面分析法显示结果的2倍。

《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.6 对个人跑步时间的变化进行建模...相关推荐

  1. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.1 引言...

    本节书摘来自华章计算机<数据科学R语言实践:面向计算推理与问题求解的案例研究法>一书中的第2章,第2.1节,作者:[美] 德博拉·诺兰(Deborah Nolan) 邓肯·坦普·朗(Dun ...

  2. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.3 数据清洗和变量格式化...

    本节书摘来自华章计算机<数据科学R语言实践:面向计算推理与问题求解的案例研究法>一书中的第2章,第2.3节,作者:[美] 德博拉·诺兰(Deborah Nolan) 邓肯·坦普·朗(Dun ...

  3. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.5 为跨年度的个人参赛选手构造记录...

    本节书摘来自华章计算机<数据科学R语言实践:面向计算推理与问题求解的案例研究法>一书中的第2章,第2.5节,作者:[美] 德博拉·诺兰(Deborah Nolan) 邓肯·坦普·朗(Dun ...

  4. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.4 探索所有男选手的跑步时间...

    本节书摘来自华章计算机<数据科学R语言实践:面向计算推理与问题求解的案例研究法>一书中的第2章,第2.4节,作者:[美] 德博拉·诺兰(Deborah Nolan) 邓肯·坦普·朗(Dun ...

  5. 《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一 1.1 引言...

    本节书摘来自华章计算机<数据科学R语言实践:面向计算推理与问题求解的案例研究法>一书中的第1章,第1.1节,作者:[美] 德博拉·诺兰(Deborah Nolan) 邓肯·坦普·朗(Dun ...

  6. 数据科学r语言_您应该为数据科学学习哪些语言?

    数据科学r语言 Data science is an exciting field to work in, combining advanced statistical and quantitativ ...

  7. 数据可视化——R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合)

    数据可视化--R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合) 概述:R语言使用ggplot2工具包绘制小提琴图.为了使数据表达更加丰富,同时将小提琴图与箱线图和误差条图相结合.另外 ...

  8. 大数据之R语言速成与实战

    什么是R语言? R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两人共同发明.其词法和语法分别源自Scheme和S语言. R定义:一个能够自有有效的用于统计计算和绘图的 ...

  9. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

最新文章

  1. Golang 笔记 1 基础、基本数据类型
  2. 深入了解MyBatis返回值
  3. 专业人士提升数据中心职业生涯的6件事
  4. EduCoder 机器学习 决策树
  5. java map 的复制,Java Map的深度复制和浅复制
  6. Code Review 与 结对编程
  7. python的networkx 算法_python图算法库Networkx笔记 - Node and Centrality
  8. LeetCode 103——二叉树的锯齿形层次遍历
  9. EditPlus编码格式设置
  10. 阿里oss客户端直传
  11. 手机浏览器 css3,css3在不同型号手机浏览器上的兼容一览表
  12. CS1703 C# Multiple assemblies with equivalent xxx... and. Remove one of the duplicate references.
  13. 在一个页面同时引入两个百度地图
  14. vb.net与SQL Server
  15. java多线程(4) ----- Lock的使用
  16. UEM“探针”技术及用户体验管理
  17. Android 实现用户收藏新闻以及查看新闻(简易新闻 六)
  18. 锁算力显卡影响深度学习吗?
  19. 华为ensp 防火墙的基础配置
  20. flask5+baidu+tuling + 语音合成识别nlp httpx js处理录音

热门文章

  1. IT项目管理-项目组合、项目群、项目
  2. python dataframe dropna_python pandas DataFrame.dropna用法及代碼示例
  3. 最近超火的3dmax足球建模, (图文教程)本篇很详细
  4. 关于maven的java面试题汇总
  5. 人工神经网络的基本原理
  6. 金九银十!2022年最新32W字的Java程序员面试题,大厂面试有它足矣!
  7. web录音的实现 http://www.cnblogs.com/jianyi0115/archive/2008/02/22/1078133.html
  8. java上传图片损坏_大神求助 上传图片后 图片损坏
  9. python曲线画法(PR曲线为例)
  10. C语言define替换printf