Отсутствующие значения в необработанных данных
Итак, вот моя проблема: у меня есть необработанные данные ежедневной процентной ставки за 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 данных, которые представляют собой объем данных, которые у меня фактически есть.
**> интереса<-read.csv ("C: /Users/SOOGRIM/Desktop/Interest4.csv", заголовок = ИСТИНА, stringsAsFactors = ЛОЖЬ)
Дата интереса Цена
1 21 января 19 3,550 2 20 января 19 3,550 3 19 января 19 3,550 4 18 января 19 3,550 5 17 января 19 3,630 резюме (проценты) Дата Цена X
Длина:1254 мин.: 0,861 мин.: 1.000
Класс: персонаж 1-й кв.: 2,400 1-й кв.: 1.000
Режим: характер Медиана:2.900 Медиана: 2.000
Среднее: 3.000 Среднее: 3.031
3 кв.: 3,670 3 кв.: 6 000
Максимум.:5.674 Макс.: 10,000
NA:1222**
Однако при преобразовании его во временные ряды он интерполирует данные для пропущенных дат и в результате получается 3281.
**> Interest.ts<-ts (данные = проценты $ Цена, частота = 365, начало = c (2010,06), конец = c (2019,01))
резюме (интерес.ц) Мин. 1 кв. Медиана Среднее 3 кв. Максимум. 0,861 2,450 2,900 3,001 3,680 5,674 длина (проценты) [1] 3281**
Это влияет на мой прогноз процентной ставки.
Я хочу быть в состоянии определить отсутствующую дату в моих ежедневных значениях и автоматически заменить ее на R. Я исследовал пакет imputeTS и lubridate. Я не знаю, какую функцию использовать для перенумерации даты и отображения NaN для переменной "цена" соответственно.
Затем я буду использовать правильный метод интерполяции, который доступен в пакете imputeTS, чтобы интерполировать значения для переменной "цена".
Просто я просто хочу знать, как автоматически добавить отсутствующую дату в R. Поскольку пропущено более 1000 дат, утомительно делать это вручную в Excel.
Пожалуйста, помогите мне. Это для моего последнего года проекта. Спасибо.
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.kalman
, na.interpolation
, na.seadec
, na.ma
)