9

次の 2 つの方法を使用してモンテカルロ シミュレーションの一連のパスを生成する間に統計的な違いはありますか (パスとは、正規分布した 350 ポイントのベクトルを意味することに注意してください)。

A)

for path = 1:300000
    Zn(path, :) = randn(1, 350); 
end

またははるかに効率的な B)

Zn = randn(300000, 350);

メソッドAには存在しない、メソッドBの行間に面白い追加の相関関係や依存関係がないことを確認したいだけです.おそらくメソッドBは、Aが1次元である2次元に正常に分散するため、おそらくそれが2つの統計的に異なる?

違いがある場合は、一様分布についても同じことを知る必要があります (つまり、randn ではなく rand)。

4

2 に答える 2

6

@natan (+1) の回答に追加するには、次のコードを実行します。

%# Store the seed
Rng1 = rng;

%# Get a matrix of random numbers
X = rand(3, 3);

%# Restore the seed
rng(Rng1);

%# Get a matrix of random numbers one vector at a time
Y = nan(3, 3);
for n = 1:3
    Y(:, n) = rand(3, 1);
end

%# Test for differences
if any(any(X - Y ~= 0)); disp('Error'); end;

Xと の間に違いはないことに注意してくださいY。つまり、1 つのステップで行列を作成することと、一連のベクトルから行列を作成することに違いはありません。

ただし、私のコードとあなたのコードには違いがあります。randを使用して 1 つのステップでマトリックスを作成すると、列ごとに入力されるため、行ではなく列でマトリックスに入力することに注意してください。ところで、お気づきかどうかわかりませんが、原則として、行ではなく行列の列に対して常にベクトル演算を実行するようにしてください。先日、SO に関する質問への回答で理由を説明しました。詳しくはこちらをご覧ください...

独立/依存の問題に関しては、使用する言語に注意する必要があります。によって生成される数列rand完全に依存しています。大部分の統計テストでは、それらは独立しているように見えますが、理論的には、 によって生成された数列間の依存関係を示す統計テストを構築できrandます。

最後に、Greene の「Econometric Analysis」のコピーを持っている場合、彼はセクション 17.2 で乱数生成についてきちんと説明しています。

于 2013-01-30T07:39:13.050 に答える