Функции преобразования данных и преобразования частоты преобразуют ряды данных в другой формат.
Функции преобразования данных
Функции преобразования частоты
|
Функция |
Новая частота |
|---|---|
|
Как указано | |
|
Как указано | |
|
Ежегодный | |
|
Ежедневно | |
|
Ежемесячно | |
|
Ежеквартально | |
|
Раз в полгода | |
|
Еженедельно |
В качестве примера посмотрите на 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

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

Эти примеры дают представление о том, что можно сделать с объектом финансового временного ряда. Эта панель инструментов предоставляет некоторые функции MATLAB ®, перегруженные для работы непосредственно с этими объектами. Перегруженные функции наиболее часто необходимы для работы с данными временных рядов .
ascii2fts | boxcox | convertto | datestr | diff | fillts | filter | fints | fts2mat | ftsbound | lagts | leadts | peravg | resamplets | smoothts | toannual | todaily | tomonthly | toquarterly | tosemi | toweekly | tsmovavg