사이트맵  |  Contact Us
 
홈 > SAS Tech & Tip > SAS Programming
[SAS 프로그래밍] 가중평균 계산하기 2017.11.20
MYSAS 시샵 3773 0
http://www.mysas.co.kr/SAS_tiptech/a_question.asp?b_no=7523&gotopage=8&con=subject&keyword=&cmd=content&bd_no=05&gubun=

[SAS 프로그래밍] 가중평균 계산하기

 

 

 안녕하세요^^

 

이번시간에는 SAS에서 가중평균(weighted average)를 계산하는 방법을 알아보도록 하겠습니다.

우선 가중평균에 대해 알아보겠습니다.

 

 가중평균(weighted average)

 

각각의 자료에 가중치가 있을 때, 가중치를 고려한 평균을 가중평균이라고 합니다.

일반적으로 자료 에 각각 의 가중치가 있을 때, 가중평균은 다음과 같습니다.

 

 

 

 

 

▶ 예제데이터 생성하기

먼저 가중평균을 계산할 예제 데이터를 만들어보겠습니다.

 

 

 

먼저 10개의 자료를 만들기 위해 do 반복문을 사용합니다.


Value normal 분포에서 seed135로 설정한 값에 2983을 곱하여 생성합니다.

Weight는 음의 값이 나오지 않게 생성하기 위해 01 사이의 값을 주는 uniform 분포에서 seed579로 설정한 값에 33을 곱하여 생성합니다.

Gender는 반복 횟수(i)2로 나눈 나머지 값이 0이면 남성(M), 1이면 여성(F)으로 생성합니다.

 

위의 방법으로 생성한 자료는 오른쪽의 자료처럼 나타납니다.

 

 

 

 

 

PROC MEANS 프로시저 이용하기

가중평균을 계산하기 위한 방법으로 proc means 프로시저를 사용할 수 있습니다.

 

 성별을 by 문장에서 구분

 

 

coding 1


특히 성별에 따른 가중평균을 계산하기 위해 gender에 대해 자료를 정렬해야 합니다.

, 성별을 by 변수를 사용하여 지정할 때에만 정렬이 필요하며, class 문장을 사용할 경우 정렬단계를 고려하지 않아도 됩니다.

 

 

 성별을 class 문장에서 구분

 

 

coding 2


proc means 프로시저에 sum, sumwgt, mean 옵션을 입력하여 가중평균을 구할 때 사용하는 분자(가중합), 분모(가중치의 합), 평균(가중평균)을 구할 수 있습니다.

 

weight 문장을 사용하여 가중치 변수를 입력합니다. (weight)

var 문장에는 가중평균을 계산할 변수를 입력합니다. (value)

• 성별에 대한 결과를 얻기 위해 by 문장에 성별을 나타내는 변수를 입력합니다. (gender)

• 또는 class 문장에 성별을 나타내는 변수를 입력하여 같은 결과를 얻을 수 있습니다.

 

 

 ▷ 결과

 

• 합계: 가중평균을 계산할 때 분자에 들어가는 값으로 를 나타내는 가중합 부분입니다.

• 가중합: 가중평균을 계산할 때 분모에 들어가는 값으로 를 나타내는 가중치들의 합 부분입니다.

• 평균: 가중평균을 계산한 값으로 앞서 구한 합계/가중합의 값입니다.

 

 

 

 

 

PROC UNIVARIATE 프로시저 이용하기

가중평균을 계산하기 위한 방법으로 proc univariate 프로시저를 사용할 수 있습니다.

 

 

 

 

 

coding 1

 

PROC MEANS 프로시저를 사용한 가중평균 계산과 동일하게 성별에 따른 가중평균을 계산하기 위해 gender에 대해 자료를 정렬해야 합니다.

, 성별을 by 변수를 사용하여 지정할 때에만 정렬이 필요하며, class 문장을 사용할 경우 정렬단계를 고려하지 않아도 같은 결과를 얻을 수 있습니다.

 

 

coding 2

 

proc univariate 프로시저에 weight 문장을 사용하여 가중평균을 구할 때 사용하는 분자(가중합), 분모(가중치의 합), 평균(가중평균)을 구할 수 있습니다.

 

weight 문장을 사용하여 가중치 변수를 입력합니다. (weight)

var 문장에는 가중평균을 계산할 변수를 입력합니다. (value)

• 성별에 대한 결과를 얻기 위해 by 문장에 성별을 나타내는 변수를 입력합니다. (gender)

• 또는 class 문장에 성별을 나타내는 변수를 입력하여 같은 결과를 얻을 수 있습니다.

 

 

 ▷ 결과


• 관측값 합: 가중평균을 계산할 때 분자에 들어가는 값으로 를 나타내는 부분입니다

• 가중합: 가중평균을 계산할 때 분모에 들어가는 값으로 를 나타내는 가중치들의 합 부분입니다.

• 평균: 가중평균을 계산한 값으로 앞서 구한 합계/가중합의 값입니다.

 

 

 

 

 

 

PROC SQL 사용하기

 

 

 

coding

 

proc sqlvalueweight를 계산하여 가중평균을 구할 수 있습니다.


• 결과에 남겨놓을 변수를 select 문장에 입력하며, select 문장에서 간단한 연산도 가능합니다.

• 성별(gender), (value*weight)의 합을 weight의 합으로 나눈 값을 ‘WeightedAverage’ 변수로 생성합니다.

from 문장에는 가중평균을 계산할 변수들이 있는 데이터셋을 입력합니다.


• 성별에 대한 결과를 얻기 위해 group by 문장에 성별을 나타내는 변수를 입력합니다. (gender)


 

▷ 결과

 

gender: 성별에 따른 가중평균값을 나타냅니다.

  WeightedAverate: 가중평균을 계산한 값입니다.

 

 

 

이상으로 가중평균을 계산하는 프로시저와 sql 방법에 대해 알아보았습니다.

감사합니다.

 

 

 
 
휴대폰 번호
휴대폰 인증번호
 
 [SAS 프로그래밍] 중복된 행(duplicate rows)의 개수 세기
 [SAS 프로그래밍] PCA, 주성분 수를 결정하는 여러가지 PCA방법론