MATLABで分散を逐次計算しようとしてうまくいかなかった話

MATLABで分散を逐次計算しようとしてうまくいかなかった。

分散の逐次計算は

\begin{align}
\sigma_{n+1}^2=\dfrac{n(\sigma_n^2+\mu_n^2)+x_{n+1}^2}{n+1}-\mu_{n+1}^2
\end{align}

で求まる。

以下コード

N=2000;
x=normrnd(0,1,1,N);

mu=zeros(1,N);
sigma=zeros(1,N);
mu(1,1)=x(1,1);

for n=1:1:N-1
    mu(1,n+1)=(n*mu(1,n)+x(1,n+1))/(n+1);
    sigma(1,n+1)=(n*(sigma(1,n)^2+mu(1,n)^2)+x(1,n+1)^2)/(n+1)-mu(1,n+1)^2;
end

figure 
plot(mu);
hold on
plot(sigma);

コメント

タイトルとURLをコピーしました