exponenta event banner

Остаточный анализ с автокорреляцией

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

Создайте набор шумных данных, состоящий из полинома 1-го порядка (прямой линии) в аддитивном белом гауссовом шуме. Аддитивный шум представляет собой последовательность некоррелированных случайных величин, следующих за распределением N (0,1). Это означает, что все случайные величины имеют среднее значение нуля и единичную дисперсию. Установите для генератора случайных чисел значения по умолчанию для воспроизводимых результатов.

x = -3:0.01:3;
rng default
y = 2*x+randn(size(x));
plot(x,y)

Figure contains an axes. The axes contains an object of type line.

Использовать polyfit чтобы найти линию наименьших квадратов для шумных данных. Постройте график исходных данных вместе с наименьшими квадратами.

coeffs = polyfit(x,y,1);
yfit = coeffs(2)+coeffs(1)*x;

plot(x,y)
hold on
plot(x,yfit,'linewidth',2)

Figure contains an axes. The axes contains 2 objects of type line.

Найдите остатки. Получают автокорреляционную последовательность остатков до запаздывания 50.

residuals = y - yfit;
[xc,lags] = xcorr(residuals,50,'coeff');

При проверке автокорреляционной последовательности необходимо определить наличие признаков автокорреляции. Другими словами, необходимо определить, выглядит ли последовательность автокорреляции образца как последовательность автокорреляции белого шума. Если автокорреляционная последовательность остатков выглядит как автокорреляция процесса белого шума, вы уверены, что ни один из сигналов не избежал вашей посадки и оказался в остатках. В этом примере используйте 99% -ный интервал достоверности. Для построения доверительного интервала необходимо знать распределение значений автокорреляции образца. Также необходимо найти критические значения на соответствующем распределении, между которыми лежит 0,99 вероятности. Поскольку распределение в данном случае является гауссовым, можно использовать функцию комплементарной обратной ошибки ,erfcinv. Взаимосвязь между этой функцией и обратной гауссовой кумулятивной функцией распределения описана на справочной странице для erfcinv.

Найдите критическое значение для 99% -ного интервала достоверности. Используйте критическое значение для построения нижней и верхней доверительных границ.

conf99 = sqrt(2)*erfcinv(2*.01/2);
lconf = -conf99/sqrt(length(x));
upconf = conf99/sqrt(length(x));

Постройте график автокорреляционной последовательности вместе с 99% -ными интервалами достоверности.

figure

stem(lags,xc,'filled')
ylim([lconf-0.03 1.05])
hold on
plot(lags,lconf*ones(size(lags)),'r','linewidth',2)
plot(lags,upconf*ones(size(lags)),'r','linewidth',2)
title('Sample Autocorrelation with 99% Confidence Intervals')

Figure contains an axes. The axes with title Sample Autocorrelation with 99% Confidence Intervals contains 3 objects of type stem, line.

За исключением нулевого запаздывания, значения автокорреляции выборки лежат в пределах 99% -определенности для автокорреляции последовательности белого шума. Из этого можно сделать вывод, что остатки - белый шум. Более конкретно, нельзя отвергать, что остатки являются реализацией процесса белого шума.

Создайте сигнал, состоящий из синусоидальной волны плюс шум. Данные дискретизируются при частоте 1 кГц. Частота синусоидальной волны составляет 100 Гц. Установите для генератора случайных чисел значения по умолчанию для воспроизводимых результатов.

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
rng default
x = cos(2*pi*100*t)+randn(size(t));

Используйте дискретное преобразование Фурье (DFT) для получения наименьших квадратов, соответствующих синусоидальной волне с частотой 100 Гц. Оценка амплитуды методом наименьших квадратов в 2/N раз превышает коэффициент ДПФ, соответствующий 100 Гц, где N - длина сигнала. Действительная часть - амплитуда косинуса при 100 Гц, а мнимая часть - амплитуда синуса при 100 Гц. Наименьший квадрат соответствует сумме косинуса и синуса с правильной амплитудой. В этом примере ячейка 101 DFT соответствует 100 Гц.

xdft = fft(x);
ampest = 2/length(x)*xdft(101);
xfit = real(ampest)*cos(2*pi*100*t)+imag(ampest)*sin(2*pi*100*t);

figure

plot(t,x)
hold on
plot(t,xfit,'linewidth',2)
axis([0 0.30 -4 4])
xlabel('Seconds')
ylabel('Amplitude')

Figure contains an axes. The axes contains 2 objects of type line.

Найдите остатки и определите последовательность автокорреляции образца до запаздывания 50.

residuals = x-xfit;
[xc,lags] = xcorr(residuals,50,'coeff');

Постройте график автокорреляционной последовательности с 99% -ными интервалами достоверности.

figure

stem(lags,xc,'filled')
ylim([lconf-0.03 1.05])
hold on
plot(lags,lconf*ones(size(lags)),'r','linewidth',2)
plot(lags,upconf*ones(size(lags)),'r','linewidth',2)
title('Sample Autocorrelation with 99% Confidence Intervals')

Figure contains an axes. The axes with title Sample Autocorrelation with 99% Confidence Intervals contains 3 objects of type stem, line.

Опять же, вы видите, что за исключением нулевого запаздывания, значения автокорреляции образца лежат в пределах 99% -контрастности для автокорреляции последовательности белого шума. Из этого можно сделать вывод, что остатки - белый шум. Более конкретно, нельзя отвергать, что остатки являются реализацией процесса белого шума.

Наконец, добавьте еще одну синусоидальную волну с частотой 200 Гц и амплитудой 3/4. Установите только синусоидальную волну при 100 Гц и найдите автокорреляцию образца остатков.

x = x+3/4*sin(2*pi*200*t);
xdft = fft(x);
ampest = 2/length(x)*xdft(101);
xfit = real(ampest)*cos(2*pi*100*t)+imag(ampest)*sin(2*pi*100*t);
residuals = x-xfit;
[xc,lags] = xcorr(residuals,50,'coeff');

Постройте график автокорреляции образца вместе с 99% -ными интервалами достоверности.

figure

stem(lags,xc,'filled')
ylim([lconf-0.12 1.05])
hold on
plot(lags,lconf*ones(size(lags)),'r','linewidth',2)
plot(lags,upconf*ones(size(lags)),'r','linewidth',2)
title('Sample Autocorrelation with 99% Confidence Intervals')

Figure contains an axes. The axes with title Sample Autocorrelation with 99% Confidence Intervals contains 3 objects of type stem, line.

В этом случае значения автокорреляции явно превышают 99% - пределы достоверности для автокорреляции белого шума при многих лагах. Здесь можно отвергнуть гипотезу, что остатки являются последовательностью белого шума. Подразумевается, что модель не учитывает весь сигнал и поэтому остатки состоят из сигнала плюс шум.