2016-06-23 3 views
0

종속 변수와 90 개의 독립 변수 각각에 chi-square test을 입력하고 p.value > 0.05 인 독립 변수 이름 목록을 반환하고 싶습니다. for 루프를 시도했지만 작동하지 않습니다. 누군가 나를 도울 수 있습니까?카이 제곱 테스트를 사용하는 프로그래밍

c=numeric(ncol(datam)) 
for(i in 2:ncol(datam)){ 
    a[i]=table(datam[,1], datam[,i]) 
    b[i]=chisq.test(a[i]) 
    if(b[i]$p.value>0.05) c=b[i]$data.name + c 
    } 
c 

답변

3

생활을 좀 더 쉽게하기 위해 broom 패키지를 권하고 싶습니다. 핵심은 결과의 데이터 프레임을 생성하여 흥미로운 변수를 필터링하는 데 사용할 수 있습니다.

library(broom) 
set.seed(pi) 
DF <- data.frame(x = factor(sample(LETTERS[1:4], 50, replace = TRUE, prob = c(1, 1, 1, 4))), 
       y1 = factor(sample(LETTERS[1:4], 50, replace = TRUE)), 
       y2 = factor(sample(LETTERS[1:4], 50, replace = TRUE)), 
       y3 = factor(sample(LETTERS[1:4], 50, replace = TRUE, prob = c(4, 1, 1, 1))), 
       y4 = factor(sample(LETTERS[1:4], 50, replace = TRUE))) 

Results <- do.call(
    "rbind", 
    lapply(names(DF)[-1], 
     function(nm) 
     { 
      x <- chisq.test(DF[, 1], DF[[nm]]) 
      x <- tidy(x) 
      x$name = nm 
      x 
     } 
) 
) 

Results[Results$p.value <= 0.05, ] 
+0

매우 많은 youu 감사 작동 시도 할 수 있습니다 : D – Asma

1

이이

p_values <- sapply(2:ncol(datam),function(x) chisq.test(datam[,1],datam[,x])$p.value) 
selected_variables <- names(datam)[-1][p_values>0.5] 
selected_variables 
관련 문제