使用Spline插值处理缺失的时间序列数据

Use Spline interpolation to deal with missing time series data

我有一个关于处理时间序列中缺失数据的问题。我得到了下面第 1-7 天、第 14 天和第 30 天的数据。我想预测第 60、90 和 180 天的数据。但是时间间隔不同,所以我想为缺失的数据生成数据点。

day ltv
1   8.94
2   18.93
3   26.19
4   31.97
5   38.19
6   45.59
7   52.06
8   NA
9   NA
10  NA
11  NA
12  NA
13  NA
14  69.10
15  NA
16  NA
17  NA
18  NA
19  NA
20  NA
21  NA
22  NA
23  NA
24  NA
25  NA
26  NA
27  NA
28  NA
29  NA
30  103

有没有办法使用 spline() 函数来做到这一点?谢谢!

我们可以使用 na.spline 来自 zoo

library(zoo)
df1$ltv <- na.spline(df1$ltv)
df1$ltv
#[1]   8.94000  18.93000  26.19000  31.97000  38.19000  45.59000  52.06000  57.25141  61.32302  64.39529
#[11]  66.58868  68.02362  68.82058  69.10000  68.98271  68.59102  68.04762  67.47520  66.99644  66.73402
#[21]  66.81064  67.34898  68.47173  70.30157  72.96119  76.57328  81.26051  87.14559  94.35119 103.00000

数据

df1 <- structure(list(day = 1:30, ltv = c(8.94, 18.93, 26.19, 31.97, 
38.19, 45.59, 52.06, NA, NA, NA, NA, NA, NA, 69.1, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 103)),
 class = "data.frame", row.names = c(NA, 
-30L))