0

私は、いくつかのシミュレーションを行う必要があるプロジェクトに取り組んでいます。私は今、RandNormal関数を使用して、平均ベクトルと共分散行列が与えられた多変量正規データを生成したいところです。共分散行列については、さまざまなパラメーターを使用する必要があるため、値を直接入力する代わりに、行列に変数名を入力するだけです (手動で計算する必要がありません)。

次のエラーが表示されます。

エラー: (実行) 文字引数は数値でなければなりません。

これが私たちのコードです。データセットSimulatieには、この で定義された変数も含まれていますproc iml

proc iml;
    use Simulatie;
    read all;
    close Simulatie;

    sigma0sq = 2;
    sigma1sq = 3;
    sigma2sq = 1;
    sigma0 = sqrt(sigma0sq);
    sigma1 = sqrt(sigma1sq);
    sigma2 = sqrt(sigma2sq);
    rhoM = 0.7;
    rhoV = 0.5;
    rhoMsigma0sigma1 = rhoM*sigma0*sigma1;
    rhoVsigma0sigma2 = rhoV*sigma0*sigma2;
    rhoVsigma1sigma2 = rhoV*sigma1*sigma2;

    Mean = {0, 0, 0}; /* population means */

    Cov = {sigma0sq rhoMsigma0sigma1 rhoVsigma0sigma2, /* population covariances */
           rhoMsigma0sigma1 sigma1sq rhoVsigma1sigma2,
           rhoVsigma0sigma2 rhoVsigma1sigma2 sigma2sq};

    N = 185; /* sample size */
    call randseed(123);
    X = RandNormal(N, Mean, Cov); /*x is a nx3 matrix */
    SampleMean = mean(X);
    SampleCov = cov(X);
quit;

例を入れてみました

Cov = {3 2 1, 2 4 0,1 0 5};

これは問題なく機能しますが、変数名に変更するとエラーが発生します。グーグルで調べましたが、解決策が見つかりませんでした。誰か助けてください:) ばかげた、簡単に修正できるエラーのように思えますが、うまくいきません!

前もって感謝します。

4

1 に答える 1