2

我试图了解时间序列的谱密度与其方差之间的关系。据我了解,光谱密度的积分应该等于方差。至少根据诸如此类的大多数讲义。

然而,我正在努力复制这一发现。假设我生成了一个自回归系数为 0.9 的简单 AR(1) 系列。

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

0 回答 0