proc freq data = "c:/test/hsb2"; /* c 디렉토리의 test 폴더에 hsb2 데이터를 이용하여 freq 라는 sas 의 procedure 를 실행한다 tables female / binomial(p=.5); /* tables 는 freq 의 대상 변수를 지정하는 것으로 여기에서는 tables female 이기에 female 이 대상변수가 된다. /* / 는 옵션을 지정할 때 사용하는 것 binomial 은 sas 의 함수로 이항분포함수를 의 미하는 것으로 p=0.5 는 그 확률이 0.5 인지를 검정하도록 지정한다. 0.5 는 female 변수의 0 또는 먼저 코딩된 값의 비율을 의미한다 exact binomial; /* 이항함수분포의 정확검정도 시도해봐라 run; 정확검정의 양측검정 p 값을 보아야
npar tests Spss 에서 비모수 검정을 시작할 때 사용, NPTESTS 도 사용됨 /binomial (.5) = female. 0.5 는 female 변수의 0 또는 먼저 코딩된 값의 비율을 의미한다 이항분포함수의 p=0.5 인지 검정하는 것으로 변수는 = 다음에 나오므로 해당 변수 는 female 이다 주의할 점은 끝에 점이 있다 분석 - 비모수 검정 - 일표본 필드에서 female 을 선택하고, 설정에서 관측확률과 가설값 비교 ( 카이제곱검정을 선택하고 옵션은 50:50 이므로 변경하지 않는다. 만일 60: 40 이면 별도로 입력하여 야 함다.
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") attach(hsb2) table(female) chisq.test(table(female)) library(Rcmdr) 후에 데이터 - 활성 데이터셋에 있는 변수 관리하기 선택후에 수치변수를 요인으로 변환하기 female 선택 후에 숫자사용하기 newfemale 새로운 변수로 저장하고 통계 - 요약 - 빈도분포 female 선택후에 카이제곱 적합성 검정 ( 오직하나의 변수 ) 클릭 후 예 비율을 입력할 수 있음
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") attach(hsb2) table(female) probs<-c(0.6,0.4) 0.6 과 0.4 라는 ( 행벡터 ) 값을 probs 라는 변수로 저장하라 chisq.test(table(female),p=probs) Female 이라는 빈도를 계산 후에 chisquare 검정을 하는데, 확률 p 는 probs 변수에 있는 ( 행벡터 ) 값을 사용한다. R 의 경우는 sas 와 spss 와 달리, 두개의 기대 확률을 모두 써야 계산이 된다
proc freq data = "c:/test/hsb2"; /* c 디렉토리의 test 폴더에 hsb2 데이터를 이용하여 freq 라는 sas 의 procedure 를 실행한다 tables race / chisq testp=( ); /* tables 는 freq 의 대상 변수를 지정하는 것으로 여기에서는 tables race 이기에 race 가 대상변수가 된다. / 는 옵션을 지정할 때 사용하는 것 Chisq 는 카이스퀘어 통계량을 계산하라는 명령 testp=( ) 는 4 개 범주의 상대빈도 가정이 맞는지 검정을 하 라는 명령 run;
npar test Spss 에서 비모수 검정을 시작할 때 사용, NPTESTS 도 사용됨 /chisquare = race Chisquare 검정을 하되 변수는 = 다음에 나옴. 이경우는 race 가 chisquare 검정을 하는 변수임 /expected = 기대빈도는 순서대로 다음과 같다 주의할 점은 끝에 점이 있다 분석 - 비모수 검정 race 만 남겨둠 설정에서 카이제곱검정에서 옵션을 누르 을 순서대로 입 력
proc freq data = "c:/test/hsb2"; /* c 디렉토리의 test 폴더에 hsb2 데이터를 이용하여 freq 라는 sas 의 procedure 를 실행한다 tables schtyp*female / expected chisq; /* tables schtyp*female 는 schtyp 을 행에 female 을 열에 놓고 빈도수를 세는 것 / expected chisq; /* expected 는 기대빈도를 출력 chisq 는 카이스퀘어 통계량을 계 산하는 것 ; run;
Crosstabs /* sas 의 proc freq 와 유사한 것 /tables = schtyp by female /*tables 는 표를 만들라는 명령어, 앞에 나오는 것이 행, 뒤에 나오는 것이 열이고 sas 는 * 를 사용했지만 spss 는 by 를 사용 /statistic = chisq. /* 카이스퀘어 통계량을 프린트 하는 것 분석 - 기술통계 - 교차분석 통계량 카이제곱 셀 기대빈도
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") attach(hsb2) /* 이는 sas 의 data= 과 유사한 기능 table(schtyp, female) /* 빈도수를 세는 것으로 행렬을 지정 chisq.test(schtyp, female) /*chisq.test 는 카이스퀘어 검정을 하라는 함수 fisher.test(schtyp, female)
library(Rcmdr) 후에 데이터 - 활성 데이터셋에 있는 변수 관리하기 선택후에 수치변수를 요인으로 변환하기 female 선택후에 숫자사용하기 새로운 변수 newfemale 로 저장 하고 schtyp 선택후에 숫자사용하기 새로운 변수 newschtyp 로 저장하 고 통계 - 분할표 - 이원표 변수 선택 통계를 눌러 fisher exact 검정을 할 수 있음
단일 표본에서 평균 차이가 있는가 write 라는 변수의 평균이 50 과 통계적으로 다른가 하는 테스트 proc ttest data = "c:/test/hsb2" h0 = 50; /* proc ttest 는 ttest 프로시져를 하라는 것 ttest 프로시져는 t 검정을 하는 프로시져 /* h0 = 50 는 귀무가설의 평균이 50 임을 지정 var write; /* 변수를 지정하는 것으로 변수를 지정할 때 ttest 프로시져는 var 를 사용한다 var 를 쓴 다음에 변수명을 쓰면 된다 run;
t-test /* sas 의 proc ttest 와 동일 /testval = 50 /*sas 의 h0=50 과 동일, test value 의 줄임말 /variable = write. /*sas 의 var write; 와 동일
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") t.test(hsb2$write, alternative='two.sided', mu=50,conf.level=0.95) /* hsb2$write 는 hsb2 데이터에 있는 write 변수를 t 검정을 하는 것, alternative='two.sided', 는 양측검정을 하는 것, mu=50 는 평균 이 50 을 검정하라는 것, conf.level=0.95 는 신뢰수준이 95% 라는 것 t.test(hsb2$write, mu=50)
후에 데이터셋 활성화하고, 통계 - 평균 - 일표본 T 검정 write 선택하고 mu 에 50 쓰기
proc univariate data = "c:\test\hsb2"; /* 기술 통계량을 얻으려고 할 경우 proc univariate 를 사용한다 /*var write; var 를 쓰고 변수명을 쓰면 된다 proc univariate data = "c:\test\hsb2" loccount mu0 = 50; /* loccount mu0 = 50 는 중위수 즉 미디언이 50 인지를 검정하라 는 것 location count run;
NPTESTS /* 비모수 검정을 시작한다 /ONESAMPLE TEST (write) WILCOXON(TESTVALUE=50) /* 일표본 샘플 검정을 하되 변수는 write 이고 Wilcoxon 부호검정 을 하되, 테스트 값은 50 으로 write 의 미디언이 50 인지를 검정하 라는 것 /MISSING SCOPE=ANALYSIS USERMISSING=EXCLUDE /CRITERIA ALPHA=0.05 CILEVEL=95.
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") wilcox.test(hsb2$write,alternative='two.sided',mu=50,conf.level= 0.95) /* 미디언 검정을 할 때에는 wilcox.test 함수를 이용한다. 그리고 변수명을 쓰고 mu=50 은 미디언이 50 인지를 검정하라는 것이다. wilcox.test(hsb2$write,mu=50)
proc ttest data = "c:/test/hsb2"; /* 두개의 독립 표본의 평균 차이를 할 때에도 proc ttest 사용, 두개의 독립표본이란 남자와 여자 표본을 의미 class female; /* 표본이 female 이라는 것으로 구분, class female 이란 female 변수 값 별로 평균 비교를 한다는 뜻 var write; /* 평균차이를 볼 변수는 write run; 결과에서 Equality of Variances 의 p 값이 0.05 보다 크면 Pooled, 0.05 보다 작으면 Satterthwaite 로 보아야 한다
t-test groups = female(0 1) /* 평균 차이 검정을 하는데 집단은 female 변수에 있고 현재 female 변수의 값은 0 과 1 로 되어 있다 /variables = write. /* 평균을 비교하는 변수는 write 이다
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") attach(hsb2) hsb2 <- within(hsb2, { newfemale <- as.factor(female)}) leveneTest(write ~ newfemale, data=hsb2, center="mean") 분산의 동질성을 검정하는데 집단은 newfemale 이고, 변수는 write 이 다. 데이터는 female 을 newfemale 로 변환한 hsb2 이다. 결과에서 p 가 0.05 보다 작기 때문에 아래의 var.equal=FALSE 이 사용되었다. P 가 0.05 보다 크면 var.equal=TRUE 를 써야 한다 t.test(write~newfemale, alternative='two.sided', conf.level=.95, var.equal=FALSE,data=hsb2) 두집단의 평균 비교를 하는데 집단은 newfemale 이고 평균을 비교하 는 변수는 write 이고, 데이터는 hsb2 이다
대응표본 proc ttest data = "c:/test/hsb2" ; /* 대응 표본 평균 차이를 할 때에도 proc ttest 사용, paired write*read; run; /* 다만 대응 표본인 경우는 class 변수명을 하지 않고 paired 를 사용한 후 변수명 * 변수명을 하면 됨
T-TEST PAIRS=read WITH write. /* t 검정을 하되 pairs 는 대응표본임을 명시하고 변수 사이에 with 를 씀
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") t.test(hsb2$write,hsb2$read,paired=TRUE) /* t.test 함수를 이용하되 paired=TRUE 를 써서 대응표본 임을 명 시 library(Rcmdr) 통계 평균 paired t 검정 변수선택
Wilcoxon-Mann-Whitney test (1 독립변 수 2 독립적 그룹 종속변수는 순위변수 ) 종속변수가 순서변수, 1 등급, 2 등급 등 proc npar1way data = "c:/test/hsb2" wilcoxon; /* 비모수 검정 프로시저 npar1way 사용, wilcoxon 두 샘플 테스 트 사용 class female; var write; run; 정규분포 접근 z 검정을 사용하여야 함
npar test /m-w = write by female(0 1). *Nonparametric Tests: Independent 분석 - 비모수검정 - 독립표본 검정필드에 writing 집단에 female 설정 누르고 Mann-Whitney
setwd("c:/test") hsb2=read.csv("c:/test/hsb2.csv") attach(hsb2) hsb2 <- within(hsb2, { newfemale <- as.factor(female)}) with(hsb2, tapply(write, newfemale, mean, na.rm=TRUE)) wilcox.test(write ~ newfemale, alternative="two.sided", data=hsb2) library(Rcmdr) 후에 데이터 - 활성 데이터셋에 있는 변수 관리하기 선택후에 수치변수를 요인으로 변환하기 female 선택후에 숫자사용하기 새로운 변수 newfemale 로 저장하고 통계 - 비모수검정 - 이표본 wilcoxon 선택기능에서 정규 근사 사용할 수 있음
proc glm data = "c:/test/hsb2"; class prog; model write = prog; means prog/scheffe; run;