Exposición

Paqueteria necesaria

library(rmarkdown)
library(ggplot2)
library(GGally)
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
library(MVN)
library(carData)
library(knitr)
library(lmtest)
## Cargando paquete requerido: zoo
## 
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric

Resumen de la base de datos

summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 

Nombre de las variables

names(iris)
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"

Análisis explotratorio univariado de la base de datos

Cajas de bigotes univaridadas

setosa <- iris[1:150, 1:4]
x11()
Result <- mvn(data=setosa, mvnTest="royston", univariatePlot="box")
## Warning in uniPlot(data, type = univariatePlot): Box-Plots are based on
## standardized values (centered and scaled).

Histogramas univariados

Result<- mvn(data=setosa, mvnTest="royston", univariatePlot="histogram")

Gráficos Q-Q

result<-mvn(data=setosa, mvnTest = "royston", univariatePlot = "qqplot")

Análisis multivariado de la base de datos

Analisis para setosa

Prueba de mardia

result <- mvn(data = setosa, mvnTest = "mardia")
result$multivariateNormality
##              Test          Statistic              p value Result
## 1 Mardia Skewness    67.430508778062 4.75799820400869e-07     NO
## 2 Mardia Kurtosis -0.230112114481001    0.818004651478012    YES
## 3             MVN               <NA>                 <NA>     NO

Prueba de Royston

result_royston <- mvn(data = setosa, mvnTest = "royston")
result_royston$multivariateNormality
##      Test        H      p value MVN
## 1 Royston 50.39667 3.098229e-11  NO

Prueba de Henze-Zirkler

result_hz <- mvn(data = setosa, mvnTest = "hz")
result_hz$multivariateNormality
##            Test       HZ p value MVN
## 1 Henze-Zirkler 2.336394       0  NO

Analisis para la base de datos completa

iris_completa <- iris[, 1:4]

Prueba de Mardia

La prueba de Mardia analiza la normalidad multivariada mediante dos componentes:

1. Asimetría Multivariada (Skewness): Evalúa si la distribución de los datos presenta asimetría significativa.

2. Curtosis Multivariada (Kurtosis): Mide si la curtosis de la distribución es normal (es decir, si se acerca a la curtosis de una distribución normal).

result_mardia <- mvn(data = iris_completa, mvnTest = "mardia")
result_mardia$multivariateNormality
##              Test          Statistic              p value Result
## 1 Mardia Skewness    67.430508778062 4.75799820400869e-07     NO
## 2 Mardia Kurtosis -0.230112114481001    0.818004651478012    YES
## 3             MVN               <NA>                 <NA>     NO

En la evaluación de la normalidad multivariada mediante la prueba de Mardia, se obtuvieron resultados mixtos. La prueba de asimetría multivariada (skewness) mostró un estadístico de 67.43 con un valor p de 4.76e-07, lo cual llevó a rechazar la hipótesis nula, indicando una asimetría significativa en los datos. Por otro lado, la prueba de curtosis multivariada arrojó un estadístico de -0.23 con un valor p de 0.818, lo que sugiere que la curtosis es adecuada para la normalidad multivariada.

Sin embargo, debido a la evidencia de asimetría, la normalidad multivariada general (MVN) no se cumplió, lo que podría afectar la validez de los análisis estadísticos multivariados paramétricos. Se recomienda considerar transformaciones de los datos o utilizar métodos estadísticos no paramétricos para garantizar resultados robustos.

Prueba de Royston (Extensión multivariada de Shapiro-Wilk)

La prueba de Royston es una extensión multivariada de la prueba de Shapiro-Wilk, diseñada para evaluar si un conjunto de datos multivariados sigue una distribución normal multivariada.

result_royston <- mvn(data = iris_completa, mvnTest = "royston")
result_royston$multivariateNormality
##      Test        H      p value MVN
## 1 Royston 50.39667 3.098229e-11  NO

En la evaluación de la normalidad multivariada mediante la prueba de Royston, se obtuvo un estadístico H de 50.39667 y un valor p de 3.098229e-11. Dado que el valor p fue significativamente menor a 0.05, se rechaza la hipótesis nula, indicando que los datos analizados no siguen una distribución normal multivariada. Esta falta de normalidad sugiere la necesidad de considerar transformaciones de los datos o el uso de métodos no paramétricos para garantizar la validez de los análisis estadísticos posteriores.

