2017-02-10 21 views
1

을 사용하여 외란 분산에 대한 Cochran의 C 검정 의 C.test 함수에서 외란 분산에 대한 Cochran 's C 검정을 수행합니다. 도시 주변의 다른 역에서이 SO2 측정 데이터 프레임을 가지며, 역, 일 및 값의 3 개의 열이 있습니다. 이 기능을 문제는이 lm 객체를 필요로하고 당신이 하나를 구축하는 방법을 나는 아주 이해가 안하지만 난 그냥 할 것입니다 :C.test {GAD}

여기
> C.test(lm(data = testSO2E1, value ~ estacion)) 

Cochran test of homogeneity of variances 

data: lm(data = testSO2E1, value ~ estacion) 
C = 0.13123, n = 31, k = 10, p-value = 1.066 
alternative hypothesis: Group 28079057 has outlying variance 
sample estimates: 
28079004 28079008 28079017 28079018 28079024 28079035 28079036 28079038 28079040 
16.8516 16.0559 17.9118 22.5828 30.0516 22.2366 23.6731 27.0452 26.5118 
28079057 
30.6516 

명백한 문제가 (누군가가 크로스 인증 됨에서 언급 한 바와 같이, 나는 이미 그 게시물을 삭제 한) 나는 그것이 불가능해야 할 때 1보다 큰 p 값을 얻고 있다는 것입니다. 또 다른 문제점은 28079057 스테이션이 분산이 가장 큰 경우 외란에 대한 테스트를 수행한다는 것입니다. 내가 outliers 패키지에서 Cochran.test 기능을 사용하는 경우

는 제대로 작동합니다

> cochran.test(value~Estacion,testSO2E1) 

Cochran test for outlying variance 

data: value ~ Estacion 
C = 0.26268, df = 31, k = 10, p-value = 2.285e-06 
alternative hypothesis: Group 28079036 has outlying variance 
sample estimates: 
28079004 28079008 28079017 28079018 28079024 28079035 28079036 28079038 28079040 
4.1032258 5.3784946 3.3118280 1.7913978 0.3118280 8.6064516 13.1397849 9.0258065 0.9569892 
28079057 
3.3956989 

나는 그것이 제대로 작동 해당 설명서에 포함 된 예제와 같이 C.test를 사용할 때, 나는 두 기능 그러나 나는 돈에서 같은 결과를 얻을 수 무엇이 다른지 알지 못합니다.

lm 개체를 잘못 작성하고 있습니까? 변수 cg,mq은 무엇을합니까? SO2 측정을 테스트하기 위해 비슷한 것이 필요합니까? https://drive.google.com/open?id=0B-0fUAdfgHYzUjcyVHhBcl9rWlk

그리고 여기에 기능 C.test {GAD}에 대한 코드 : 코크란의 코드로도

C.test <- 
function (object) 
{ 
    model <- deparse(substitute(object)) 
    by.factor <- as.factor(1:object$rank) 
    n <- length(object$model[,1])/object$rank 
    k <- object$rank 
    var <- tapply(object$model[,1], rep(1:k, each = n), var) 
    int <- interaction(object$model[,-1], lex.order = TRUE) 
    f.int <- factor(int, levels = unique(int)) 
    names(var) <- levels(f.int) 
    mean <- tapply(object$model[,1], rep(1:k, each = n), mean) 
    C <- max(var)/sum(var) 
    group <- names(var)[which(var == max(var))] 
    method <- "Cochran test of homogeneity of variances" 
    alt <- paste("Group", group, "has outlying variance") 
    f <- (1/C - 1)/(k - 1) 
    p <- 1 - pf(f, (n - 1) * (k - 1), (n - 1)) * k 
    pval <- 1 - p 
    result <- list(statistic = c(C = C), parameter = c(n = n, 
       k = k), alternative = alt, p.value = pval, method = method, 
       estimate = round(var, 4), mean = mean, var = var, data.names = model) 
    class(result) <- "htest" 
    return(result) 
} 

답변

0

봐 여기

데이터 내가 테스트하고 있습니다에 대한 링크입니다. test() 또는 pcochran()을 사용하십시오.

pval <- 1 - pcochran(value, df, k) 

및 pcochran 함수의 코드는 단순히 0으로, P 값을 설정

function (q, n, k) { 
    f <- (1/q - 1)/(k - 1) 
    p <- 1 - pf(f, (n - 1) * (k - 1), n - 1) * k 
    p[p < 0] <- 0 
    p[p > 1] <- 1 
    return(p) 
} 

이며 다음과 같이

cochran.test의 P 값()이 계산되고 1 "계산 된 p 값"이> 1이고 < 0 인 경우 GAD 패키지에서 수행되지 않습니다.

인사말