본문 바로가기

SAS

6-1강 - 자료의 정리 및 요약 1 (MEANS, UNIVARIATE)

SAS에서 기술 통계를 위한 주요 절차 (기술 통계를 나타내는 procedure) 
 => MEANS, UNIVARIATE, FREQ, GCHART, GPLOT, CORR

 

1. MEANS

0) 소개

일변량 자료의 평균, 표준편차, 최대, 최소 등의 정보를 제공

(UNIVARIATE처럼 여러가지 기술 통계량이 나온다.) 

 

1) 문법

1> 기본 문법

PROC MEANS <option-list> ;

2> 그 외
VAR variables : 분석하고자 하는 변수 지정 (지정하지 않으면 모든 변수에 대한 MEANS를 출력해서 결과가 길어진다.)
BY variables : BY 변수의 수준별로 결과 출력 (성별 변수이면 M에 대해 따로, F에 대해 따로 출력) (SORT되어 있어야함) 
- OUTPUT OUT=SAS-data-set keywords : 저장 장소 지정 (사용 가능한 keyword는 조금 뒤에 언급하겠습니다.)

3> option-list

- DATA SAS-dataset : 분석하고자 하는 데이터 세트 명시 
- NOPRINT : data-set만 구하고 결과를 출력시키지 않음 (이게 없으면 원래 자동 출력)

 

cf> UNIVARIATE와의 차이점

UNIVARIATE는 많은 통계량이 자세하게 나오고

MEANS는 간단하게 나온다.

 

2) PROC MEANS에서 디폴트로 출력되는 통계량들


N (자료의 수) Mean (평균) Std Dev (표준편차) Minimum (최소값) Maximum (최대값)

 

3) 예제

1> 예시 1

- MEANS 자체가 자동으로 출력을 하니 PRINT 문과 함께 2개의 결과를 출력한다.

- CLASS : BY와 유사한데 SORT없이 사용할 수 있다.

 

2> 예시 2 (output관련)

- MAXDEC : 소수점 몇째짜리까지 표현할 지

- max mean min cv : 나타내고 싶은 통계량 지정 (default : N, Mean, Std Dev, Minimum, Maximum)

- OUTPUT OUT=scoreout : scoreout이라는 dataset 생성

- mean (age score)=m_age m_score : 기존 age와 score의 평균 이름을 m_age, m_score로 변경

- score는 MEANS에서 출력하고(자동), scoreout은 PRINT에서 출력되었다.

- PRINT 결과 우리가 모르는 변수 '_TYPE_', '_FREQ_'가 나왔다. 이를 자동 생성 변수라고 한다.

  • _TYPE_ : class를 dept와 gender로 나누었는데 [0은 아무것도 분류하지 않은 것] [1은 첫 번째 변수 gender로 나눈 것] [2는 dept로 나눈 것] [3부터는 교차해서 같이 구분한 것] 
  • _FREQ_ : 그래서 _TYPE_에 따라 각각 몇 개의 항목이 있는가? (빈도를 의미)

cf> output의 keyword

 

 


 

2. UNIVARIATE

0) 소개

1>일변량 자료에서 다음의 정보를 제공
- 자료의 평균, 표준편차, 분산 등
- 중앙값과 사분위수, 최대, 최소
- 극단 값들 (outlier)
- 분포의 형태를 파악할 수 있는 여러 가지 그림

 

1) 문법

1> 기본 문법

PROC UNIVARIATE <option-list>:

2> 그 외
VAR variables :  분석하고자 하는 변수 지정 
BY variables :  BY 변수의 수준별로 결과 출력 (BY 대신에 정렬이 필요 없는 CLASS를 써도 된다.)
OUTPUT OUT=SAS-data-set keywords : 저장 장소 지정

3> option-list

