Pruebas de Cramér-von Mises y Anderson-Darling

Estadísticas más utilizadas en bondad de ajuste

Javier Santibáñez

9 de febrero de 2018

Planteamiento

\[ H_0: F = F_0 \qquad \text{vs.} \qquad F \neq F_0 \] donde \(F_0\) es una función de distribución completamente específicada (sin parámetros desconocidos).

Introducción histórica

El estadístico de Cramér-von Mises

Aproximación de la distribución del estadístico de CvM

n <- 10; m <- 15E4
w2n <- c()
for(i in 1:m)
{
  muestra <- runif(n)
  aux <- (2*(1:n)-1)/(2*n) - sort(muestra)
  w2n[i] <- 1/(12*n) + sum(aux^2)
}
quantile(w2n, probs = c(0.90, 0.95, 0.99))
##       90%       95%       99% 
## 0.3441917 0.4535614 0.7148499

Estos valores se pueden comparar con los valores tabulados (ver por ejemplo Csorgo & Faraday (1996)).

w2n_exp <- c()
for(i in 1:m)
{
  muestra <- rexp(n, 4)
  muestra <- pexp(muestra, 4)
  aux <- (2*(1:n)-1)/(2*n) - sort(muestra)
  w2n_exp[i] <- 1/(12*n) + sum(aux^2)
}
quantile(w2n_exp, probs = c(0.90, 0.95, 0.99))
##       90%       95%       99% 
## 0.3448120 0.4533340 0.7125111

El estadístico de Anderson-Darling

Aproximación de la distribución del estadístico AD

a2n <- c()
for(i in 1:m)
{
  muestra <- runif(n)
  muestra <- sort(muestra)
  aux <- (2*(1:n)- 1)*(log(muestra) + log(1-rev(muestra)))
  a2n[i] <- -n - (1/n)*sum(aux)
}
quantile(a2n, probs = c(0.90, 0.95, 0.99))
##      90%      95%      99% 
## 1.945450 2.508964 3.895924

Estos valores se pueden comparar con los valores tabulados.

a2n_nor <- c()
for(i in 1:m)
{
  muestra <- rnorm(n, 5, 2)
  muestra <- sort(pnorm(muestra, 5, 2))
  aux <- (2*(1:n)- 1)*(log(muestra) + log(1-rev(muestra)))
  a2n_nor[i] <- -n - (1/n)*sum(aux)
}
quantile(a2n_nor, probs = c(0.90, 0.95, 0.99))
##      90%      95%      99% 
## 1.944646 2.514504 3.907260

Ejemplo. \(F_0\) completamente especificada

Distribución con colas pesadas

ejemplo1 <- rt(n, 1)

Cramér-von Mises

aux <- (2*(1:n)-1)/(2*n) - pnorm(sort(ejemplo1))
w2n_ej1 <- 1/(12*n) + sum(aux^2); w2n_ej1
## [1] 0.3074766
mean(w2n_ej1 < w2n)
## [1] 0.1277667

Anderson-Darling

ejemplo1 <- sort(pnorm(ejemplo1))
aux <- (2*(1:n)- 1)*(log(ejemplo1) + log(1-rev(ejemplo1)))
a2n_ej1 <- -n - (1/n)*sum(aux); a2n_ej1
## [1] Inf
mean(a2n > a2n_ej1)
## [1] 0

Distribución con colas ligeras

ejemplo2 <- runif(n, -3, 3)

Cramér-von Mises

aux <- (2*(1:n)-1)/(2*n) - pnorm(sort(ejemplo2))
w2n_ej2 <- 1/(12*n) + sum(aux^2); w2n_ej2
## [1] 0.3361084
mean(w2n_ej2 < w2n)
## [1] 0.1055733

Anderson-Darling

ejemplo2 <- sort(pnorm(ejemplo2))
aux <- (2*(1:n)- 1)*(log(ejemplo2) + log(1-rev(ejemplo2)))
a2n_ej2 <- -n - (1/n)*sum(aux); a2n_ej2
## [1] 3.238943
mean(a2n > a2n_ej2)
## [1] 0.02160667

Población asimétrica

rald <- function(n, theta, lambda){
  res <- c()
  for(i in 1:n)
  {
    aux <- runif(1) < theta
    lambda2 <- theta/(1-theta)*lambda
    res[i] <- aux*rexp(1, lambda) - (1-aux)*rexp(1, lambda2)
  }
  return(res)
}
ejemplo3 <- rald(10, 0.8, 1)

Cramér-von Mises

aux <- (2*(1:n)-1)/(2*n) - pnorm(sort(ejemplo3))
w2n_ej3 <- 1/(12*n) + sum(aux^2); w2n_ej3
## [1] 0.5514193
mean(w2n_ej3 < w2n)
## [1] 0.02718

Anderson-Darling

ejemplo3 <- sort(pnorm(ejemplo3))
aux <- (2*(1:n)- 1)*(log(ejemplo3) + log(1-rev(ejemplo3)))
a2n_ej3 <- -n - (1/n)*sum(aux); a2n_ej3
## [1] 3.466086
mean(a2n > a2n_ej3)
## [1] 0.01638

Extensión para hipótesis compuestas

Referencias