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

Введение

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

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

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

Удаление линейных тенденций из данных

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

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

t = 0:300;
dailyFluct = gallery('normaldata',size(t),2); 
sdata = cumsum(dailyFluct) + 20 + t/100;

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

mean(sdata)
ans = 39.4851

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

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

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

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

Найдите среднее число detrended данных.

mean(detrend_sdata)
ans = 1.1425e-14

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

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

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)');

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

| | |

Была ли эта тема полезной?