exponenta event banner

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

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

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

Функция

Цель

boxcox

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

diff

Differencing

fillts

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

filter

Фильтр

lagts

Объект временного ряда задержки

leadts

Объект серии времени подготовки

peravg

Среднее периодическое

smoothts

Плавные данные

tsmovavg

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

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

Функция

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

convertto

Как указано

resamplets

Как указано

toannual

Ежегодный

todaily

Ежедневно

tomonthly

Ежемесячно

toquarterly

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

tosemi

Раз в полгода

toweekly

Еженедельно

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

Сначала создайте объект финансового временного ряда из предоставленного 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 со значениями, рассчитанными линейным методом:

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 в нормально распределенный с использованием преобразования Бокса-Кокса:

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) 

Преобразование Box-Cox

Plot for Box-Cox transformed data

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

При проверке содержимого результирующего объекта bc_whrl, вы находите объект, идентичный исходному объекту whrl но содержимое представляет собой преобразованный ряд данных. Если у вас есть программное обеспечение Statistics and Machine Learning Toolbox™, вы можете создать Gaussian 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 ®, перегруженные для работы непосредственно с этими объектами. Перегруженные функции наиболее часто необходимы для работы с данными временных рядов .

См. также

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

Связанные темы