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

Введение

Функция 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 object. The axes object 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 object. The axes object contains 4 objects of type line. These objects represent Original Data, Trend, Detrended Data, Mean of Detrended Data.

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

| | |