Вычитание тренда из данных

Введение

Функция detrend вычитает среднее или наилучшую эмпирическую кривую (в смысле наименьших квадратов) из ваших данных. Если данные содержат несколько столбцов данных, detrend обрабатывает каждый столбец данных отдельно.

Удаление тренда из данных позволяет вам фокусировать свой анализ на колебаниях данных о тренде. Линейный тренд обычно указывает на систематическое увеличение или уменьшение данных. Систематический сдвиг может быть результатом дрейфа датчика, например. Хотя тренды могут быть значимыми, некоторые виды анализа дают лучшее представление после удаления трендов.

Имеет ли смысл удалять эффекты тренда в данных часто зависит от целей вашего анализа.

Удаление линейных трендов из данных

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

Создайте моделируемый набор данных и вычислите его среднее значение. sdata представляет ежедневные изменения цен акций.

rng(20)
t = 0:300;
dailyFluct = randn(size(t));
sdata = cumsum(dailyFluct) + 20 + t/100;

Найдите среднее значение данных.

mean(sdata)
ans = 41.5155

Постройте график и пометьте данные. Обратите внимание на систематическое увеличение цен на акции, которое отображаются данные.

figure
plot(t,sdata);
legend('Original Data','Location','northwest');
xlabel('Time (days)');
ylabel('Stock Price (dollars)');

Figure contains an axes. The axes contains an object of type line. This object represents Original Data.

Применить detrend, который выполняет линейную подгонку к sdata а затем удаляет из него тренд. Вычитание выхода из входа приводит к вычисленной линии тренда.

detrend_sdata = detrend(sdata);
trend = sdata - detrend_sdata;

Найдите среднее значение детрендированных данных.

mean(detrend_sdata)
ans = -8.0497e-15

Как ожидалось, данные без тренда имеет среднее значение очень близкое к 0.

Отображение результатов путем добавления линии тренда, детрендированных данных и ее среднего значения к графику.

hold on
plot(t,trend,':r')
plot(t,detrend_sdata,'m')
plot(t,zeros(size(t)),':k')
legend('Original Data','Trend','Detrended Data',...
       'Mean of Detrended Data','Location','northwest')
xlabel('Time (days)'); 
ylabel('Stock Price (dollars)');

Figure contains an axes. The axes contains 4 objects of type line. These objects represent Original Data, Trend, Detrended Data, Mean of Detrended Data.

См. также

| | |