獨斷論

SAS 분산분석 ANOVA - 1 본문

과학과 기술/SAS

SAS 분산분석 ANOVA - 1

부르칸 2021. 8. 3. 08:06

1. 데이터

고혈압 환자들에게 3가지 처치를 하였을때 혈압을 측정하였다.

  • treat1에서는 약을 3가지 종류로 주었고(Drug I, J, K)
  • treat2에서는 biofeedback를 사용하였으며(Present, Absent)
  • treat3에서는 diet에 변화를 주었다(Yes, No)

3 x 2 x 2 ANOVA가 된다.

측정된 데이터의 형태는 위와 같은데 이를 통계분석을 위하여 각 변수를 열로 놓고 observations를 행으로 놓아 변형하면 아래 데이터파일과 같다.

hyper.csv
0.00MB

위 파일의 데이터를 아래와 같이 SAS에서 불러들인다. cell이라는 새로운 변수를 만들어 factor변수를 한데 합치었다. ||는 concatenation 명령이다.

data hyperdat;
	infile "d:\tmp\hyper.csv" delimiter = "," firstobs = 2;
	input biofeed $ drug $ diet $ bp;
	cell = drug||biofeed||diet;
run;

불러들인 데이터를 평균 표준편차 등을 각 factor별로 살펴보면

proc tabulate data=hyperdat;
	class drug biofeed diet;
	var bp;
	table drug*biofeed*diet, bp*(mean std n);
run;

table 명령어에서 표의 행과 열을 나눌때 쉼표( , )를 사용한다.

 

2. Levene's Test

proc anovameans statement에 hovtest option을 수행한다.

proc anova data=hyperdat;
	class cell;
	model bp = cell;
	means cell / hovtest;
run;

각 그룹별로 분산이 다르다고 할만한 충분한 증거가 있지 못하다.

 

3. ANOVA

각 그룹마다 observation수가 같다면 proc anova를 이용할수 있지만 같지 않다면 proc glm을 이용하여야만 한다.

proc anova data = hyperdat;
	class diet drug biofeed;
	model bp = diet|drug|biofeed;
*	model bp = diet drug biofeed diet*drug diet*biofeed drug*biofeed diet*drug*biofeed;
	means diet*drug*biofeed;
run;

proc print data=outmeans;
proc sort data=outmeans;
	by drug;
run;

proc gplot data=outmeans;
	plot mean_bp*biofeed=diet ;
	by drug;
run;
quit;

bp = diet drug biofeed diet*drug diet*biofeed drug*biofeed diet*drug*biofeed과 같이 입력해도 되지만 간략하게 model bp = diet|drug|biofeed라고 해도 된다.

 

Comments