_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈 |
FrontPage › 카이제곱검정
|
|
[edit]
1 개요 #
[edit]
2 단순 적합도 검정 #단순 적합도 검정이란, 모집단의 기대도수가 특정한 형태를 따르지 않는 경우의 적합도 검정.
예제
8종류의 소주에 대한 소비자의 선호조 조사를 위해서 상표를 가리고 128명을 상대로 시음을 시킨다음 가장 좋아하는 소주를 선택하도록 하였다. 소주 맛에 대한 선호도의 차이가 있다고 할 수 있는가? ![]() tmp <- textConnection( "소주종류 관측도수 1 12 2 18 3 11 4 21 5 23 6 16 7 7 8 20") x <- read.table(tmp, header=TRUE) close.connection(tmp) head(x) 소주의 선호도에 차이가 없다는 것은 선택의 비율이 같음을 말한다. 그러므로 각 소주의 기대 관측도수는 16이다.
> sum(x$관측도수) / nrow(x) [1] 16 ![]() 카이제곱 검정을 해보자.
기대도수 <- replicate(nrow(x), (sum(x$관측도수) / nrow(x))) x <- cbind(x,e) chisq.test(x=x$관측도수, y=x$기대도수) 결과
> chisq.test(x=x$관측도수, y=x$기대도수) Chi-squared test for given probabilities data: x$관측도수 X-squared = 13.5, df = 7, p-value = 0.06082 결과해석
[edit]
3 독립성 검정 #![]() tmp <- textConnection( "교육수준 흡연실태 사원수 대졸 과흡연 51 고졸 과흡연 22 중졸 과흡연 43 대졸 흡연 92 고졸 흡연 21 중졸 흡연 28 대졸 비흡연 68 고졸 비흡연 9 중졸 비흡연 22") x <- read.table(tmp, header=TRUE) close.connection(tmp) head(x) t <- xtabs(사원수~교육수준+흡연실태, data=x) t 결과
> t 흡연실태 교육수준 과흡연 비흡연 흡연 고졸 22 9 21 대졸 51 68 92 중졸 43 22 28 기대값은 다음의 집계를 이용하여 비(ratio)를 계산하면 된다.
> apply(t, 1, sum) 과흡연 비흡연 흡연 116 99 141 > apply(t, 2, sum) 고졸 대졸 중졸 52 211 93 만약, 교육수준과 흡연이 상관없을 가정해보자. 무작위로 사원들을 30명 뽑아 교육수준을 살펴보면 전체(고졸:대졸:중졸 = 52:211:93)와 유사한 형태를 띌 것이다. 이런 의미에서 기대값과 관측값에 유의미한 차이가 없으면 독립성이 있다는 것이다. 하지만, 기대값과 관측값에 유의미한 차이가 있다면 변수간에 서로 영향을 주는 것이다. 즉, 독립이 아니다.
기대값을 계산해보자. 전체:흡연 = 356:141다. 그러므로 흡연자중 중졸인 사람들은 356:141 = 93:x 즉, x = 141 * 93 / 356 = 36.8347이다. 이렇게 일일이 계산하는게 짜증나니까 통계패캐지를 이용하는 거다. R에서 summary(xtabs())하면 독립성 su검정을 그냥 끝난다.
> summary(t) Call: xtabs(formula = 사원수 ~ 교육수준 + 흡연실태, data = x) Number of cases in table: 356 Number of factors: 2 Test for independence of all factors: Chisq = 18.51, df = 4, p-value = 0.0009808
fisher.test)는 초기하분포를 이용하여 p-value를 계산한다고 한다. [edit]
4 적합성 검정 #다음의 A는 모집단의 기대도수이고, B는 표본의 관측도수다. 표본이 모집단과 같은 분포 형태를 가지는지 검정해보자.
tmp <- textConnection( "A B 829 772 217 211 110 111 79 59 61 73 45 41 37 42 23 32 21 21 17 18 ") x <- read.table(tmp, header=TRUE) close.connection(tmp) plot(x$A) lines(1:nrow(x), x$B) v <- x$B e <- x$A/sum(x$A) chisq.test(v, p=e) 결과
> chisq.test(v, p=e) Chi-squared test for given probabilities data: v X-squared = 14.2971, df = 9, p-value = 0.1121
분모 <- c(x$A[1], x$B[1]) #첫 번째 행이 분모인 경우 # 분모 <- c(sum(x$A), sum(x$B)) #전체 sum이 분모인경우 for(i in 2:nrow(x)){ 분자 <- c(x$A[i], x$B[i]) #pval <- poisson.test(분자, 분모)$p.value * (nrow(x)-1) # nrow(x)-1 은 bonferroni conrrection pval <- prop.test(분자, 분모)$p.value * (nrow(x)-1) # nrow(x)-1 은 bonferroni conrrection print(paste0(i, "=", pval)) } [edit]
5 동질성 검정 #안락사에 대한 여론조사 결과다.
tmp <- textConnection( "종교 찬성여부 사람수 기독교 찬성 175 기독교 반대 125 천주교 찬성 100 천주교 반대 100 불교 찬성 160 불교 반대 140 무교 찬성 250 무교 반대 150") x <- read.table(tmp, header=TRUE) close.connection(tmp) summary(xtabs(사람수~종교+찬성여부, data=x)) 결과
> summary(xtabs(사람수~종교+찬성여부, data=x)) Call: xtabs(formula = 사람수 ~ 종교 + 찬성여부, data = x) Number of cases in table: 1200 Number of factors: 2 Test for independence of all factors: Chisq = 10.8, df = 3, p-value = 0.01286
|
친구를 얻는 유일한 방법은 스스로 완전한 친구가 되는 것이다. (에머슨) |