본문 바로가기

방법론 공부/계량통계 방법론

[STATA] set memory, set more on/off, set seed - 데이터 메모리 및 출력 설정

set은 데이터를 처리하기에 앞서 이것저것 메모리, 변수의 갯수 등 관련 설정을 해두는 데에 유용한 command입니다. 그 중 몇 가지를 소개하겠습니다.



set mem command를 통해 데이터를 탑재할 메모리의 용량을 설정합니다. 이는 데이터 처리 속도와도 연관되는데, 필요한 메모리 이상으로 메모리를 설정했을 경우, 자료 처리 속도를 늦추게 되니 필요한 만큼만 설정해놓는 것이 좋습니다. 기본으로 설정된 메모리는 10 MB 입니다. 아래는 예시.


set mem 25m


한편, 필요한 작업을 모두 한 다음에는 STATA를 한번 닫고 다시 열거나, 메모리를 깨끗이하고 다시 메모리 상한을 10 MB로 설정해주어야 합니다. 그럼 내가 데이터를 얼마나 쓸지 어떻게 아느냐... 일일이 계산할 필요는 없고 갖고 있는 dataset의 크기가 20MB 정도일 경우, 25MB 정도로 설정하면 알맞습니다. 만약에 "no room to..."라는 에러메시지가 나타나면 데이터 메모리를 더 늘려서 다시 설정해주면 됩니다.




STATA 작업을 하다보면 출력창의 크기 때문에 내용이 다 표시가 되지 않고 스페이스바를 눌러서 나머지 결과를 스크린에 표시해야 하는데, set more on/off command를 통해 이와 관련된 설정을 할 수 있습니다. 기본 설정은 set more on이며, 다음의 command는 화면에서 출력이 끊기지 않게 해줍니다.


set more off




마지막으로 set seed를 통해 난수(random number)를 생성시 random seed를 설정할 수 있습니다. 이 값을 토대로 난수들이 생성되기 때문에, 하나의 seed값을 설정하면 같은 집합의 값들이 추출됩니다. 어떤 값이 좋은 seed값인지는 여러 번 반복을 통해 알아내야 합니다. 기본 설정은 1000입니다. 


set seed 744712057


이렇게 설정된 seed값을 토대로 이후 runiform() 혹은 rnormal()의 command를 실행시켰을 때 일정한 규칙에 따른 유사 난수(pseudorandom-number)를 생성하게 되는 것이지요.


한편, 이 seed를 계속해서 새로 설정해주는 것은 지양해야 하고, 처음에 seed값을 1로 설정하고 그 다음을 2로, 3으로 설정하는 등 일정한 패턴을 보이게 설정해서는 안됩니다. 가장 좋은 방법은 seed값을 모든 숫자들을 다 쓸 때까지 한번만 설정하고, 그 이후에야 새로 설정하는 것입니다.


이렇게 seed값이 설정되면 이를 통해 추출되는 숫자들이 일정한 패턴을 보이기 때문에, 처음에 10000개의 숫자를 추출하고 이후에 별개로 10000개의 숫자들을 다시 추출할 때 c(seed) command를 알아두면 좋습니다. 예컨대 


display c(seed)


를 통해 나온 값이 X075bcd151f123bb5159a55e50022865746ad이라 할 때, 이를 이용해 이후에 seed값을 설정할 때에는


set seed X075bcd151f123bb5159a55e50022865746ad


라고 입력하면 처음 seed값을 통해 추출된 10001번째 숫자부터 새로 10000개의 숫자를 얻을 수 있습니다.


1) 컴퓨터는 스스로 아무 규칙없이 값을 생성하지는 않기 때문에, 이때 생성된 값들은 완전히 랜덤하지는 않고 일종의 알고리즘을 따릅니다. 때문에 이를 유사 난수라 부르는데, 좋은 난수를 생성하려면 {0, 1, . . . , 2,147,483,647} 중에 이 값을 잘 설정해주어야 합니다. 예컨대 같은 값이 너무 많이 나오거나, 짝수만 너무 많이 나오거나, 큰 값만 너무 많이 나오면 난수가 잘 생성되었다고 볼 수 없겠지요. 




이 포스팅이 마음에 드셨다면 공감 버튼을 눌러주세요

로그인 하지 않으셔도 공감하실 수 있답니다.