6

空間と時間におけるプロセス(Y)の進化を説明する次の確率モデルがあります。DsとDtは、空間(x軸とy軸の2D)と時間(t軸の1D)のドメインです。このモデルは通常、混合効果モデルまたは変動成分モデルとして知られています。

ここに画像の説明を入力してください

私は現在、次のようにYを開発しています。

%# Time parameters
T=1:1:20; % input
nT=numel(T);

%# Grid and model parameters
nRow=100;
nCol=100;


[Grid.Nx,Grid.Ny,Grid.Nt] = meshgrid(1:1:nCol,1:1:nRow,T);

xPower=0.1;
tPower=1;
noisePower=1;
detConstant=1;

deterministic_mu = detConstant.*(((Grid.Nt).^tPower)./((Grid.Nx).^xPower));

beta_s = randn(nRow,nCol); % mean-zero random effect representing location specific variability common to all times

gammaTemp = randn(nT,1);

for t = 1:nT
    gamma_t(:,:,t) = repmat(gammaTemp(t),nRow,nCol); % mean-zero random effect representing time specific variability common to all locations
end

var=0.1;% noise has variance = 0.1
for t=1:nT
    kappa_st(:,:,t) = sqrt(var)*randn(nRow,nCol);
end

for t=1:nT
    Y(:,:,t) = deterministic_mu(:,:,t) + beta_s + gamma_t(:,:,t) + kappa_st(:,:,t);
end

私の質問は次のとおりです。

  1. Yの式でデルタを生成し、カッパとデルタの差を生成するにはどうすればよいですか?
  2. 私がYを正しく生成しているかどうかを、Matlabを使用したいくつかの図を通して説明するのを手伝ってください。

さらに情報や説明が必要な場合はお知らせください。ありがとう。

4

2 に答える 2

4

まず、コードを書き直して、もう少し効率的にしました。の線形間隔のグリッドを生成しx、このグリッド内のすべてのポイントの計算yt実行しているようです。3Dグリッド(およびそれで定義されたすべての変数)は、解像度が上がると非常に大量のメモリを消費する可能性があるため、このアプローチには、達成可能な最大グリッド解像度に厳しい制限があります。s実装しているモデルの複雑さとサイズが大きくなる場合(多くの場合そうなります)、これをすべてとの行列/ベクトル入力を受け入れる関数に入れることをお勧めしますt。これは、この点でもう少し柔軟になります-そうしないとメモリに収まらないデータの「ブロック」の処理は、その方法ではるかに簡単になります。

次に、ノイズが「白」である必要があるため、代わりにでdelta_st用語を生成しました。今、私はその最後のものについて非常に確信が持てず、あなたがリンクした論文を読む時間がありませんでした-どのページで私が関連するセクションを見つけることができるか教えていただけますか?randrandndelta_st

さて、コード:

%# Time parameters
T  = 1:1:20; % input
nT = numel(T);

%# Grid and model parameters
nRow = 100;
nCol = 100;

% noise has variance = 0.1
var = 0.1;

xPower = 0.1;
tPower = 1;
noisePower  = 1;
detConstant = 1;



[Grid.Nx,Grid.Ny,Grid.Nt] = meshgrid(1:nCol,1:nRow,T);

% deterministic mean
deterministic_mu = detConstant .* Grid.Nt.^tPower ./ Grid.Nx.^xPower;

% mean-zero random effect representing location specific 
% variability common to all times
beta_s = repmat(randn(nRow,nCol), [1 1 nT]);

% mean-zero random effect representing time specific 
% variability common to all locations
gamma_t = bsxfun(@times, ones(nRow,nCol,nT), randn(1, 1, nT));


% mean zero random effect capturing the spatio-temporal 
% interaction not found in the larger-scale deterministic mu 
kappa_st = sqrt(var)*randn(nRow,nCol,nT);


% mean zero random effect representing the micro-scale
% spatio-temporal variability that is modelled by white
% noise (i.i.d. at different time steps) in Ds·Dt
delta_st = noisePower * (rand(nRow,nCol,nT)-0.5);


% Final result: 
Y = deterministic_mu + beta_s + gamma_t + kappa_st + delta_st;
于 2012-10-02T13:02:55.590 に答える
1

実装では、ベータ、ガンマ、カッパを白であるかのようにサンプリングします(たとえば、各(x、y、t)での値は独立しています)。用語の説明は、これが事実であることを意味するものではないことを示唆しています。デルタはホワイトノイズをキャプチャすることになっているように見えますが、他の用語はそれぞれのドメインの相関関係をキャプチャします。たとえば、gamma(t_1)とgamma(t_1 + 1)の間にはゼロ以外の相関関係があります。

分散var_gとガンマ(t)とガンマ(t + 1)間の相関cor_gを使用して、ガンマを定常ガウスマルコフ過程としてモデル化する場合は、次のようなものを使用できます。

gamma_t = nan( nT, 1 );
gamma_t(1) = sqrt(var_g)*randn();
K_g = cor_g/var_g;
K_w = sqrt( (1-K_g^2)*var_g );
for t = 2:nT,
   gamma_t(t) = K_g*gamma_t(t-1) + K_w*randn();
end
gamma_t = reshape( gamma_t, [ 1 1 nT ] );

上記のコードのゲインK_gとK_w(およびgamma_t(1)の初期化)に使用した式は、目的の定常分散\ sigma^2_0と1ステップの共分散\sigma^2_1を生成します。

ゲインの公式、および分散と共分散が希望どおりであることのデモンストレーション

上記の実装では、後でbsxfunを使用して項を合計して「repmat」を実行することを前提としていることに注意してください。

Y = bsxfun( @plus, deterministic_mu + kappa_st + delta_st, beta_s );
Y = bsxfun( @plus, Y, gamma_t );

上記のコードはテストしていないため、サンプリングを使用して、隣接するサンプル間の指定された分散と共分散のゼロノイズプロセスが実際に生成されることを確認する必要があります。ベータ版をサンプリングするために、同じ手順を2次元に拡張できますが、原則は基本的に同じです。カッパはマルコフガウス過程として同様にモデル化する必要があると思いますが、3次元すべてで、分散が低く、ミュー、ベータ、ガンマでキャプチャされない高次の効果を表します。

デルタは、ゼロ平均定常ホワイトノイズであると想定されています。分散ノイズのあるガウス分布であると仮定すると、Powerを使用してサンプリングします。

delta_st = sqrt(noisePower)*randn( [ nRows nCols nT ] );
于 2012-10-06T08:50:52.837 に答える