Я пытаюсь понять связь между спектральной плотностью временного ряда и его дисперсией.Из того, что я понимаю, интеграл спектральной плотности должен быть равен дисперсии.По крайней мере, в соответствии с большинством лекционных заметок, таких как эти .
, я, однако, изо всех сил пытаюсь повторить этот вывод.Допустим, я генерирую простую серию 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);