Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

kstest

Prueba de Kolmogorov-Smirnov para una muestra

Descripción

ejemplo

h = kstest(x) devuelve una decisión de prueba para la hipótesis nula de que los datos del vector x proceden de una distribución normal estándar, frente a la alternativa de que no procede de tal distribución, usando la prueba de Kolmogorov-Smirnov de una muestra. El resultado h es 1 si la prueba rechaza la hipótesis nula al nivel de significación del 5%, o 0 en el caso contrario.

ejemplo

h = kstest(x,Name,Value) devuelve una decisión de prueba para la prueba de Kolmogorov-Smirnov de una muestra con más opciones especificadas por uno o más argumentos de par nombre-valor. Por ejemplo, puede probar una distribución que no sea la normal estándar, cambiar el nivel de significación o realizar una prueba unilateral.

ejemplo

[h,p] = kstest(___) también devuelve el valor p, p, de la prueba de hipótesis, usando cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

[h,p,ksstat,cv] = kstest(___) también devuelve el valor de las estadísticas de la prueba ksstat y el valor crítico aproximado cv de la prueba.

Ejemplos

contraer todo

Realice la prueba de Kolmogorov-Smirnov de una muestra mediante kstest. Confirme la decisión de la prueba comparando visualmente la función de distribución acumulativa (cdf) empírica con la cdf normal estándar.

Cargue el conjunto de datos examgrades. Cree un vector que contenga la primera columna de los datos de notas de exámenes.

load examgrades
test1 = grades(:,1);

Pruebe la hipótesis nula de que los datos provienen de una distribución normal con una media de 75 y una desviación estándar de 10. Utilice estos parámetros para centrar y ampliar cada elemento del vector de datos, ya que kstest comprueba una distribución normal estándar de manera predeterminada.

x = (test1-75)/10;
h = kstest(x)
h = logical
   0

El valor devuelto de h = 0 indica que kstest no rechaza la hipótesis nula al nivel de significación predeterminado del 5%.

Represente la cdf empírica y la cdf normal estándar para compararlas visualmente.

cdfplot(x)
hold on
x_values = linspace(min(x),max(x));
plot(x_values,normcdf(x_values,0,1),'r-')
legend('Empirical CDF','Standard Normal CDF','Location','best')

Figure contains an axes object. The axes object with title Empirical CDF, xlabel x, ylabel F(x) contains 2 objects of type line. These objects represent Empirical CDF, Standard Normal CDF.

La figura muestra la similitud entre la cdf empírica del vector de datos centrado y ampliado y la cdf de la distribución normal estándar.

Cargue los datos de muestra. Cree un vector que contenga la primera columna de los datos de las notas de los alumnos en un examen.

load examgrades;
x = grades(:,1);

Especifique la distribución hipotética como una matriz de dos columnas. La columna 1 contiene el vector de datos x. La columna 2 contiene los valores de la cdf evaluados en cada valor de x para una distribución hipotética de Student t con un parámetro de ubicación de 75, un parámetro de escala de 10 y un grado de libertad.

test_cdf = [x,cdf('tlocationscale',x,75,10,1)];

Pruebe si los datos proceden de la distribución hipotética.

h = kstest(x,'CDF',test_cdf)
h = logical
   1

El valor devuelto de h = 1 indica que kstest rechaza la hipótesis nula al nivel de significación predeterminado del 5%.

Cargue los datos de muestra. Cree un vector que contenga la primera columna de los datos de las notas de los alumnos en un examen.

load examgrades;
x = grades(:,1);

Cree un objeto de distribución de probabilidad para probar si los datos proceden de una distribución de Student t con un parámetro de ubicación de 75, un parámetro de escala de 10 y un grado de libertad.

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

Pruebe la hipótesis nula de que los datos proceden de la distribución hipotética.

h = kstest(x,'CDF',test_cdf)
h = logical
   1

El valor devuelto de h = 1 indica que kstest rechaza la hipótesis nula al nivel de significación predeterminado del 5%.