- DATA = SAS-data-set : 분석하고자 하는 데이터 세트 명시
- PLOT :  줄기-잎 그림, 상자그림, 정규분포 분위수대조도 등을 그려준다 (MEANS와 달리 그림을 그릴 수 있다.)
- FREQ : 도수분포표 작성 
- NORMAL : 정규성 검정을 위한 검정 통계량 값 계산 (정규 분포를 따르면 어떻게 되는지, 정규성 검정)
- HISTOGRAM : 히스토그램 그리기 (기억하기 히스토그램은 PROC에 있는 게 아니라 UNIVARIATE 내부 옵션에 있다.)

 

2) 예제

1> 예제 1 (결과 부분은 UNIVARIATE 부분을 제외하고 histogram만 캡쳐했습니다.)

- 'class gender'를 해야 위 그림처럼 한 그림 안에 2개의 histogram을 그린다.

- by는 한 과정을 끝내고서 순차적으로 진행하기 때문에 histogram을 각각 그린다.

- slash('/')의 의미 : slach('/') 뒤에 오는 건 해당 명령어의 옵션들을 의미한다.

- histogram의 option들

  • outhistogram=변수 : histogram을 해당 변수에 저장 원래 밖으로 꺼내갈 때 out이나 output이란 용어 사용
  • cfill=color : histogram 내부를 채울 색 설정
  • vaxis=숫자1 to 숫자2 by 숫자3 : vaxis는 y축을 의미 ('숫자1'부터 '숫자2'까지 '숫자3' 단위로)
  • midpoints=숫자1 to 숫자2 by 숫자3 : x축을 의미 (숫자 형식은 vaxis와 동일)
  • nrow=2 ncol=1 : 2개의 행과 1개의 열로 2개의 histogram을 그린다. (총 개수를 잘 만들어야한다.)

2> 예제 2

위에서 만든 outhisto를 PRINT로 출력한다. (histogram의 결과를 출력)

- label : 별칭 만드는 명령어인데 왜 사용하는가? 안 쓰면 원래 변수가 들어간다.

3> 예제 3

UNIVARIATE에서 특정 변수를 가지고 무언가 만들고 싶다.

=> VAR과 OUTPUT OUT을 이용한다.

(결과의 윗 부분은 UNIVARIATE를 출력하고 맨 밑에 univ_out이라는 OUTPUT을 따로 PRINT했다.)

 

- var super age : super와 age 변수를 이용하겠다. (추후 output에서 이용할 예정

- output out = univ_out : univ_out이라는 dataset을 새로 만든다.

- mean=s_mean a_mean std=s_std a_std : super와 age에 대한 평균과 표준편차를 s_mean a_mean s_std a_std로 설정

(super가 첫 번째 변수니까 첫 번째에 있는 s_mean이 super에 대한 평균이다.) (즉, 순서대로 들어간다.)

- pctlpts=33.3 66.6 : pctipts는 몇 퍼센트에 있는 data의 값을 의미 (그래서 33.3%, 66.6%에 해당하는 값을 의미)

(pctlpts : percent line points)

 - pctlpre=s_p a_p : 접두어를 어떻게 붙일 지 ('s_p33.3' 와 같은 형식으로 column 설정이 된다.) (접미어는 pctlname)

- 위와 같이 univ_out이라는 dataset을 만든 뒤 PRINT로 출력한다.

 

4> 예제 4

위의 방법과 달리 그림을 손 쉽게 나오게 하는 명령어가 있다. (PLOT)

- PLOT을 썼더니 UNIVARIATE까지는 유사하나 중간 중간에 여러 그림이 등장한다.

- histogram, 상자-수염 그림, 정규 확률도가 PLOT을 이용해 출력할 수 있다. 

- 상자-수염을 보니 여자는 평균이 중위수보다 크다

중위수(중간값은) 최빈값에 영향을 받는다. => 중간값은 최빈값에 가깝다.(평균은 최빈값과 멀다.)

=> 아래 두 그림 중 오른쪽 그림이다 => 오른쪽 꼬리가 길다.

- 여자의 정규도(정규성 검정)를 보면 직선에 가깝다 => 정규 분포에 가깝다

 

 

cf> 상자수형

상위 1/4, 하위 1/4

중간의 다이아몬드가 평균을 의미