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

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

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

Функция

Цель

boxcox

Преобразование Cox поля

diff

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

fillts

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

filter

Фильтр

lagts

Серийный объект времени задержки

leadts

Серийный объект времени выполнения заказа

peravg

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

smoothts

Smoothdata

tsmovavg

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

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

Функция

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

convertto

Как задано

resamplets

Как задано

toannual

Ежегодный

todaily

Ежедневно

tomonthly

Ежемесячно

toquarterly

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

tosemi

Раз в полгода

toweekly

Еженедельно

Как взгляд в качестве примера на boxcox, функцию преобразования 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] ...

Заполните любые отсутствующие значения, обозначенные с NaN s в whrl со значениями, вычисленными с помощью линейного метода:

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 данных в нормально распределенное использование преобразование 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) 

Преобразование Cox поля

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

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

Наложение гауссова 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]...

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

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) 

Сглаживавший ряд данных

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

Смотрите также

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

Похожие темы