Преобразование данных и преобразование частоты

Функции преобразования данных и преобразования частоты преобразуют ряд данных в другой формат.

Функции преобразования данных

Функция

Цель

boxcox

Преобразование Бокса-Кокса

diff

Дифференцирование

fillts

Заполните отсутствующие значения

filter

Фильтр

lagts

Временные ряды задержки

leadts

Объект временных рядов шагов

peravg

Периодическое среднее значение

smoothts

Сглаживайте данные

tsmovavg

Скользящее среднее значение

Функции частотного преобразования 

Функция

Новая частота

convertto

Как указано

resamplets

Как указано

toannual

Ежегодный

todaily

Ежедневно

tomonthly

Ежемесячно

toquarterly

Ежеквартально

tosemi

Раз в полгода

toweekly

Еженедельно

В качестве примера рассмотрим boxcox, функция преобразования Box-Cox. Эта функция преобразует ряды данных, содержащиеся в объекте финансовых временных рядов, в другой набор рядов данных с относительно нормальными распределениями.

Сначала создайте объект финансовых временных рядов из предоставленных whirlpool.dat файл данных.

whrl = ascii2fts('whirlpool.dat', 1, 2, [])
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In ascii2fts (line 64) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
whrl = 
 
    desc:  Whirlpool	(WHR)				
    freq:  Unknown (0)

    'dates:  (1108)'    'Open:  (1108)'    'High:  (1108)'    'Low:  (1108)'    'Close:  (1108)'    'Volume:  (1108)'
    '03-Jan-1995'       [        50.25]    [        50.88]    [       50.13]    [         50.38]    [      159000.00]
    '04-Jan-1995'       [        50.00]    [        50.13]    [       49.63]    [         49.75]    [      365800.00]
    '05-Jan-1995'       [        50.00]    [        50.00]    [       49.25]    [         49.88]    [      410500.00]
    '06-Jan-1995'       [        50.00]    [        50.25]    [       49.88]    [         50.25]    [      192900.00]
    '09-Jan-1995'       [        49.88]    [        50.38]    [       49.63]    [         50.38]    [      180800.00]
    '10-Jan-1995'       [        51.25]    [        51.25]    [       50.25]    [         50.25]    [      157800.00]
    '11-Jan-1995'       [        50.38]    [        50.63]    [       49.75]    [         49.75]    [      266000.00]
    '12-Jan-1995'       [        49.88]    [        50.13]    [       49.25]    [         49.88]    [       70000.00]
    '13-Jan-1995'       [        50.00]    [        50.25]    [       49.75]    [         50.13]    [      128000.00]
    '16-Jan-1995'       [        50.25]    [        50.38]    [       50.00]    [         50.00]    [      228200.00] ...

Заполните все отсутствующие значения, обозначенные NaNs в whrl со значениями, рассчитанными с помощью метода Linear:

f_whrl = fillts(whrl)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/fillts (line 213) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
f_whrl = 
 
    desc:  Filled Whirlpool	(WHR)				
    freq:  Unknown (0)

    'dates:  (1108)'    'Open:  (1108)'    'High:  (1108)'    'Low:  (1108)'    'Close:  (1108)'    'Volume:  (1108)'
    '03-Jan-1995'       [        50.25]    [        50.88]    [       50.13]    [         50.38]    [      159000.00]
    '04-Jan-1995'       [        50.00]    [        50.13]    [       49.63]    [         49.75]    [      365800.00]
    '05-Jan-1995'       [        50.00]    [        50.00]    [       49.25]    [         49.88]    [      410500.00]
    '06-Jan-1995'       [        50.00]    [        50.25]    [       49.88]    [         50.25]    [      192900.00]
    '09-Jan-1995'       [        49.88]    [        50.38]    [       49.63]    [         50.38]    [      180800.00]
    '10-Jan-1995'       [        51.25]    [        51.25]    [       50.25]    [         50.25]    [      157800.00]
    '11-Jan-1995'       [        50.38]    [        50.63]    [       49.75]    [         49.75]    [      266000.00]
    '12-Jan-1995'       [        49.88]    [        50.13]    [       49.25]    [         49.88]    [       70000.00]
    '13-Jan-1995'       [        50.00]    [        50.25]    [       49.75]    [         50.13]    [      128000.00]
    '16-Jan-1995'       [        50.25]    [        50.38]    [       50.00]    [         50.00]    [      228200.00]
    '17-Jan-1995'       [        51.00]    [        51.00]    [       50.00]    [         50.63]    [      196200.00]
    '18-Jan-1995'       [        50.50]    [        51.00]    [       50.13]    [         50.13]    [      369700.00]
    '19-Jan-1995'       [        50.25]    [        50.50]    [       50.00]    [         50.50]    [      254300.00]
    '20-Jan-1995'       [        50.50]    [        51.25]    [       50.50]    [         50.50]    [      183400.00] ...

Преобразуйте ненормально распределенный заполненный ряд данных f_whrl в нормально распределенный с использованием преобразования Box-Cox:

