Introducción

Antes que nada: para mostrar el efecto del TLC, normalmente se usa una distribución no normal, como una exponencial o uniforme. Esto se puede hacer mediante una simulación, tomando muestras de una distribución no normal y calculando las medias muestrales, lo que eventualmente forma una distribución normal a medida que aumenta el tamaño de la muestra. Por lo anterior, ilutsraremos el TLC con una distribución binomial, la cual por naturaleza es discreta, es decir no es una distribución normal. Sin embargo, cuando se cumplen ciertas condiciones (por ejemplo, que np y n(1-p) sean suficientemente grandes, la distribución binomial puede aproximarse a una normal según el Teorema del Límite Central.

Teorema del limite central.

Se maneja una constante para mantener los mismos resultados con valor de (123), asi mismo se formula un numero de grupos de (n=500)y, en cada grupo, se simulan 1000 datos (subdatos). En este caso, estamos utilizando m = 1000 * n para construir una matriz de datos con 500 filas y 1000 columnas, donde cada fila representa un grupo de subdatos. Para un total de 500.000 datos.

set.seed(43)
n=500
m=1000*n

A partir de lo anterior convertimos nuestros 500.000 datos (m) en 0 y 1. Cada dato decide o tiene una unica posibilida de tomar valores entre 0 y 1 por eso es (size=1) y una probabilidad del 10% de obtener un 1 (éxito) y un 90% de obtener un 0 (fracaso) de alli es el (prob=0.1).

X= matrix(rbinom(m, size=1, prob=0.1), ncol = n)

Ampliamos la muestra:

A continuación para demostrar el TLC de forma respectiva se seleccionan columnas de la matriz X, seleccionado un subconjunto de columnas de la 1 a N(500). Por ejemplo, X5 crea una sub-matriz con las primeras 5 columnas de X, X10 con las primeras 10 columnas, y así sucesivamente, hasta X500 con las primeras 500. Básicamente, están generando nuevas matrices con el mismo número de filas pero con diferentes cantidades de columnas, probablemente para analizar los efectos de tamaños de muestra o dimensiones distintas.

X5=X[ ,1:5] #Se crea una nueva matriz llamada X5 que contiene todas las filas de X, pero solo las columnas 1 a 5.
X10=X[ ,1:10]
X15=X[ ,1:15]  
X20=X[ ,1:20]
X30=X[ ,1:30]
X50=X[ ,1:50]
X60=X[ ,1:60]
X100=X[ ,1:100]
X200=X[ ,1:200]
X500=X[ ,1:500] #Se crea una nueva matriz llamada X500 que contiene todas las filas de X, con todas las columnas.

Calcumo de la media de las sub-matriz:

Una vez tenemos medias el resultado puede tomar cualquier valor en un rango continuo es decir entre 0 y 1.

Mx5=apply(X5,1,mean)      
Mx10=apply(X10,1,mean) 
Mx15=apply(X15,1,mean)
Mx20=apply(X20,1,mean)
Mx30=apply(X30,1,mean)
Mx50=apply(X50,1,mean)
Mx60=apply(X60,1,mean)
Mx100=apply(X100,1,mean)
Mx200=apply(X200,1,mean)
Mx500=apply(X500,1,mean)

Calculamos la densidad:

En palabras sencillas, la densidad es como una “curva” que nos muestra dónde se concentran los valores de una variable continua. Lo ideal es que haya una sola punta y que sea en el centro, esto para una normal, que es lo que buscamos.

dx5=density(Mx5)
dx10=density(Mx10)
dx15=density(Mx15)
dx20=density(Mx20)
dx30=density(Mx30)
dx50=density(Mx50)
dx60=density(Mx60)
dx100=density(Mx100)
dx200=density(Mx200)
dx500=density(Mx500)

Graficamos la densidad:

par(cex=0.5, cex.axis=.5, cex.lab=.5, cex.main=.5, cex.sub=.5,  mfrow=c(2,5), mai = c(.5, .5, .5, .5))
plot(dx5, main=" ", xlab = "n=5")
plot(dx10, main=" ", xlab = "n=10")
plot(dx15, main="", xlab = "n=15")
plot(dx20, main=" ", xlab = "n=20")
plot(dx30, main=" ", xlab = "n=30")
plot(dx50, main=" ", xlab = "n=50")
plot(dx60, main=" ", xlab="n=60")
plot(dx100, main=" ", xlab="n=100")
plot(dx200, main=" ", xlab="n=200")
plot(dx500, main=" ", xlab="n=500")

Graficamos la qline

Estas garficas muestran una linea recta roja, la cual es la distribución a la cual deberian acoplarle los puntos para poder afrimar de forma visual que tiene una distribución normal.

par(cex=0.8, cex.axis=.8, cex.lab=.8, cex.main=.8, cex.sub=.8,  mfrow=c(2,5), mai = c(.4, .4, .4, .4))
qqnorm(Mx5); qqline(Mx5, col="red")
qqnorm(Mx10); qqline(Mx10, col="red")
qqnorm(Mx15); qqline(Mx15, col="red")
qqnorm(Mx20); qqline(Mx20, col="red")
qqnorm(Mx30); qqline(Mx30, col="red")
qqnorm(Mx50); qqline(Mx50, col="red")
qqnorm(Mx60); qqline(Mx60, col="red")
qqnorm(Mx100); qqline(Mx100, col="red")
qqnorm(Mx200); qqline(Mx200, col="red")
qqnorm(Mx500); qqline(Mx500, col="red")

Fomrular la hipotesis:

Hipótesis Nula (H₀):
Supone que los datos siguen una distribución normal

Hipótesis Alternativa (Hₐ):
Indica que los datos no siguen una distribución normal.

Es decir, tengo que rechazar H₀ para validar Hₐ, y para ello necesitamos que el p-valor sea menor al 5%. Para este ejemplo, utilizando una muestra pequeña (n=50), la prueba de Shapiro-Wilk es la más adecuada.

shapiro.test(Mx5)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx5
## W = 0.71294, p-value < 2.2e-16

Dado que el p-valor es menor a 2.2e-16, se rechaza la hipótesis nula. Esto significa que hay evidencia estadística muy fuerte para concluir que los datos en X5 no provienen de una distribución normal.

shapiro.test(Mx50)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx50
## W = 0.95911, p-value = 4.194e-16
shapiro.test(Mx500)
## 
##  Shapiro-Wilk normality test
## 
## data:  Mx500
## W = 0.99629, p-value = 0.01762

Sigue siendo en menor que 5% es decir no normal.

vamos a ampliar el dato:

#X5000=X[ ,1:500] #Se crea una nueva matriz llamada X500 que contiene todas las filas de X, con todas las columnas.
#Mx5000=apply(X500,1,mean)
#lillie.test(Mx5000)