原始数据中缺少值

时间:2019-02-02 20:24:35

标签: r missing-data imputets

这是我的问题: 我有2010年至2019年的每日利率原始数据。但是,缺少几个日期。

1244 9-Jul-10 5.053 1245 8-Jul-10 5.007 1246 7-Jul-10 4.991 1247 6-Jul-10 4.976 1248 28-Jun-10 4.850 1249 21-Jun-10 4.900 1250 18-Jun-10 5.000 1251 14-Jun-10 3.800 1252 9-Jun-10 3.850 1253 1-Jun-10 3.950 1254 31-May-10 3.950

当我在R上导入数据时,它将显示1254个数据,这是我实际拥有的数据量。

interest <-read.csv("C:/Users/SOOGRIM/Desktop/Interest4.csv",header=TRUE,stringsAsFactors=FALSE)
  

兴趣             日期价格
  1 19年1月21日3.550   2 19年1月20日3.550   3 19年1月19日3.550   4 19年1月18日3.550   19年1月17日3.630   摘要(兴趣)        日期价格X
   长度:1254分钟:0.861分钟:1.000
   类别:字符第一级:2.400第一级:1.000
   模式:字符中位数:2.900中位数:2.000
                      均值:3.000均值:3.031
                      第三届:3.670第三届:6.000
                      最高:5.674最大:10.000
                                      NA:1222 **

但是,在将其转换为时间序列时,会对缺少的日期进行数据插值,结果总计为3281。

interest.ts <-ts(data=interest$Price,frequency=365,start=c(2010,06),end=c(2019,01))
  

摘要(interest.ts)      最小第一区中位数第三区最高     0.861 2.450 2.900 3.001 3.680 5.674   长度(interest.ts)   [1] 3281 **

这会影响我对利率的预测。

我希望能够在我的日常值中识别出缺失的日期并在R中自动将其替换。我已经研究了软件包imputeTSlubridate。我不知道使用什么功能来重新编号日期并分别显示“ price”变量的NaN。

然后,我将使用imputeTS软件包中可用的正确插值方法对“ price”变量的值进行插值。

我只是想知道如何在R中自动添加缺少的日期。由于缺少超过1000个日期,因此在excel上手动进行比较麻烦。

1 个答案:

答案 0 :(得分:0)

没有完全理解您的问题-但是我认为这是隐式缺少值的问题。

您有一个时间序列,并且某些日期完全丢失了-但不是以某种方式将它们标记为NA,在时间序列中根本没有给出日期。 (因此,NA值仅是隐式给出的)

您可以使用 imputeTS tsibble 软件包组合来解决此问题。

library(imputeTS)
library(tsibble)

# Convert your time series or data.frame into a tsibble time series object
x <- as_tsibble(your_timeseries)

# Get the implicit missing values -afterwards you have the missing values as NA
x <- fill_gaps(x)

# Perform the time series imputation
x <- na.kalman(x)

在这里tsibble包用于将隐式缺失值添加为实际NA值。之后,将imputeTS用于执行时间序列估算(替换NA值)。

如果您只需要简单的插补,例如这意味着您也可以直接使用fill_gaps执行此操作。否则请使用imputeTS的某些功能(例如na。kalmanna.interpolationna.seadecna.ma