bc_whrl = boxcox(f_whrl)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/boxcox (line 36) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
bc_whrl = 
 
    desc:  Box-Cox: Filled Whirlpool	(WHR)				
    freq:  Unknown (0)

    'dates:  (1108)'    'Open:  (1108)'    'High:  (1108)'    'Low:  (1108)'    'Close:  (1108)'    'Volume:  (1108)'
    '03-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.15]
    '04-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.62]
    '05-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.68]
    '06-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.26]
    '09-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.23]
    '10-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.15]
    '11-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.44]
    '12-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           8.68]
    '13-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.03]
    '16-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.36]
    '17-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.27]
    '18-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.62]
    '19-Jan-1995'       [         0.56]    [         0.51]    [        0.60]    [          0.60]    [           9.42]...

Сравните результат Close последовательность данных с нормальной (Гауссовой) функцией распределения вероятностей и ненормально распределенной f_whrl:

subplot(2, 1, 1);
hist(f_whrl.Close);
grid; title('Nonnormally Distributed Data');
subplot(2, 1, 2);
hist(bc_whrl.Close);
grid; title('Box-Cox Transformed Data');
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/subsref (line 106) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/hist (line 37) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/subsref (line 106) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/hist (line 37) 

Преобразование Бокс-Кокс

Plot for Box-Cox transformed data

Столбчатая диаграмма сверху представляет функцию распределения вероятностей заполненного ряда данных, f_whrl, который является исходным рядом данных whrl с отсутствующими значениями, интерполированными с помощью метода Linear. Распределение наклонено налево (обычно не распределено). Столбчатая диаграмма внизу имеет меньший наклон налево. Если вы строите график функции распределения вероятностей (PDF) с подобным средним и стандартным отклонением, распределение преобразованных данных очень близко к нормальному (Гауссов).

Когда вы исследуете содержимое получившегося объекта bc_whrl, вы находите идентичный объект исходному объекту whrl но содержимое представляет собой преобразованный ряд данных. Если у вас есть программное обеспечение Statistics and Machine Learning Toolbox™, можно сгенерировать PDF Гауссова с средним и стандартным отклонением, равным отклонениям преобразованного ряда данных, и построить его как наложение на вторую столбчатую диаграмму. На следующем рисунке можно увидеть, что это примерно нормальное распределение.

Наложение Гауссова PDF

Plot of Box-Cox and Gaussian PDF

В следующем примере используется smoothts функция для сглаживания временных рядов.

Для начала преобразуйте ibm9599.dat, предоставленный файл данных, в объект финансовых временных рядов:

ibm = ascii2fts('ibm9599.dat', 1, 3, 2)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In ascii2fts (line 64) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
ibm = 
 
    desc:  International Business Machines Corporation (IBM)					
    freq:  Unknown (0)

    'dates:  (1108)'    'OPEN:  (1108)'    'HIGH:  (1108)'    'LOW:  (1108)'    'CLOSE:  (1108)'    'VOLUME:  (1108)'
    '03-Jan-1995'       [        36.75]    [        36.91]    [       36.66]    [         36.88]    [     1167900.00]
    '04-Jan-1995'       [        37.00]    [        37.28]    [       36.63]    [         37.16]    [     1994700.00]
    '05-Jan-1995'       [        37.13]    [        37.63]    [       36.88]    [         37.00]    [     2270900.00]
    '06-Jan-1995'       [        37.25]    [        37.88]    [       37.03]    [         37.53]    [     3040500.00]
    '09-Jan-1995'       [        37.50]    [        37.91]    [       37.41]    [         37.75]    [     1713000.00]
    '10-Jan-1995'       [        38.00]    [        38.63]    [       37.78]    [         38.28]    [     3420800.00]
    '11-Jan-1995'       [        38.53]    [        38.53]    [       37.63]    [         38.00]    [     2450300.00]
    '12-Jan-1995'       [        37.91]    [        38.16]    [       37.75]    [         38.00]    [     2275900.00]
    '13-Jan-1995'       [        38.25]    [        38.41]    [       37.88]    [         38.16]    [     2030300.00]
    '16-Jan-1995'       [        38.16]    [        39.00]    [       38.16]    [         38.75]    [     2716000.00]
    '17-Jan-1995'       [        38.63]    [        39.00]    [       38.53]    [         38.75]    [     1596300.00]
    '18-Jan-1995'       [        38.88]    [        38.91]    [       38.28]    [         38.63]    [     1842600.00]
    '19-Jan-1995'       [        38.53]    [        38.78]    [       38.16]    [         38.25]    [     1713900.00]...

Заполните отсутствующие данные для праздников данными, интерполированными с помощью fillts функции и Spline метод заливки:

