Преобразование данных во временные ряды - PullRequest
0 голосов
/ 12 марта 2019

У меня небольшая проблема, связанная с преобразованием данных во временные ряды.Вот шаги, которые я выполнил.Мои данные варьируются с 21 января 2014 года по 28 февраля 2019 года и состоят из названий цены и даты.

1. Я импортировал данные из Excel с помощью read.csv ().

interest<-read.csv("C:/Users/Kane/interest.csv", stringsAsFactors=F, header=T)

длина данных = 1146

2. Были некоторые пропущенные даты и пропущенные значения,Я применил na.interpolation ().

interest<-na.interpolation(interest$Price)

длина данных становится 1864

3. Я вычислил результаты с использованием diff (log (интереса $ Price))

returns<-diff(log(interest$Price))

4.Я конвертировал возврат во временные ряды.

return.ts<-ts(data=returns,frequency=365,start=c(2014,1), end=c(2019,2))

длина данных стала 1832.

Могу ли я получить объяснение того, почему при преобразовании во временные ряды длина данных резко уменьшилась, и пожалуйста, решение.

Пример моих данных:

> interest
       Date    Price
1    2014-01-22 3.820000
2    2014-01-23 3.802857
3    2014-01-24 3.785714
4    2014-01-25 3.768571
5    2014-01-26 3.751429
6    2014-01-27 3.734286


> dput(head(interest))
structure(list(Date = structure(c(16092, 16093, 16094, 16095, 
16096, 16097), class = "Date"), Price = c(3.82, 3.80285714285714, 
3.78571428571429, 3.76857142857143, 3.75142857142857, 3.73428571428571
)), .Names = c("Date", "Price"), row.names = c(NA, 6L), class = "data.frame")

Результаты при преобразовании возврата в ts:

> return1<-ts(Return,frequency=365,start=c(2014,1),end=c(2019,2))
> length(return1)
[1] 1827
> return<-ts(Return,frequency=365,start=c(2014,1),end=c(2018,11))
> length(return)
[1] 1471
> return<-ts(Return,frequency=365,start=c(2014,1),end=c(2018,12))
> length(return)
[1] 1472

1 Ответ

0 голосов
/ 12 марта 2019

Не уверен, что вы спрашиваете, но, возможно, это помогает. Я использовал ваши образцы данных, и вы явно не пропустили их, поэтому первый шаг следует пропустить (также вы не предоставили нам пакет na.interpolation).

Впрочем, вот ваши данные:

       Date    Price
1 2014-01-22 3.820000
2 2014-01-23 3.802857
3 2014-01-24 3.785714
4 2014-01-25 3.768571
5 2014-01-26 3.751429
6 2014-01-27 3.734286

Теперь добавление функции diff сделает данные с одним наблюдением меньше:

returns
[1] -0.004497759 -0.004518080 -0.004538586 -0.004559278 -0.004580161

Вы можете применить функцию ts сейчас и добавить начало с первого дня, являющегося дневным временным рядом:

 ts(data=returns,frequency=365,start = decimal_date(as.Date("2014-01-22")))
Time Series:
Start = c(2014, 22) 
End = c(2014, 26) 
Frequency = 365 
[1] -0.004497759 -0.004518080 -0.004538586 -0.004559278 -0.004580161
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...