取代遺漏資料 - 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