2016-12-18 2 views
1

Я новичок в R и вам необходимо использовать функцию getnfac из пакета PANICr. И кажется, что в качестве первого аргумента функция принимает только объект xts. Однако после того, как я прочитал некоторые чтения, я до сих пор не понимаю, что такое объект xts. Может ли кто-нибудь рассказать мне, как я могу конвертировать matrix в объект xts?Преобразование матрицы в объект xts

Ниже я использую матрицу return в качестве первого аргумента. Поэтому мне просто нужно преобразовать return в объект xts.

getnfac(return,143,"BIC3") 
Error in getnfac(return, 143, "BIC3") : 
    x must be an xts object so lags and differences are taken properly 

ответ

2

xts является расширяемой временной ряд объект, по существу, постоянный ts объекта (или более правильно zoo объекта) с добавлением некоторых бит.
«Расширяемая» часть названия относится к тому, как вы можете добавлять атрибуты по своему выбору.

В то время как matrix может быть преобразован в многомерных временных рядов довольно легко

m <- matrix(1:16, 4) 
m.ts <- ts(m) 
index(m.ts) 

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

library(xts) 
m <- matrix(1:16, 4) 
d <- as.Date(1:nrow(m)) 
m.xts <- xts(m, order.by=d) 
index(m.xts) 

Если ваши данные отбираются с равномерно распределенными интервалами, то фиктивный индекс, подобный приведенному выше, вероятно, хорошо. Если нет, вам нужно указать вектор, соответствующий времени выборки.

0

На мой взгляд, первым аргументом функции getnfac() должна быть матрица, содержащая данные.

В дополнение к приведенным выше ответам, Вы можете преобразовать формат матрицы, используя coredata() около xts.

+0

На ваш взгляд? Чтобы процитировать исходный код 'getnfac', 4-я строка:' is.xts (x) || stop («x должен быть объектом xts, поэтому задержки и различия выполняются должным образом»). Нет двух способов, поставьте объект 'xts', или процесс будет остановлен. – AkselA

+0

@AkselA Я предполагаю, что он имел в виду, что он думает, что дизайн API должен взять матрицу. Этот ответ должен быть действительно комментарием по этому вопросу ... но IIRC вам нужно 20 представителей, чтобы оставлять комментарии. BTW, 'coredata()' - преобразовать xts в матрицу, тогда как здесь задается способ преобразования матрицы в xts. –

 Смежные вопросы

  • Нет связанных вопросов^_^