我正在做一个项目,我们必须在其中进行一些模拟。我现在想使用该RandNormal
函数,在给定均值向量和协方差矩阵的情况下生成多元法线数据。对于协方差矩阵,我们必须使用不同的参数,所以不是直接将值放入,我只想将变量名称放入矩阵中(因此我们不必手动进行计算)。
我们得到这个错误:
错误:(执行)字符参数应该是数字。
这是我们的代码。数据集Simulatie
还包含在 this 中定义的变量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};
效果很好,但是当我们将其更改为变量名时,它会出错。我们进行了一些谷歌搜索,但找不到解决方案,谁能帮助我们:) 这似乎是一个如此愚蠢、易于修复的错误,但我们就是没有成功!
提前致谢。