{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)
introduccion
Una prueba de validación en RStudio consiste en aplicar técnicas
estadísticas o de machine learning para comprobar si un modelo funciona
correctamente con datos distintos a los que se usaron para entrenarlo.
Generalmente se dividen los datos en conjuntos de entrenamiento y
prueba, o se aplican métodos como la validación cruzada, con el fin de
evaluar la capacidad predictiva y la confiabilidad del modelo. Esto
permite identificar si el modelo se ajusta bien a la realidad y evita
problemas como el sobreajuste. ejemplo :
# Generar 10000 números aleatorios uniformes
datos <- runif(10000)
# Aplicar la prueba K-S contra una distribución uniforme (0,1)
ks.test(datos, "punif", min = 0, max = 1)
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: datos
## D = 0.010282, p-value = 0.241
## alternative hypothesis: two-sided
a <- 33
c <- 85.6666667
m <- 9.25562892
X_n <- 0.21608472
random.number<-numeric(50) # vector numérico de longitud 50
for (i in 1:50)
{X_n<-(a*X_n+c)%%m
random.number[i]<-X_n/m # números en el intervalo [0,1]
}
random.number
## [1] 0.02605693 0.11550756 0.06737828 0.47911224 0.06633289 0.44461443
## [7] 0.92790527 0.87650280 0.18022130 0.20293183 0.95237923 0.68414347
## [13] 0.83236357 0.72362684 0.13531455 0.72100922 0.04893303 0.87041907
## [19] 0.97945822 0.57775020 0.32138538 0.86134662 0.68006727 0.69784893
## [25] 0.28464349 0.64886424 0.66814879 0.30453897 0.30541495 0.33432235
## [31] 0.28826652 0.76842410 0.61362411 0.50522452 0.92803810 0.88088625
## [37] 0.32487505 0.97650563 0.48031483 0.10601844 0.75423746 0.14546509
## [43] 0.05597683 0.10286443 0.65015505 0.71074570 0.71023694 0.69344803
## [49] 0.13941382 0.85628499
prueba de Kolmogorov-Smirnov
La prueba de Kolmogorov-Smirnov es una herramienta estadística no
paramétrica que se utiliza para evaluar la concordancia entre
distribuciones de datos. Su propósito principal es determinar si una
muestra proviene de una distribución teórica específica como la normal,
uniforme o exponencial o también si dos muestras independientes
provienen de la misma distribución. El método se basa en calcular la
mayor diferencia entre las funciones de distribución acumulada empírica
de los datos y la distribución de referencia o entre ambas muestras lo
cual permite identificar el grado de ajuste o similitud. Es ampliamente
empleada en investigaciones y análisis de datos porque no exige
supuestos estrictos y brinda una medida objetiva sobre la
correspondencia entre distribuciones.
pruebas Rumtest
La prueba de rachas o Runs Test es una prueba estadística no paramétrica
que se aplica para comprobar si una secuencia de datos ocurre de manera
aleatoria o si por el contrario presenta un patrón determinado. Una
racha se entiende como la repetición consecutiva de un mismo valor
dentro de la secuencia por ejemplo varios números positivos seguidos o
varias observaciones por encima de la media. El procedimiento consiste
en contar cuántas rachas se forman y compararlas con la cantidad
esperada bajo condiciones de aleatoriedad de modo que si la diferencia
es grande se concluye que la secuencia no es completamente aleatoria.
Esta prueba es útil en el análisis de series temporales experimentos de
control de calidad y en general en cualquier situación donde se busque
verificar la independencia de los datos.
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
diff(random.number)
## [1] 0.0894506281 -0.0481292740 0.4117339592 -0.4127793473 0.3782815404
## [6] 0.4832908343 -0.0514024697 -0.6962814992 0.0227105273 0.7494474014
## [11] -0.2682357546 0.1482200989 -0.1087367358 -0.5883122830 0.5856946612
## [16] -0.6720761808 0.8214860349 0.1090391508 -0.4017080246 -0.2563648112
## [21] 0.5399612320 -0.1812793438 0.0177816536 -0.4132054320 0.3642207440
## [26] 0.0192845509 -0.3636098187 0.0008759818 0.0289073991 -0.0460558310
## [31] 0.4801575761 -0.1547999875 -0.1083995885 0.4228135802 -0.0471518544
## [36] -0.5560111945 0.6516305818 -0.4961907998 -0.3742963934 0.6482190190
## [41] -0.6087723714 -0.0894882547 0.0468875947 0.5472906256 0.0605906438
## [46] -0.0005087550 -0.0167889154 -0.5540342068 0.7168711740
S<-ifelse(diff(random.number) > 0, 1, 0) # seuencia de ceros y unos
S
## [1] 1 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0
## [39] 0 1 0 0 1 1 1 0 0 0 1
runs.test(as.factor(S))
##
## Runs Test
##
## data: as.factor(S)
## Standard Normal = 2.1694, p-value = 0.03005
## alternative hypothesis: two.sided
# devuelve 1 si el número es mayor que el anterior y 0 en caso contrario.
# Detectar cambios
cambios <- abs(diff(S))
# Contar las corridas
corridas <- sum(cambios) + 1
corridas
## [1] 33
#con la prueba rumtest nos dio 33 corridas que al compararlo nos da que es uniforme
library(randtoolbox)
## Cargando paquete requerido: rngWELL
## This is randtoolbox. For an overview, type 'help("randtoolbox")'.
poker.test(random.number,nbcard=5)
##
## Poker test
##
## chisq stat = 1.7, df = 4, p-value = 0.79
##
## (sample size : 50)
##
## observed number 0 0 5 5 0
## expected number 0.016 0.96 4.8 3.8 0.38