{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)

prueba de validacion

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

Loading required package: rngWELL

This is randtoolbox. For an overview, type ‘help(“randtoolbox”)’.

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