BookmarkSubscribeRSS Feed

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

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 777

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

 

 

 안녕하세요^^

 

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

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

 

 

 

가중평균(weighted average)

 

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

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

 

4HFkv2JeWJzPUAAAAASUVORK5CYII_.png

 

 

 

 

 

▶ 예제데이터 생성하기

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

 

GXZv0AAAAASUVORK5CYII_.png

 

 

ZFUvUyXAAAAAElFTkSuQmCC.png

 

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

 

• Value는 normal 분포에서 seed를 135로 설정한 값에 2983을 곱하여 생성합니다.

 

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

 

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

 

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

 

 

 

 

 

▶ PROC MEANS 프로시저 이용하기

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

 

DADMdbezsqBSyMwJGjvOjs2FGAC0uAsr7azmhBQArInnrAAMgVcDAQxhVljxPBSArVWFlX_yXOXx8ffnegs_3gXAEnzqAoAh8AQ7.png

 

성별을 by 문장에서 구분

 

8BR99mOmiChQsAAAAASUVORK5CYII_.png

 

 

 

▷ coding 1

 

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

 

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

 

TUAAAAASUVORK5CYII_.png

 

 성별을 class 문장에서 구분

 

6Ct0Bc_rlnYAAAAASUVORK5CYII_.png

 

 

 

 

 

 

 

 

 

▷ coding 2

 

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

 

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

 

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

 

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

 

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

 

 

 

 

▷ 결과

 

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

 

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

 

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

 

 

 

 

 

▶ PROC UNIVARIATE 프로시저 이용하기

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

 

DxehwBnzoGkrjAB1Kenv4D3KATwVPUrKkAAAAASUVORK5CYII_.png

 

wqsyAACLEMwAMBmCGQAmQzADwGQIZgCYDMEMAJMhmAFgMrt8HfPTZ88vz47h8ZtvXB6d09H25yzOPq8i3mACABjGpQwAmMrd3f8H.png

 

 

============================================================

 

 

Q9Iyrr8ajUAGgAAAABJRU5ErkJggg__.png

 

8fKo77deTxfwgAAAAASUVORK5CYII_.png

 

 

 

 

▷ coding 1

 

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

 

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

 

 

 

 

▷ coding 2

 

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

 

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

 

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

 

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

 

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

 

 

 

 

 

 

▷ 결과

 

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

 

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

 

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

 

 

 

 

 

▶ PROC SQL 사용하기

 

8BRfeEyn7wnzoAAAAASUVORK5CYII_.png

 

fH6PajZ_jEwAAAABJRU5ErkJggg__.png

 

 

 

▷ coding

 

• proc sql로 value와 weight를 계산하여 가중평균을 구할 수 있습니다.

 

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

 

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

 

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

 

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

 

 

 

 

▷ 결과

 

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

 

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

 

 

 

 

 

 

 

 

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

 

감사합니다.

 

 

 

Version history
Last update:
‎06-17-2020 09:51 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags