Función MATLAB kstest()

Ammar Ali 15 febrero 2024
Función MATLAB kstest()

Este tutorial analizará cómo encontrar la decisión de prueba de la hipótesis nula para un conjunto de datos utilizado para verificar si un conjunto de datos proviene de una distribución normal estándar o si no proviene de una distribución normal estándar utilizando la función kstest() en MATLAB .

Función kstest() de Matlab

En Matlab, la función kstest() se usa para encontrar la decisión de prueba de la hipótesis nula para un conjunto de datos que se usa para verificar si un conjunto de datos es de una distribución normal estándar o si no proviene de una normal estándar distribución. La función kstest() utiliza el algoritmo Kolmogorov Smirnov de una muestra para encontrar la decisión de la prueba.

La sintaxis básica de la función kstest() se encuentra a continuación.

output = kstest(data)

La salida de la sintaxis anterior puede ser 0 o 1. Si la salida es 0, la función no rechaza la decisión de prueba para la hipótesis nula, y si la salida es 1, significa que la función ha rechazado la decisión de prueba.

Analicemos un ejemplo de calificaciones de exámenes para confirmar la decisión de la prueba de la función kstest(). Podemos trazar la distribución normal estándar y la distribución acumulativa empírica en un solo gráfico para compararlas y confirmar la decisión de la prueba.

Vea el código de ejemplo y la salida a continuación.

clc
clear

load examgrades
data = grades(:,1);
a = (data-75)/10;
testResult = kstest(a)

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

Producción :

testResult =

  logical

   0

imagen de resultado kstest 1

Hemos utilizado el conjunto de datos examgrades, que ya está en Matlab en el código anterior. Hemos usado una media de 75 y una desviación estándar de 10 para hacer el conjunto de datos de las calificaciones dadas, y lo pasamos dentro de la función kstest(), que devolvió 0 como valor de decisión de la prueba, lo que significa que la función tiene No se rechazó la decisión de prueba de la hipótesis nula.

Si observamos la imagen de salida anterior, podemos ver que las dos distribuciones están cerca una de la otra, lo que confirma que la decisión de la prueba es precisa. Hemos utilizado la función cdfplot() para trazar la función de distribución acumulada de los datos y la función normcdf() para encontrar la distribución normal de los datos dados.

Hemos utilizado la función leyenda() para añadir leyendas al gráfico para entenderlo fácilmente. Ahora, cambiemos la media de 75 a 85 en el código anterior y verifiquemos el resultado.

Vea el código de ejemplo y la salida a continuación.

clc
clear

load examgrades
data = grades(:,1);
a = (data-85)/10;
testResult = kstest(a)

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

Producción :

testResult =

  logical

   1

imagen de resultado kstest 2

En el código anterior, la función kstest() ha devuelto 1, lo que significa que se rechaza la decisión de la prueba, y también podemos confirmarlo usando la imagen de arriba, que muestra claramente las dos distribuciones y no son iguales entre sí.

También podemos especificar la distribución hipotética mientras encontramos la decisión de prueba usando la matriz de dos columnas. La primera columna contiene los datos y la segunda columna contiene los valores de distribución acumulados o cdf.

También tenemos que decirle a la función kstest() al respecto usando el argumento CDF, como se muestra a continuación.

output = kstest(data,'CDF',cdfOfData)

En el código anterior, el cdfOfData es una matriz de dos columnas en la que la primera columna son los datos y la segunda columna es el cdf de esos datos. Podemos encontrar cdf usando la función cdf() de Matlab.

También podemos especificar la distribución hipotética usando un objeto de distribución de probabilidad que podemos hacer usando la función makedist(). Consulte este enlace para obtener más detalles sobre la función makedist().

Tenemos que pasar el objeto de distribución dentro de la función kstest() usando el argumento CDF, como se muestra a continuación.

output = kstest(data,'CDF',cdfObject)

También podemos encontrar la decisión de la prueba en diferentes niveles significativos utilizando el argumento Alpha y estableciendo su valor de 0 a 1. La función kstest() también devolverá un nuevo argumento, p, que muestra la probabilidad de una decisión de prueba.

A continuación se muestra un ejemplo de la función kstest() con el argumento Alfa.

[output, p] = kstest(data,'CDF',cdfObject, 'Alpha', 0.2)

También podemos comprobar la decisión de la prueba utilizando una hipótesis alternativa utilizando el argumento Tail en el que la función kstest() devolverá 0 o 1 a favor de la hipótesis alternativa. El valor del argumento Cola puede ser diferente, mayor o menor.

De forma predeterminada, el valor del argumento Cola se establece en desigual, lo que significa que la cdf de la población y la cdf de la distribución hipotética no serán iguales. El valor mayor establece la cdf de la población mayor que la cdf de la distribución hipotética, y el valor menor establece la cdf de la población menor que la cdf hipotética.

A continuación se muestra un ejemplo de la función kstest() con el argumento Tail.

output = kstest(data, 'Tail', 'larger')

La función kstest() devuelve cuatro argumentos en total que se muestran en la siguiente sintaxis.

[h,p,ksstat,cv] = kstest(data)

Ya estamos familiarizados con los dos primeros argumentos de la función kstest().

El argumento ksstat contiene valores de escalador no negativos de la estadística de la prueba de hipótesis. El argumento cv tiene el valor crítico, un escalar no negativo.

Matlab también contiene la función kstest2(), que se utiliza para probar la decisión de dos vectores utilizando el algoritmo Kolmogorov Smirnov de dos muestras.

Consulte este enlace para obtener más detalles sobre la función kstest().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artículo relacionado - MATLAB Function