Matlab: переход от спектральной плотности к дисперсии - PullRequest
0 голосов
/ 04 марта 2019

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

, я, однако, изо всех сил пытаюсь повторить этот вывод.Допустим, я генерирую простую серию AR (1) с коэффициентом авторегрессии 0,9.

    T = 1000;
rho = 0.9;
dat = zeros(T,1);
for ii = 2:T
    dat(ii) = rho*dat(ii-1)+randn;
end

Затем я продолжаю вычислять спектральную плотность (autocov делает то же самое, что и xcov в наборе инструментов сигнала, который яне имеют. это ковариации рядов с опущением, с дисперсией в середине вектора)

lag = 20;
autocovs = autocov(dat,lag);
lags = -lag:1:lag;
wb = 0:pi/64:pi;
rT = sqrt(length(dat));
weight = 1-abs(lags)/rT;
weight(abs(lags)>rT) = 0; %bartlett weight
for j = 1:length(wb)
    sdb(j) = real(sum(autocovs'.*weight.*exp(-i*wb(j).*lags)))/(2*pi);
end
sdb = sdb;

sdb - функция плотности мощности и, безусловно, правильная форма для AR (1), взвешенный в сторону низких частот: введите описание изображения здесь .Но сумма спектра мощности равна 54,5, а дисперсия моделируемого ряда AR (1) составляет около 5.

Чего мне не хватает?Я понял, что спектральная плотность - это то, как дисперсия ряда распределяется по спектру.Я не уверен, что неправильно понял или сделал ошибку кодирования.Любые хорошие ссылки будут высоко оценены.

Редактировать: Я понял, что, очевидно, суммирование серии "SDB" не принимает интеграл.Чтобы интегрировать между {-pi, pi}, я должен суммировать sdb * (2 * pi / 130) или эквивалентно sdb * (pi / 65), поскольку я смотрю только на сегмент {+ pi}, а sdb симметричен дляотрицательные значения.Мне все еще кажется, что я получаю число, которое больше, чем дисперсия (даже повторная симуляция несколько раз) ... я все еще что-то упускаю?Строка SDB выше становится

sdb(j) = real(sum(autocovs'.*weight.*exp(-i*wb(j).*lags)))/(65);
...