Используйте сплайн-интерполяцию для обработки пропущенных данных временных рядов - PullRequest
1 голос
/ 28 марта 2020

У меня есть вопрос о работе с недостающими данными во временных рядах. Я получил данные за день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 () для этого? Спасибо!

1 Ответ

1 голос
/ 28 марта 2020

Мы можем использовать 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))
...