Prueba de Henze-Zirkler

La prueba de Henze-Zirkler es una prueba estadística utilizada para evaluar si un conjunto de datos multivariados sigue una distribución normal multivariada. Es una prueba no paramétrica que se considera robusta y efectiva para detectar desviaciones de la normalidad multivariada.

result_hz <- mvn(data = iris_completa, mvnTest = "hz")
result_hz$multivariateNormality
##            Test       HZ p value MVN
## 1 Henze-Zirkler 2.336394       0  NO

En el análisis de la normalidad multivariada mediante la prueba de Henze-Zirkler, se obtuvo un estadístico HZ de 2.336394 y un valor p de 0. Dado que el valor p fue menor a 0.05, se rechazó la hipótesis nula, indicando que los datos analizados no siguen una distribución normal multivariada. Esta falta de normalidad podría afectar la validez de los análisis estadísticos que asumen esta condición, por lo que se recomienda considerar transformaciones de los datos o utilizar métodos no paramétricos.

Conclusión

Dado que las pruebas de normalidad multivariada (Henze-Zirkler, Royston y Mardia) indicaron que los datos no siguen una distribución normal multivariada, se recomienda explorar alternativas para garantizar la validez del análisis estadístico. Entre las opciones viables se encuentran la aplicación de transformaciones matemáticas a los datos, el uso de métodos estadísticos no paramétricos, la implementación de técnicas de remuestreo (bootstrap) o la segmentación de los datos en subgrupos más homogéneos. Estas estrategias permitirán obtener conclusiones robustas, evitando las limitaciones asociadas a la falta de normalidad.

Matriz de dispersión

pairs(iris[, 1:4], main = "Matriz de dispersión - Iris")

ggpairs(iris_completa, lower = list(continuous = "smooth"),
        diag = list(continuous = "barDiag"), axisLabels = "none")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Linealidad (Prueba de Rainbow)

modelo_linealidad <- lm(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width, data = iris_completa)

# Prueba de Rainbow
prueba_rainbow <- raintest(modelo_linealidad)

#  Resultado
print(prueba_rainbow)
## 
##  Rainbow test
## 
## data:  modelo_linealidad
## Rain = 0.9082, df1 = 75, df2 = 71, p-value = 0.6598

En el análisis de la linealidad del modelo de regresión aplicado a la base de datos iris_completa, se llevó a cabo la prueba de Rainbow, obteniendo un estadístico de prueba de 0.9082 con un valor p de 0.6598. Dado que el valor p resultó ser mayor a 0.05, no se rechazó la hipótesis nula, lo que sugiere que la relación entre las variables independientes y la variable dependiente en el modelo de regresión es adecuadamente lineal. Por lo tanto, no se encontraron indicios estadísticamente significativos de una especificación incorrecta del modelo o de la necesidad de una transformación no lineal. Estos resultados respaldan la validez del modelo lineal para describir los datos analizados.

Autocorrelación (Breusch-Godfrey)

modelo_autocorrelacion <- lm(Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width, data = iris_completa)

# Realizar la prueba de autocorrelación de Breusch-Godfrey (orden 1)
prueba_autocorrelacion <- bgtest(modelo_autocorrelacion, order = 1)

# Mostrar los resultados de la prueba
print(prueba_autocorrelacion)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo_autocorrelacion
## LM test = 0.2479, df = 1, p-value = 0.6186

En el análisis de la autocorrelación de los residuos del modelo de regresión ajustado a la base de datos iris_completa, se aplicó la prueba de Breusch-Godfrey. Los resultados mostraron un estadístico LM de 0.2479 y un valor p de 0.6186. Dado que el valor p fue mayor a 0.05, no se rechazó la hipótesis nula, indicando que no existe evidencia estadísticamente significativa de autocorrelación en los residuos del modelo. Esta independencia de los residuos refuerza la validez del modelo lineal, asegurando que las predicciones y conclusiones derivadas del análisis estadístico sean confiables y robustas.