替换缺失数据 - I
在上一个练习中,您发现季度 GDP 数据缺失了多条观测。事实上,您在上一个练习中调用 summary() 时发现共有 80 个缺失值!
正如您在首门 xts 课程中学到的那样,xts 和 zoo 提供了多种处理缺失数据的函数。
最简单的方法是 na.locf() 命令,它会将缺失位置之前的最后一个观测向前填充(因此称为"last observation carried forward",或 locf)。当您希望在数据增长假设上更为保守时,这通常是处理缺失值的较合适方式。
类似的方法也可反向进行:取缺失值之后的第一个观测并向后填充("next observation carried backward",或 nocb)。通过在 na.locf() 中将 fromLast 参数设为 TRUE 即可实现该技术。
至于哪种方法更好,取决于您所处理的数据类型,以及您对数据随时间变化方式的先验判断。
本练习是课程的一部分
案例研究:在 R 中分析城市时间序列数据
练习说明
- 使用
na.locf()基于"最后一次观测向前填充"来补齐gdp_xts的缺失值。将新的 xts 对象保存为gdp_locf。 - 再次调用
na.locf(),基于"下一次观测向后填充"来补齐gdp_xts的缺失值。为此,将fromLast参数设为TRUE。将新的 xts 对象保存为gdp_nocb。 - 使用
plot.xts()绘制这两个对象的图。包含预写好的par()命令,以便将两幅图并排显示。 - 分别查询
gdp_locf和gdp_nocb中 1993 年的 GDP。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Fill NAs in gdp_xts with the last observation carried forward
gdp_locf <-
# Fill NAs in gdp_xts with the next observation carried backward
gdp_nocb <-
# Produce a plot for each of your new xts objects
par(mfrow = c(2,1))
plot.xts(___, major.format = "%Y")
plot.xts(___, major.format = "%Y")
# Query for GDP in 1993 in both gdp_locf and gdp_nocb