f_ibm = fillts(ibm, 'Spline')
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/fillts (line 213) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
f_ibm = 
 
    desc:  Filled International Business Machines Corporation (IBM)					
    freq:  Unknown (0)

    'dates:  (1108)'    'OPEN:  (1108)'    'HIGH:  (1108)'    'LOW:  (1108)'    'CLOSE:  (1108)'    'VOLUME:  (1108)'
    '03-Jan-1995'       [        36.75]    [        36.91]    [       36.66]    [         36.88]    [     1167900.00]
    '04-Jan-1995'       [        37.00]    [        37.28]    [       36.63]    [         37.16]    [     1994700.00]
    '05-Jan-1995'       [        37.13]    [        37.63]    [       36.88]    [         37.00]    [     2270900.00]
    '06-Jan-1995'       [        37.25]    [        37.88]    [       37.03]    [         37.53]    [     3040500.00]
    '09-Jan-1995'       [        37.50]    [        37.91]    [       37.41]    [         37.75]    [     1713000.00]
    '10-Jan-1995'       [        38.00]    [        38.63]    [       37.78]    [         38.28]    [     3420800.00]
    '11-Jan-1995'       [        38.53]    [        38.53]    [       37.63]    [         38.00]    [     2450300.00]
    '12-Jan-1995'       [        37.91]    [        38.16]    [       37.75]    [         38.00]    [     2275900.00]
    '13-Jan-1995'       [        38.25]    [        38.41]    [       37.88]    [         38.16]    [     2030300.00]
    '16-Jan-1995'       [        38.16]    [        39.00]    [       38.16]    [         38.75]    [     2716000.00]
    '17-Jan-1995'       [        38.63]    [        39.00]    [       38.53]    [         38.75]    [     1596300.00]
    '18-Jan-1995'       [        38.88]    [        38.91]    [       38.28]    [         38.63]    [     1842600.00]
    '19-Jan-1995'       [        38.53]    [        38.78]    [       38.16]    [         38.25]    [     1713900.00]
    '20-Jan-1995'       [        38.13]    [        38.25]    [       37.50]    [         37.66]    [     3333400.00]...

Сглаживайте заполненный ряд данных с помощью метода Box (прямоугольное окно) по умолчанию:

sm_ibm = smoothts(f_ibm)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/smoothts (line 44) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/display (line 66) 
 
sm_ibm = 
 
    desc:  Box-smoothed of Filled International Business Machines Corporation (IBM)					
    freq:  Unknown (0)

    'dates:  (1108)'    'OPEN:  (1108)'    'HIGH:  (1108)'    'LOW:  (1108)'    'CLOSE:  (1108)'    'VOLUME:  (1108)'
    '03-Jan-1995'       [        22.18]    [        22.36]    [       22.03]    [         22.21]    [     1086700.00]
    '04-Jan-1995'       [        29.63]    [        29.94]    [       29.44]    [         29.71]    [     1694800.00]
    '05-Jan-1995'       [        37.13]    [        37.52]    [       36.92]    [         37.26]    [     2037400.00]
    '06-Jan-1995'       [        37.38]    [        37.86]    [       37.14]    [         37.54]    [     2487980.00]
    '09-Jan-1995'       [        37.68]    [        38.11]    [       37.34]    [         37.71]    [     2579100.00]
    '10-Jan-1995'       [        37.84]    [        38.22]    [       37.52]    [         37.91]    [     2580100.00]
    '11-Jan-1995'       [        38.04]    [        38.33]    [       37.69]    [         38.04]    [     2378060.00]
    '12-Jan-1995'       [        38.17]    [        38.54]    [       37.84]    [         38.24]    [     2578660.00]
    '13-Jan-1995'       [        38.29]    [        38.62]    [       37.99]    [         38.33]    [     2213760.00]
    '16-Jan-1995'       [        38.36]    [        38.69]    [       38.12]    [         38.46]    [     2092220.00]
    '17-Jan-1995'       [        38.49]    [        38.82]    [       38.20]    [         38.51]    [     1979820.00]...

Теперь постройте график оригинальной и сглаженной ценовой серии закрытия для IBM® запас:

plot(f_ibm.CLOSE('11/01/97::02/28/98'), 'r')
datetick('x', 'mmmyy')
hold on
plot(sm_ibm.CLOSE('11/01/97::02/28/98'), 'b')
hold off
datetick('x', 'mmmyy')
legend('Filled', 'Smoothed')
title('Filled IBM Close Price vs. Smoothed Series')
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/subsref (line 106) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/plot (line 63) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/subsref (line 106) 
Warning: FINTS will be removed in a future release. Use TIMETABLE instead. 
> In fints/plot (line 63) 

Сглаженные ряды данных

Plot of close prices versus smoothed prices

Эти примеры дают вам представление о том, что вы можете сделать с объектом финансовых временных рядов. Этот тулбокс предоставляет некоторые MATLAB® функций, которые были перегружены для работы непосредственно с этими объектами. Перегруженными функциями являются те, которые чаще всего необходимы для работы с данными временных рядов.

См. также

| | | | | | | | | | | | | | | | | | | | |

Похожие темы