Анализ ежедневных/недельных данных с использованием ts в R

Я только начал играть с классом ts, чтобы проанализировать некоторые данные временных рядов, которые у меня есть.

Мне кажется, что класс ts не подходит для анализа ежедневных или еженедельных данных. Почти все примеры, которые я вижу в Интернете или в Cowpertwait и Metcalfe, "Вводные временные ряды с R" используют ежемесячные или годовые данные.

Я хотел бы использовать ts для анализа еженедельных данных, разве это не рекомендуется?

Ответы

Ответ 1

Основная проблема заключается в том, что большинство людей, которые хотят анализировать ежедневные или еженедельные данные, хотят делать что-то вроде частоты 365 дней в году или 52 недели в год, но количество дней или недель в году не равно 365 или 52 или даже постоянным. Если вы уроните один день в високосные годы в случае ежедневных данных, скажем, или используйте 7 дней за каждую неделю года, кроме одного, который имеет 8 или 9 дней в случае еженедельных данных, скажем, тогда вы можете выманить его. Возможно бесконечное разнообразие схем.

Прочтите этот поток для примера.

Ответ 2

Класс ts подходит для любых типов данных, имеющих строго метрономические интервалы между наблюдениями. Является ли этот интервал годами, месяцами, днями, минутами, не имеет никакого значения. Это делает его очень подходящим для многих научных данных, например. метеорологические наблюдения.

Однако большой класс временных данных имеет пробелы. Возьмем, к примеру, цены закрытия акций, которых нет в выходные дни. Для этого типа данных вам лучше использовать пакеты xts (растяжимые временные ряды) или zoo (Z упорядоченных наблюдений - где Z - начальный номер одного из авторов пакета).

Ссылки на CRAN:

Ответ 3

Зоопарк хорошо работает с ежедневными данными. Например, если у вас была ежедневная серия потоков в векторе Q и с соответствующими отметками даты D (созданная с использованием as.Date(), например).

Q.z < - zoo (Q, order.by = D)

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

window (Q.z, start = as.Date('2000-01-01'), end = as.Date('2000-31-12')

Проверьте пакет Zoo для получения дополнительной информации.

Ответ 4

Единица времени не вступает в игру; только число точек данных на единицу (частота). Что касается ts и его функций, то день - это год, десятилетие - это что угодно. Ни в коем случае не говорите, что время, с которым он имеет дело, - неделя или день. Это не имеет значения!

Ответ 5

Я полагаю, что проблема с ежедневными/еженедельными данными заключается в том, что обе имеют единицы прыжка. Каждый четвертый год имеет еще 366 дней, а каждый четвертый год - 53 недели. Или было с 1900 года. Таким образом, "частота" либо не является постоянной, либо фракцией. В противном случае ts должен работать нормально.

Самый простой способ в течение нескольких недель - использовать дату начала недели. В unixlike системах вы также можете использовать ISO-недели, а также пакет, который их реализует. Конечно, если ваши данные уже в течение нескольких недель, вам нужны только эти данные для маркировки графиков и т.д.