Функции преобразования данных и преобразования частоты преобразуют ряд данных в другой формат.
Функции преобразования данных
Функции частотного преобразования
Функция |
Новая частота |
---|---|
Как указано | |
Как указано | |
Ежегодный | |
Ежедневно | |
Ежемесячно | |
Ежеквартально | |
Раз в полгода | |
Еженедельно |
В качестве примера рассмотрим 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] ...
Заполните все отсутствующие значения, обозначенные NaN
s в 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)
Преобразование Бокс-Кокс
Столбчатая диаграмма сверху представляет функцию распределения вероятностей заполненного ряда данных, f_whrl
, который является исходным рядом данных whrl
с отсутствующими значениями, интерполированными с помощью метода Linear. Распределение наклонено налево (обычно не распределено). Столбчатая диаграмма внизу имеет меньший наклон налево. Если вы строите график функции распределения вероятностей (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]...
Сглаживайте заполненный ряд данных с помощью метода 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