Cargue los datos de muestra. Cree un vector que contenga la primera columna con las notas de los alumnos en un examen.

load examgrades;
x = grades(:,1);

Cree un objeto de distribución de probabilidad para probar si los datos proceden de una distribución de Student t con un parámetro de ubicación de 75, un parámetro de escala de 10 y un grado de libertad.

test_cdf = makedist('tlocationscale','mu',75,'sigma',10,'nu',1);

Pruebe la hipótesis nula de que los datos proceden de la distribución hipotética a un nivel de significación del 1%.

[h,p] = kstest(x,'CDF',test_cdf,'Alpha',0.01)
h = logical
   1

p = 0.0021

El valor devuelto de h = 1 indica que kstest rechaza la hipótesis nula al nivel de significación del 1%.

Cargue los datos de muestra. Cree un vector que contenga la tercera columna de la matriz de datos sobre rentabilidad de acciones.

load stockreturns;
x = stocks(:,3);

Pruebe la hipótesis nula de que los datos proceden de una distribución normal estándar, frente a la hipótesis alternativa de que la cdf de la población de los datos es mayor que la cdf normal estándar.

[h,p,k,c] = kstest(x,'Tail','larger')
h = logical
   1

p = 5.0854e-05
k = 0.2197
c = 0.1207

El valor devuelto de h = 1 indica que kstest rechaza la hipótesis nula a favor de la hipótesis alternativa en el nivel de significación predeterminado del 5%.

Represente la cdf empírica y la cdf normal estándar para compararlas visualmente.

[f,x_values] = ecdf(x);
J = plot(x_values,f);
hold on;
K = plot(x_values,normcdf(x_values),'r--');
set(J,'LineWidth',2);
set(K,'LineWidth',2);
legend([J K],'Empirical CDF','Standard Normal CDF','Location','SE');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Empirical CDF, Standard Normal CDF.

En la gráfica se muestra la diferencia entre la cdf empírica del vector de datos x y la cdf de la distribución normal estándar.

Argumentos de entrada

contraer todo

Los datos de muestra, especificados como un vector.

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

En versiones anteriores a R2021a, use comas para separar cada nombre y valor y encierre Name entre comillas.

Ejemplo: 'Tail','larger','Alpha',0.01 especifica una prueba utilizando la hipótesis alternativa de que la cdf de la población de la cual se extraen los datos de la muestra es mayor que la cdf de la distribución hipotética, realizada al nivel de significancia del 1%.

Nivel de significación de la prueba de hipótesis, especificado como el par separado por comas que consta de 'Alpha' y un valor de escalar en el rango (0,1).

Ejemplo: 'Alpha',0.01

Tipos de datos: single | double

cdf de la distribución continua hipotética, especificada por el par separado por comas que consta de 'CDF' y una matriz de dos columnas o un objeto de distribución de probabilidad continua. Cuando CDF es una matriz, la columna 1 contiene un conjunto de posibles valores x y la columna 2 contiene los valores de función de distribución acumulativa hipotéticos G(x) correspondientes. El cálculo es más eficiente si CDF se especifica de manera que la columna 1 contenga los valores del vector de datos x. Si hay valores en x que no se encuentran en la columna 1 de CDF, kstest se aproxima a G(x) mediante interpolación. Todos los valores en x deben estar dentro del intervalo entre el valor más pequeño y el valor más grande en la primera columna de CDF. De forma predeterminada, kstest realiza pruebas de una distribución normal estándar.

La prueba de Kolmogorov-Smirnov de una muestra solo es válida para funciones de distribución acumulativa continua y requiere que se predetermine CDF. El resultado no es preciso si CDF se estima a partir de los datos. Para probar x frente a una distribución normal, lognormal, de valores extremos, Weibull o exponencial sin especificar parámetros de distribución, utilice lillietest en su lugar.

Tipos de datos: single | double

Tipo de hipótesis alternativa que se desea evaluar, especificada como el par separado por comas que consta de 'Tail' y uno de los siguientes:

