Consideramos el test de Kolmogorov-Smirnov con hipótesis nula simple: \[ H_0: F = F_{\boldsymbol\theta_0} \] es decir, queremos contrastar si \(F\) sigue un modelo paramétrico concreto, completamente especificado.


Por ejemplo, queremos contrastar si los datos del fichero kevlar.txt siguen una distribución exponencial de tasa \(\lambda=1\), cuya función de distribución es \[ F_{\lambda=1}(x) = 1 - e^{- x}, \quad x>0. \] Por tanto, el contraste que queremos hacer es: \[ H_0: F = F_{1}. \] Paso 1: Calculamos el estadístico de Kolmogorov-Smirnov, \(D_{n} = \|F_{n}-F_{1}\|_{\infty}\):

kev <- scan("http://verso.mat.uam.es/~amparo.baillo/MatEstII/kevlar.txt")
KStest <- ks.test(kev,pexp)
Dn <- KStest$statistic
Dn
##          D 
## 0.08703787

Paso 2: La región de rechazo del contraste al nivel de significación \(\alpha\) es \(R=\{D_{n}>c_{\alpha}\}\), donde el nivel crítico \(c_{\alpha}\) es el cuantil \(1-\alpha\) de la distribución de \(D_n\) bajo \(H_0\), porque \[ \alpha = \mathbb P_{H_0}(R) = \mathbb P_{\exp(\lambda=1)} \{D_{n}>c_{\alpha}\}. \]

Es decir, \(c_\alpha\) es el cuantil \(1-\alpha\) de \(D_n\) como si la exponencial de parámetro 1 hubiera generado la muestra \(X_1,\ldots,X_n\).

Aunque el valor de \(c_\alpha\) lo proporciona la tabla del estadístico de Kolmogorov-Smirnov (porque \(H_0\) es simple), aquí vamos a aproximar \(c_\alpha\) mediante simulaciones.

Para ello generamos muchas (\(N\)) muestras Monte Carlo (del mismo tamaño \(n\) que la original) de la distribución exponencial de parámetro \(\lambda=1\). Para cada muestra Monte Carlo calculamos el valor del estadístico de Kolmogorov-Smirnov: \[ \begin{array}{cccc} \mbox{Muestra Monte Carlo 1} & x_1^{(1)},\ldots,x_n^{(1)} & \rightarrow & D_n^{(1)} = \|F_n^{(1)}-F_{1}\|_\infty \\ \mbox{Muestra Monte Carlo 2} & x_1^{(2)},\ldots,x_n^{(2)} & \rightarrow & D_n^{(2)} = \|F_n^{(2)}-F_{1}\|_\infty \\ \vdots \\ \mbox{Muestra Monte Carlo N} & x_1^{(N)},\ldots,x_n^{(N)} & \rightarrow & D_n^{(N)} = \|F_n^{(N)}-F_{1}\|_\infty \end{array} \] Aproximamos el valor de \(c\) mediante el percentil 95 de \(D_n^{(1)}, D_n^{(2)},\ldots,D_n^{(N)}\).

alpha <- 0.05
n <- length(kev)
N <- 5000
DnMC <- rep(0,N)
for (i in 1:N){
  MuestraMC <- rexp(n,rate=1)
  KStestMC <- ks.test(MuestraMC,pexp)
  DnMC[i] <- KStestMC$statistic
}
c <- quantile(DnMC,probs=1-alpha)
c
##       95% 
## 0.1321817

La tabla del estadístico de KS da el valor de \(D_{n;0.05}\):

1.36/sqrt(n)
## [1] 0.1353251