#Normalidad ##A Normalidad
Pob_normal = dnorm(-400:400, 0, 100)
plot(-400:400, Pob_normal, type="l", main = "Distribución Normal media=0, sigma=100")
##B Normalidad
x1=rnorm(150,0,100)
hist(x1, col=0, main = "Distribución empírica de Normal media=0, sigma=100", freq=FALSE)
##C Normalidad
library (moments)
sg1 = skewness(x1)
k1 = kurtosis(x1)
cat("El sesgo es:", sg1, "\n")
## El sesgo es: 0.1722376
cat("La curtosis es:", k1, "\n")
## La curtosis es: 2.748936
##D Normalidad
jarque.test(x1)
##
## Jarque-Bera Normality Test
##
## data: x1
## JB = 1.1356, p-value = 0.5668
## alternative hypothesis: greater
qqnorm(x1, main = "QQ-Plot de datos Normales")
qqline(x1, col = "red")
##E Normalidad Los dos graficos se parecen un poco, pero creo que en
la mayor parte son bastante diferentes. Las similitudes que puedo ver
son que la mayoria de los datos se concentran en el centro, en 0, y a
partir de ahi se empiezan a distribuir a los lados con menores
frecuencias. Aun así,a los lados del 0 los datos no son del todo
simetricos en la distribución empirica, e incluso hay un pico de 50 a
100 que es igual que la frecuencia de 0 a 50. La explicación de
porque los datos no son del todo igual a la de la distribución teorica
se puede entender a partir de las medidas de sesgo y curtosis. El sesgo
por ejemplo, es un poco mayor que 0, especificamente 0.05924815, lo cual
provoca que los datos se desvien solo un poco de la media aunque
significativamente para afectar la forma del histograma y desviarlos a
la derecha. La curtosis tambien es un poco mayor que 3, especificamente
3.09305 lo cual hace que la distribución se vuelva leptocurtica y se
alarge un poco. Ahora bien, creo que lo que más afecta termina siendo la
curtosis ya que en el qqplot la grafica termina pareciendo más a una en
la que la curtosis es alta a una en la que el sesgo es alto, ya que en
los dos lados de la linea los datos se desvian un poco.Finalmente, y por
lo mismo de que el sesgo y la curtosis se desvian muy poco de sus
valores ideales de normalidad, la prueba de normalidad da un valor de p
muy alto lo que indica que no hay evidencia para rechazar la hipotesis
nula, y lo más seguro es que los datos sean normales, lo cual tiene
sentido ya que se generaron con rnorm.
#Gamma Muy Sesgada a la Derecha ##A
x = seq(0,40,0.1)
Pob_gammaMS = dgamma(x, 0.5, 2)
plot(x, Pob_gammaMS, type="l", main = "Gamma Muy Sesgada Derecha (Alpha: 0.5, Beta: 2)")
#B
x2=rgamma(150,0.5,2)
hist(x2, col=0, main = "Distribución empírica de Gamma Muy Sesgada Derecha", freq=FALSE)
#C
sg2 = skewness(x2)
k2 = kurtosis(x2)
cat("El sesgo es:", sg2, "\n")
## El sesgo es: 2.787525
cat("La curtosis es:", k2, "\n")
## La curtosis es: 11.19653
#D
jarque.test(x2)
##
## Jarque-Bera Normality Test
##
## data: x2
## JB = 614.15, p-value < 2.2e-16
## alternative hypothesis: greater
qqnorm(x2, main = "QQ-Plot de datos Normales")
qqline(x2, col = "red")
#E Las graficas se parecen demasiado, principalmente porque los
datos estan cargados cercanos al 0 y a partir de ahi se empiezan a
distribuir con menos frecuencia hacia la derecha. Aun así, se ven
algunas barras que son identicas, aunque lo que se esperaría es que
fueran disminuyendo hasta acercarse a 0 de densidad Los datos sobre
el sesgo y la curtosis tienen mucho sentido cuando se comparan con la
grafica de la distribución empirica. Primero, con el sesgo de 2.208923
se puede intuir que la grafica tendrá un sesgo a la derecha, lo cual se
ve claramente reflejado en el histograma. En cuanto a la curtosis de
8.467518 tambien se puede notar una relación ya que en una gamma con
mucho sesgo a la derecha se espera que se comporte como una función
exponencial, y por lo tanto esté alargada ‘infinitamente’, lo cual hace
mucho sentido ya que este valor de curtosis indica alargamiento.
Finalmente, la desviación en los datos de la recta en el lado derecho
para el qqplot tambien indican un sesgo a la derecha y concuerda con el
valor del sesgo calculado. Además, ninguno de los extremos concuerda con
la recta y son colas delgadas, lo cual es señal de alta curtosis. Por
ultimo, el valor de p value es bastante pequeño, lo cual hace que la
hipotesis nula, que los datos son normales, sea rechazada. Esto tiene
mucho sentido ya que la distribución es gamma. ##Gamma Ligeramente
Sesgada a la Derecha #A
Pob_gammaLS = dgamma(x, 5, 2)
plot(x, Pob_gammaLS, type="l", main = "Gamma Lig Sesgada Derecha (Alpha: 5, Beta: 2)")
#B
x3=rgamma(150,5,2)
hist(x3, col=0, main = "Distribución empírica de Gamma Lig Sesgada Derecha", freq=FALSE)
#C
sg3 = skewness(x3)
k3 = kurtosis(x3)
cat("El sesgo es:", sg3, "\n")
## El sesgo es: 0.8852938
cat("La curtosis es:", k3, "\n")
## La curtosis es: 3.888017
#D
jarque.test(x3)
##
## Jarque-Bera Normality Test
##
## data: x3
## JB = 24.522, p-value = 4.732e-06
## alternative hypothesis: greater
qqnorm(x3, main = "QQ-Plot de datos Normales")
qqline(x3, col = "red")
#E En este caso las graficas tambien se parecen bastante aunque con
diferencias minimas. Ya que la distribución está ligeramente sesgada a
la derecha, se espera que los datos esten cargados a la derecha aunqué
no completamente cargados en el 0. Esto se puede ver en ambas
distribuciones, teoricas y empiricas. Aun así, hay algunos valores en el
histograma que salen de lo esperado ya que tienen picos donde no
deberían. En cuanto al sesgo se obtiene lo esperado, un valor de
1.245676, que representa un sesgo a la derecha lo cual se puede ver en
el histograma, y que en comparación con la distribución de mucho sesgo
es menor, reflejando que es un sesgo ligero. En cuanto a la curtosis, el
valor es de 5.218459 lo cual representa que la distribución está un poco
alargada de la normalidad. Esto es interesante ya que el valor de beta
fue el mismo en ambos casos de gamma, y se supone que este controla el
alargamiento o achatamiento, por lo que implica que alfa tambien tiene
impacto en la curtosis. En cuanto al qqplot, se puede notar el sesgo a
la derecha por la desviación de los datos en el extremo derecho hacia
arriba, y la alta curtosis por las colas delgadas en ambos extremos.
Finalmente, el valor de p es bastante menor a 0.05 lo cual indica que
los datos no siguen una distribución normal que es lo esperado ya que
estamos usando gamma. ##Weibull Sesgada a la Izquierda #A
Pob_weibull = dweibull(x, 15, 2)
plot(x, Pob_weibull, type="l", main="Weibull Sesgada Izquierda (Alpha: 7, Beta: 2)")
#B
x4=rweibull(150,15,2)
hist(x4, col=0, main = "Distribución empírica de Weibull Sesgada Izquierda", freq=FALSE)
#C
sg4 = skewness(x4)
k4 = kurtosis(x4)
cat("El sesgo es:", sg4, "\n")
## El sesgo es: -0.7997207
cat("La curtosis es:", k4, "\n")
## La curtosis es: 3.280097
#D
jarque.test(x4)
##
## Jarque-Bera Normality Test
##
## data: x4
## JB = 16.479, p-value = 0.000264
## alternative hypothesis: greater
qqnorm(x4, main = "QQ-Plot de datos Normales")
qqline(x4, col = "red")
#E Creo que en este caso es en el que ambas distribuciones más se
parecen y es que se nota el sesgo a la izquierda en los dos graficos. El
pico está aproximadamente en el mismo punto, en 2, y en cuanto a las
diferencias la verdad es que en esta visualización casi no se notan. Tal
vez sería conveniente ver más a fondo la grafica de la distribución
teorica. El valor del sesgo es lo esperado, -0.4897338, que como es
negativo indica un sesgo a la izquierda, aunque en este caso no es tan
grande y es algo cercano a 0 que es la normalidad. En cuanto a la
curtosis, 2.950992, el valor fue algo más pequeño de lo esperado para la
normalidad, lo cual indica un poco de achatamiento, pero aun así es
bastante cercano a 3. En cuanto al qqplot, se puede apreciar el sesgo a
la izquierda dado que en la parte derecha de la grafica los valores se
desvian para abajo en la recta. Además, las colas son gruesas lo cual
indica un leve achatamiento. El valor de p, por muy poco, hace que se
rechace la hipotesis nula y se concluya que los datos no son normales,
aunque por muy muy poco. ##Probando normalidad en una base de datos
data(cars)
str(cars)
## 'data.frame': 50 obs. of 2 variables:
## $ speed: num 4 4 7 7 8 9 10 10 10 11 ...
## $ dist : num 2 10 4 22 16 10 18 26 34 17 ...
library(nortest)
#1
shapiro.test(cars$speed)
##
## Shapiro-Wilk normality test
##
## data: cars$speed
## W = 0.97765, p-value = 0.4576
ad.test(cars$speed)
##
## Anderson-Darling normality test
##
## data: cars$speed
## A = 0.26143, p-value = 0.6927
lillie.test(cars$speed)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: cars$speed
## D = 0.068539, p-value = 0.8068
jarque.test(cars$speed)
##
## Jarque-Bera Normality Test
##
## data: cars$speed
## JB = 0.80217, p-value = 0.6696
## alternative hypothesis: greater
Para todos los casos el valor de p fue mayor a 0.05, por lo que no hay evidencia para rechazar la hipotesis nula. Es razonable considerar que aproximadamente siguen una distribución normal, aunque no perfecta.
shapiro.test(cars$dist)
##
## Shapiro-Wilk normality test
##
## data: cars$dist
## W = 0.95144, p-value = 0.0391
ad.test(cars$dist)
##
## Anderson-Darling normality test
##
## data: cars$dist
## A = 0.74067, p-value = 0.05021
lillie.test(cars$dist)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: cars$dist
## D = 0.12675, p-value = 0.04335
jarque.test(cars$dist)
##
## Jarque-Bera Normality Test
##
## data: cars$dist
## JB = 5.2305, p-value = 0.07315
## alternative hypothesis: greater
En este caso nos encontramos con una situación algo ambigua, ya que en 2 pruebas el valor de p es menor a 0.05, aunque en las otras 2 el valor es ligeramente mayor. Creo que por lo cercano a 0.05 de los casos en los que es mayor, y con base en la evidencia de las demas pruebas, lo más acertado sería asumir que los datos no siguen una distribución normal #2
qqnorm(cars$speed, main="QQ Plot Velocidad")
qqline(cars$speed, col="red")
qqnorm(cars$dist, main="QQ Plot Distancia")
qqline(cars$dist, col="red")
En el caso de velocidad, pareciera que los datos se ajustan casi a la
perfección a la recta de la normalidad y con muy pocas desviaciones, por
lo que hay más evidencia para decir que se aproximan a una distribución
normal. Para el caso de la distancia, los datos parecen tener un sesgo a
la derecha dado que en el extremo derecho se desvian para arriba. Esto
apoya a la hipotesis de que no son normales. #3
sgspeed = skewness(cars$speed)
kspeed = kurtosis(cars$speed)
cat("El sesgo para speed es:", sgspeed, "\n")
## El sesgo para speed es: -0.1139548
cat("La curtosis para speed es:", kspeed, "\n")
## La curtosis para speed es: 2.422853
sgdist = skewness(cars$dist)
kdist = kurtosis(cars$dist)
cat("El sesgo para dist es:", sgdist, "\n")
## El sesgo para dist es: 0.7824835
cat("La curtosis para dist es:", kdist, "\n")
## La curtosis para dist es: 3.248019
En el caso de velocidad, el sesgo obtenido fue de -0.11, lo cual está muy cercano a cero. Esto indica que la distribución es prácticamente simétrica, sin inclinaciones marcadas hacia la izquierda ni hacia la derecha. Además, la curtosis es de 2.42, un valor ligeramente menor a 3, lo que sugiere una distribución algo más achatada que la normal. En conjunto, esto refuerza la idea de que la variable velocidad se aproxima bastante a una distribución normal, con pequeñas desviaciones que no son graves. En el caso de la distancia, el sesgo calculado es de 0.78, lo que refleja una asimetría positiva: la distribución está sesgada a la derecha, es decir, hay una mayor presencia de valores grandes que desplazan la media. A su vez, la curtosis de 3.25 es ligeramente superior a 3, lo que indica colas más pesadas que la distribución normal. Estos resultados apoyan la hipótesis de que la variable distancia no sigue una distribución normal, ya que tanto el sesgo como la curtosis muestran desviaciones claras respecto al comportamiento esperado bajo normalidad. #4
media <- mean(cars$speed)
cat("La media para speed es:", media, "\n")
## La media para speed es: 15.4
mediana <- median(cars$speed)
cat("La mediana para speed es:", mediana, "\n")
## La mediana para speed es: 15
rango_medio <- (min(cars$speed) + max(x))/2
cat("El rango medio para speed es:", rango_medio, "\n")
## El rango medio para speed es: 22
cat("\n")
media <- mean(cars$dist)
cat("La media para dist es:", media, "\n")
## La media para dist es: 42.98
mediana <- median(cars$dist)
cat("La mediana para dist es:", mediana, "\n")
## La mediana para dist es: 36
rango_medio <- (min(cars$dist) + max(x))/2
cat("El rango medio para dist es:", rango_medio, "\n")
## El rango medio para dist es: 21
En el caso de velocidad, la media es 15.4 y la mediana es 15, valores muy cercanos entre sí. Esta cercanía confirma que la distribución es bastante simétrica, ya que en distribuciones normales o casi normales la media y la mediana tienden a coincidir. Sin embargo, el rango medio es de 22, un valor más alejado, lo cual se explica porque este indicador depende únicamente del mínimo y máximo de los datos. Por tanto, el rango medio se ve influenciado por la dispersión total, pero no contradice la simetría general reflejada por la media y la mediana. En el caso de la distancia, la media es 42.98, mientras que la mediana es de 36. Aquí la diferencia entre ambas es considerable: la media es mayor, lo que refleja que los valores grandes están “jalando” la distribución hacia la derecha. Este comportamiento coincide con el sesgo positivo que ya se había detectado. Además, el rango medio es 21, mucho menor que la media y la mediana, lo que indica que los valores extremos elevan bastante la media y generan una percepción de mayor centralidad de lo que realmente muestran la mayoría de los datos. #5
boxplot(cars$speed, main="Boxplot Velocidad", col="lightgreen")
boxplot(cars$dist, main="Boxplot Distancia", col="lightgreen")
En este caso se puede ver claramente lo mencionado anteriormente con
respecto a la media y la mediana. En el caso de speed, el grafico es
bastante simetrico y la media está casi en el centro de la caja. Aun
así, para distancia todo cambia ya que la media esta bastante desviada
del centro, e incluso se puede ver un outlier. #6
hist(cars$speed, freq=FALSE, main="Histograma Velocidad", col="lightgray")
lines(density(cars$speed), col="red", lwd=2)
curve(dnorm(x, mean=mean(cars$speed), sd=sd(cars$speed)),
from=min(cars$speed), to=max(cars$speed),
add=TRUE, col="blue", lwd=2)
hist(cars$dist, freq=FALSE, main="Histograma Distancia", col="lightgray")
lines(density(cars$dist), col="red", lwd=2)
curve(dnorm(x, mean=mean(cars$dist), sd=sd(cars$dist)),
from=min(cars$dist), to=max(cars$dist),
add=TRUE, col="blue", lwd=2)
Para speed, el histograma muestra cierta similitud con la campana
normal, aunque con pequeñas desviaciones. Para distancia, el histograma
se desplaza a la derecha y la curva normal teórica no logra ajustarse
bien por lo que la densidad empírica muestra colas más largas.
#Conclusion Final as pruebas de normalidad arrojaron resultados mixtos:
en algunos casos el valor de p fue mayor a 0.05 y en otros menor, lo que
genera cierta ambigüedad. Por eso fue necesario complementar con
gráficos, sesgo, curtosis y medidas de tendencia central.
En la variable velocidad, el QQPlot muestra que los puntos siguen casi perfectamente la recta de la normalidad, con muy pocas desviaciones en las colas. El sesgo de -0.11 confirma que la distribución es prácticamente simétrica, mientras que la curtosis de 2.42 indica que es ligeramente más achatada que la normal. Además, la media (15.4) y la mediana (15) son muy cercanas, lo que refuerza la idea de que la variable se aproxima bastante a una distribución normal, aunque no de manera perfecta. Por el contrario, en la variable distancia, el qqplot y el histograma evidencian un claro sesgo a la derecha, con colas más largas. Esto coincide con el sesgo positivo de 0.78 y una curtosis de 3.25, que sugiere colas más pesadas que en la normal. A nivel de medidas de tendencia central, la media (42.98) supera claramente a la mediana (36), lo que refleja cómo los valores grandes desplazan la distribución. Además, el boxplot confirma la presencia de outliers hacia arriba. Todo esto lleva a concluir que la variable distancia no sigue una distribución normal.