'unequal'Pruebe que la hipótesis alternativa de que la cdf de la población de la cual se extrae x no es igual a la cdf de la distribución hipotética.
'larger'Pruebe que la hipótesis alternativa de que la cdf de la población de la cual se extrae x es mayor que la cdf de la distribución hipotética.
'smaller'Pruebe que la hipótesis alternativa de que la cdf de la población de la cual se extrae x es menor que la cdf de la distribución hipotética.

Si los valores en el vector de datos x tienden a ser más grandes de lo esperado de la distribución hipotética, la función de distribución empírica de x tiende a ser más pequeña, y viceversa.

Ejemplo: 'Tail','larger'

Argumentos de salida

contraer todo

Resultado de la prueba de hipótesis, devuelto como un valor lógico.

  • Si h= 1, esto indica el rechazo de la hipótesis nula al nivel de significación Alpha.

  • Si h= 0, esto indica un error al rechazar la hipótesis nula al nivel de significación Alpha.

Valor p de la prueba, devuelto como un valor de escalar en el rango [0,1]. p es la probabilidad de observar una estadística de prueba tan extrema o más que el valor observado bajo la hipótesis nula. Los valores pequeños de p ponen en duda la validez de la hipótesis nula.

Estadística de la prueba de hipótesis, devuelta como un valor de escalar no negativo.

Valor crítico, devuelto como un valor de escalar no negativo.

Más acerca de

contraer todo

Prueba de Kolmogorov-Smirnov para una muestra

La prueba de Kolmogorov-Smirnov para una muestra es una prueba no paramétrica de la hipótesis nula de que la cdf de la población de los datos es igual a la cdf hipotética.

La prueba bilaterales de funciones de cdf "desiguales" realiza pruebas con la hipótesis nula frente a la hipótesis alternativa de que la cdf de la población de los datos no es igual a la cdf hipotética. La estadística de prueba es la máxima diferencia absoluta entre la cdf empírica calculada a partir de x y la cdf hipotética:

D*=maxx(|F^(x)G(x)|),

donde F^(x) es la cdf empírica y G(x) es la cdf de la distribución hipotética.

La prueba unilateral de la función de cdf "mayor" realiza pruebas con la hipótesis nula frente a la hipótesis alternativa de que la cdf de la población de los datos es mayor que la cdf hipotética. La estadística de prueba es la máxima cantidad en que la cdf empírica calculada a partir de x excede la cdf hipotética:

D*=maxx(F^(x)G(x)).

La prueba unilateral de la función de cdf "menor" realiza pruebas de la hipótesis nula frente a la hipótesis alternativa de que la cdf de la población de los datos es menor que la cdf hipotética. La estadística de prueba es la cantidad máxima en que la cdf hipotética excede la cdf empírica calculada a partir de x:

D*=maxx(G(x)F^(x)).

kstest calcula el valor crítico cv utilizando una fórmula aproximada o mediante interpolación en una tabla. La fórmula y la tabla cubren el rango 0.01alpha0.2 para pruebas bilaterales y 0.005alpha0.1 para pruebas unilaterales. Se devuelve cv como NaN si alpha está fuera de este rango.

Algoritmos

kstest decide rechazar la hipótesis nula comparando el valor p p con el nivel de significación Alpha, no comparando la estadística de prueba ksstat con el valor crítico cv. Puesto que cv es aproximado, comparar ksstat con cv ocasionalmente lleva a una conclusión distinta que comparar p con Alpha.

Referencias

[1] Massey, F. J. “The Kolmogorov-Smirnov Test for Goodness of Fit.” Journal of the American Statistical Association. Vol. 46, No. 253, 1951, pp. 68–78.

[2] Miller, L. H. “Table of Percentage Points of Kolmogorov Statistics.” Journal of the American Statistical Association. Vol. 51, No. 273, 1956, pp. 111–121.

[3] Marsaglia, G., W. Tsang, and J. Wang. “Evaluating Kolmogorov’s Distribution.” Journal of Statistical Software. Vol. 8, Issue 18, 2003.

Historial de versiones

Introducido antes de R2006a

Consulte también

| |