2013-12-16 2 views
3

지역별 인구, 특정 지역의 인구, 특정 질병이있는 사람들의 수를 보여주는 데이터가 있습니다. 각 비율에 대한 신뢰 구간을 표시하려고합니다 (그러나 비율이 통계적으로 다른지 테스트하지는 않습니다).'prop.test'를 여러 번 실행하십시오.

하나의 접근법은 수동으로 표준 오류 및 신뢰 구간을 계산하는 것이지만 prop.test와 같은 내장 도구를 사용하고 싶습니다. 몇 가지 유용한 옵션이 있기 때문입니다. 그러나 벡터와 함께 prop.test를 사용하면 모든 비율에서 카이 제곱 테스트가 실행됩니다.

나는 이것을 while 루프 (아래의 더미 데이터 참조)로 해결했지만,이 문제에 접근하는 더 좋고 간단한 방법이 있어야한다는 것을 알고있다. 여기에 일을 적용 할 것이고, 어떻게 할 것인가? 감사!

dat <- data.frame(1:5, c(10, 50, 20, 30, 35)) 
names(dat) <- c("X", "N") 
dat$Prop <- dat$X/dat$N 

ConfLower = 0 
x = 1 
while (x < 6) { 
    a <- prop.test(dat$X[x], dat$N[x])$conf.int[1] 
    ConfLower <- c(ConfLower, a) 
    x <- x + 1 
} 

ConfUpper = 0 
x = 1 
while (x < 6) { 
    a <- prop.test(dat$X[x], dat$N[x])$conf.int[2] 
    ConfUpper <- c(ConfUpper, a) 
    x <- x + 1 
} 

dat$ConfLower <- ConfLower[2:6] 
dat$ConfUpper <- ConfUpper[2:6] 

답변

3

가 여기에 기본적으로 여기에 이전의 대답에서 도난 Map를 사용하여 시도이다 : 이것은 굉장히 작동
https://stackoverflow.com/a/15059327/496803

res <- Map(prop.test,dat$X,dat$N) 
dat[c("lower","upper")] <- t(sapply(res,"[[","conf.int")) 

# X N  Prop  lower  upper 
#1 1 10 0.1000000 0.005242302 0.4588460 
#2 2 50 0.0400000 0.006958623 0.1485882 
#3 3 20 0.1500000 0.039566272 0.3886251 
#4 4 30 0.1333333 0.043597084 0.3164238 
#5 5 35 0.1428571 0.053814457 0.3104216 
+0

- 감사합니다. 이중 대괄호는 sapply 무엇입니까? – Dan

+0

@Dan -'[[''는 목록의 일부 내용을 추출하는 함수로 '? Extract'를 참조하십시오. 'sapply' 라인은 본질적으로'prop.test'를 실행 한 각 결과로부터 각각의'conf.int' 컴포넌트를 잡아내는'res'리스트를 통과하는 루프입니다. 이는 [[ "(res [[1],"conf.int ")''[["(res [[2]], "conf.int")'etc 등등과 동일합니다. . – thelatemail

관련 문제