开始使用免费开始使用

计算并绘制季内平均值

在上一个练习中,您使用了 endpoints()period.apply(),快速计算了波士顿红袜每个赛季末的胜负平均值。那么,如果您需要了解每个赛季「整个过程中」的累积平均值呢?统计学家和体育迷经常依赖这一指标来比较球队与其对手的表现。

要在每个赛季内计算累积平均值,您需要回到第 3 章练习过的 split-lapply-rbind 模式。首先,按赛季拆分数据;然后,对每个赛季的 win_loss 列应用累积均值函数;最后,将结果合并回一个 xts 对象。

我们已为您准备了自定义的 cummean() 函数,它会先计算累积和,然后再除以参与累积的数值个数。工作区中已提供 redsox_xts 数据,包含 win_loss 列。

本练习是课程的一部分

案例研究:在 R 中分析城市时间序列数据

查看课程

练习说明

  • 使用 split()redsox_xts 数据按赛季(此处为 years)拆分。将结果赋给 redsox_seasons
  • 使用 lapply() 计算每个赛季的累积均值。本练习提供了 cummean() 函数:它使用 cumsum() 求和,并结合 seq_along() 按参与求和的条目数取平均。将结果保存为 redsox_ytd
  • 使用 do.call() 搭配 rbind,把列表输出转换为单个 xts 对象(redsox_winloss),其中包含各赛季全程的胜负平均值。
  • 使用 plot.xts() 查看 2013 赛季期间的累积胜负平均值。请保持预写代码中的 ylim 参数不变。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Split redsox_xts win_loss data into years 
redsox_seasons <- split(___$___, f = "___")

# Use lapply to calculate the cumulative mean for each season
redsox_ytd <- lapply(___, cummean)

# Use do.call to rbind the results
redsox_winloss <- do.call(___, ___)

# Plot the win_loss average for the 2013 season
plot.xts(___["___"], ylim = c(0, 1))
编辑并运行代码