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