1

所以这是我的问题:我有 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 21-Jan-19 3.550 2 20-Jan-19 3.550 3 19-Jan-19 3.550 4 18-Jan-19 3.550 5 17-Jan-19 3.630 摘要(利息) 日期价格 X
长度:1254 :0.861 分钟。: 1.000
等级 :character 1st Qu.:2.400 1st Qu.: 1.000
Mode :character 中位数 :2.900 Median : 2.000
Mean :3.000 Mean : 3.031
第三Qu.:3.670 第三Qu.: 6.000
Max. :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. 我不知道使用什么函数来重新编号日期并分别显示“价格”变量的 NaN。

然后我将使用 imputeTS 包中可用的正确插值方法来插值“价格”变量的值。

只是我只想知道如何在 R 中自动添加缺少的日期。由于缺少 1000 多个日期,因此在 Excel 上手动执行它很乏味。

4

1 回答 1

0

没有完全理解你的问题 - 但我认为这是一个隐含缺失值的问题。

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

您可以使用imputeTStsibble包组合来解决这个问题。

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_kalman, na.interpolation, na_seadec, na_ma

于 2019-11-16T00:15:39.670 回答