Я пытаюсь сгенерировать некоторые данные временных рядов, используя MATLAB, с помощью модели, которая выглядит следующим образом:
Y (t) = ph * * Y (t-1) +mu + E (t)
Где ph и mu являются константами, а E - нормально распределенным случайным числом (белый шум).Я придумал этот кусок кода, который отлично справляется со своей работой.
E=randn(1,20);mu=1;phi=0.2;Y=zeros(1,20);
Y(1)=mu*phi+mu+E(1)
for t=2:20;
Y(t)=(Y(t-1))*phi+mu+E(t);
endfor; Y=Y'; plot(Y)
Это создает набор значений, где первое использует mu в качестве начального числа, а затем генерируются следующие 19 значений.на основе выходных данных последнего Y.
Это просто идеально, однако, сейчас я пытаюсь использовать различные значения phi range (0,1), чтобы применить точно такой же алгоритм,Я придумал это:
E=randn(1,100);
mu=2; phi=linspace(0.1,0.99,10)';p=(2:10)';Y=zeros(10,100);
Y(:,1)=mu*phi(1)+mu+E(1)
for t=(2:100);
Y(:,t)=(Y(:,t-1))*phi(p)+mu+E(t)
endfor
Что, согласно моей логике, гласит:
«Применять тот же алгоритм, который генерирует один набор Y для каждого значения« p »в phi», поэтому он должен выводить 100 Y для каждого p.
Однако, я получаю только ошибки измерения, и один раз, пока возлюсь с работой, но я только что получил одну длинную матрицу 100 * 100нули и первое значение как правильный результат.Я пытаюсь построить каждый набор Y, чтобы визуализировать влияние фи на модель, но сейчас я сгорел.Есть идеи?Заранее спасибо.
Редактировать: Благодаря Floris SA, финальная программа в итоге была:
E=randn(1,100);
mu=2; phi=linspace(0.1,0.99,100)'; Y=zeros(100,100);
Y(:,1) = mu*phi + mu + E(1);
for t=(2:100);
Y(:,t) = Y(:,t-1).*phi + mu + E(t);
end
Я изменил ее код, чтобы получить другой сюжет с:
for ii = 2:100
semilogy(Y(1,:));hold on; semilogy(Y(ii,:))
end
Что произвело это (именно то, что я искал; на испанском): ![Phi customizing for every Y](https://i.stack.imgur.com/byVyv.png)