SET SEED = 210673. SET MXLOOPS = 10000. MATRIX. COMPUTE N = 168. COMPUTE r = MAKE(4,4,1). COMPUTE mean1 = 40. COMPUTE mean2 = 60. COMPUTE mean3 = 63. COMPUTE mean4 = 57. COMPUTE sd1 = 10. COMPUTE sd2 = 30. COMPUTE sd3 = 13.13. COMPUTE sd4 = 9.68. LOOP counter = 1 to 10000. COMPUTE rs = TRUNC(UNIFORM(1,3)*100)/100. END LOOP IF rs(1,1) < 0.7 AND rs(1, 2) < 0.7 AND rs(1, 3) < 0.4. COMPUTE r12 = rs(1,1). COMPUTE r13 = rs(1,2). COMPUTE r14 = rs(1,3). COMPUTE r23 = 0.45. COMPUTE r24 = 0.24. COMPUTE r34 = 0.16. COMPUTE var1 = MAKE(N,1,1). COMPUTE var2 = MAKE(N,1,1). COMPUTE var3 = MAKE(N,1,1). COMPUTE var4 = MAKE(N,1,1). COMPUTE wvector = MAKE(N,1,1). COMPUTE rowindex = 1. LOOP. COMPUTE x1 = (2*UNIFORM(1,1))-1. COMPUTE x2 = (2*UNIFORM(1,1))-1. COMPUTE x3 = (2*UNIFORM(1,1))-1. COMPUTE x4 = (2*UNIFORM(1,1))-1. COMPUTE w = x1*x1 + x2*x2 + x3*x3 + x4*x4. DO IF w <= 1. COMPUTE var1(rowindex, 1) = x1. COMPUTE var2(rowindex, 1) = x2. COMPUTE var3(rowindex, 1) = x3. COMPUTE var4(rowindex, 1) = x4. COMPUTE wvector(rowindex, 1) = w. COMPUTE rowindex = rowindex+1. END IF. END LOOP. COMPUTE wvector = SQRT((-2*ln(wvector))/wvector). COMPUTE var1 = var1&*wvector. COMPUTE var2 = var2&*wvector. COMPUTE var3 = var3&*wvector. COMPUTE var4 = var4&*wvector. COMPUTE r(1,2) = r12. COMPUTE r(2,1) = r12. COMPUTE r(1,3) = r13. COMPUTE r(3,1) = r13. COMPUTE r(1,4) = r14. COMPUTE r(4,1) = r14. COMPUTE r(2,3) = r23. COMPUTE r(3,2) = r23. COMPUTE r(2,4) = r24. COMPUTE r(4,2) = r24. COMPUTE r(3,4) = r34. COMPUTE r(4,3) = r34. print r. COMPUTE r = CHOL(r). COMPUTE x_cor = {var1, var2, var3, var4}. COMPUTE x_cor = x_cor*r. COMPUTE x_cor(:,1) = (x_cor(:,1)*sd1)+mean1. COMPUTE x_cor(:,2) = (x_cor(:,2)*sd2)+mean2. COMPUTE x_cor(:,3) = (x_cor(:,3)*sd3)+mean3. COMPUTE x_cor(:,4) = (x_cor(:,4)*sd4)+mean4. Compute x_cor(:, 2) = (x_cor(:, 2))&**2. Compute Highest = CMAX(x_cor(:, 2))/100. Compute x_cor(:, 2) = rnd(x_cor(:, 2)/Highest). SAVE {x_cor} /OUTFILE = * /VARIABLES = spai obq suis pswq. END MATRIX.