Estoy tratando de eliminar la estacionalidad de mis datos utilizando el análisis de Fourier en MATLAB. Siguiendo este post https://stackoverflow.com/questions/19285684/fast-fourier-transform-for-deasonalizing-data-in-matlab?answertab=oldest#tab-top Se me ocurrió este código:
clear;
clc;
close all;
%
load(fullfile(matlabroot,'examples','econ','Data_Accidental.mat'))
%
y = Data;
T = length(y);
years = linspace(1973,1979,T);
ts = y;
points_in_year = 12;
%
tim = (dates - dates(1))/(dates(2)-dates(1)); % <-- acquisition times for your *new* data, normalized
NFpick = [2 7 13]; % <-- channels you picked to build the detrending baseline (peaks to be eliminated)
% Compute the trend
mu = mean(ts);
Nchannels = length(ts); % <-- size of time domain data
Mpick = 2*length(NFpick);
X(:,1:2:Mpick) = cos(2*pi*(NFpick-1)'/Nchannels*tim')';
X(:,2:2:Mpick) = sin(-2*pi*(NFpick-1)'/Nchannels*tim')';
X = [ones(T,1), X];
beta = X\ts;
trend = X*beta;
detrended = y - trend + mu;
figure
plot(dates,detrended)
Nótese que intento evitar el uso de fft. Mi problema es que no estoy obteniendo la misma respuesta que https://www.mathworks.com/help/econ/seasonal-adjustment.html incluso cambiando los canales correspondientes a los picos que quiero eliminar.
¿Qué hay de malo en mi enfoque?
¿Cómo debería cambiar mi código para eliminar la estacionalidad utilizando el análisis de Fourier?
1 votos
A primera vista, se trata demasiado de revisión de código (fuera de tema) y demasiado poco de estadística (dentro de tema). ¿Podría ayudarnos formulando su pregunta más en términos de conceptos y problemas estadísticos y menos en términos de código?
0 votos
Gracias por la rápida respuesta. Mi pregunta es ¿cómo puedo eliminar la estacionalidad de series temporales como la del ejemplo utilizando el análisis de Fourier? ¿Es posible obtener la misma respuesta con el análisis de Fourier que utilizando un filtro estacional estable?
1 votos
A mí me sigue pareciendo que se trata de código.