BookmarkSubscribeRSS Feed

[SAS 활용 노하우] IML - Random Number Generation Functions

Started ‎05-29-2022 by
Modified ‎05-29-2022 by
Views 520

 

 

분위수 또는 누적 밀도의 분포를 지정하고 모수를 지정합니다.

일부는 다음과 같이 IML에서 직접 사용할 수 있습니다.

 

 

image.png

 

 

 

J Function

J 함수는 n개의 행과 p개의 열이 있는 행렬을 만들고, J함수의 SYNTAX는 아래와 같습니다.

 

 

J(nrows,ncols,<value>)

 

 J 함수로 행렬 X를 만들고 있습니다.

작은 j 괄호 안에 행 수 2와 열 수 3을 지정하고 모든 요소와 같이 채웁니다.

값 0 선택적 값을 생략하면 기본값 1로 행렬이 채워집니다.

 

X = J(2,3,0)

 

 

 표면적으로는 J 함수가 별로 도움이 되지 않는 것처럼 보일 수 있지만, RANDGEN 서브루틴은 매우 유용합니다.

 

 

 

 

 

 

RANDGEN Subroutine

RANDGEN 서브루틴은 다음 구문을 사용하여 행렬을 난수로 채울 수 있습니다.

 

 

 

CALL RANDGEN(result, dist-name<,parm1><,parm2><,parm3>);

 

 

 

RANDGEN을 호출하기 전에 사용자가 결과 매트릭스를 생성해야 합니다. RANDGEN은 다음 수를 생성합니다.

행렬의 각 셀을 채우는 데 필요한 샘플입니다. 결과 행렬은 숫자여야 하며 숫자가 있어야 합니다.

원하는 샘플 수와 동일한 셀의 수와  지정된 매개 변수의 수는 다음과 같습니다.

분배 예를 들어, Cauchy 분포를 지정하면 모수가 필요하지 않습니다.

정규 혼합물 분포를 지정하려면 세 개의 모수가 필요합니다.

 

 

X = J(2,3,0);
call randgen(X,"Normal",10,2);

 

 

 

 

J 함수를 사용하여 2 x 3인 새로운 행렬 X를 만드는 것을 볼 수 있습니다.

첫 번째 인수인 RANDGEN 서브루틴에 대한 행렬 및 해당 행렬의 모든 요소를 시뮬레이션으로 채웁니다.

분포 이름인 정규 분포를 지정하고 모수인 10과 2를 지정합니다.

LANDGEN 서브루틴과 함께 사용할 수 있는 분포는 매우 다양합니다.

일변량 확률 분포, 물론 온라인 설명서를 확인하여 모수의 사용 방법, 모수의 순서 및 다변량 분포를 확인할 수 있습니다.

 

 

# Univariate Distributions

 

image (4).png

 

 

 

RAND Function

RNORM을 사용하여 R에서와 같이 코드를 벡터화하려는 경우 RANDFUN 함수를 사용하여 다음 구문을 사용하여 임의의 벡터를 시뮬레이션할 수 있습니다.

 

result = RANDFUN(n, dist-name<,parm1><,parm2><,parm3>);

 

# EX

 

X = randfun(10,"Normal",10,2);

 

 

 

Common IML Modules

IML 모듈은 R과 거의 비슷합니다. 예를 들어, ABS() 함수는 다음에서 각 요소의 절대값을 반환합니다.

행렬이며 R 구문과 동일합니다. EXPensiate, LOG, Square Root, MAX, MIN, PROD 및 SUM이 모두 작동합니다.

 

 

image (5).png

 

 

생성, 일부 통계 함수, 상관 관계 및 공분산을 찾는 방법. 평균값을 사용할 수 있습니다.

함수(R의 colMeans와 동일)는 행렬의 각 열의 평균을 취합니다.

QNTL 서브루틴을 사용하여 원하는 quantile을 지정합니다.

Matrix Reshaping

  • REPEAT FUNCTION: REEPT 기능은 R의 RET 기능과 유사합니다.

 

result = REPEAT(matrix, nrow, ncol);

 

OR 

 

result = REPEAT(matrix, freq);

 

다음 코드에는 2x2인 행렬 X가 있습니다.

첫 번째 형태의 REEPT 함수이며 X를 2x2 행렬처럼 반복하고 있습니다.

 

 

Y = repeat (X,2,2);

 

image (6).png

 

REEPT 함수의 첫 번째 형태는 행렬의 행 시간 값을 반복하여 새로운 행렬을 생성합니다.

행과 열에 걸쳐 ncol을 반복합니다. 이 행렬을 반복하면 4x4 행렬이 나옵니다.

마찬가지로 대체 구문을 사용하여 행렬의 각 요소를 반복할 수 있습니다. 두 번째 형태의

REPEAT 함수는 행렬의 각 값이 다음에 지정된 횟수만큼 반복되는 행 벡터를 반환합니다.

 

 

 

 

Y = repeat (X, {2 2 3 3});

 

 

image (7).png

 

 

여기서 첫 번째 요소를 두 번, 두 번째 요소를 두 번, 세 번째와 네 번째를 반복합니다.

각 요소를 세 번 반복하면 행 벡터가 반환됩니다.

 

CONCAT Function

IML에서 문자 데이터로 작업하는 경우 벡터를 연결해야 하는 경우 CONCAT 함수는 다음 구문을 사용합니다

 

result = CONCAT(matrix1, matrix2,…);

 

pre = j(1,3,"data");
post = char(1:3);
result = concat(pre,post);

 

이 두 문자 벡터(전후)를 연결합니다. 결과는 다음과 같은 벡터이며, 이는 다음과 같이 사용될 수 있습니다.

 

Version history
Last update:
‎05-29-2022 10:21 AM
Updated by:
Contributors

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Article Labels
Article Tags