使用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))
我有一个关于处理时间序列中缺失数据的问题。我得到了下面第 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))