Nombres: Juan Torres y Juliana Rubio

Ejercicios 1: Visualizacion de datos multivariados

1. El conjunto de datos mtcars corresponde a un registro de 32 modelos de autom´oviles con 11 variables

relacionadas con el rendimiento y caracter´ısticas del motor. Las variables incluidas son: mpg (millas por galón), cyl (cilindros), disp (desplazamiento), hp (caballos de fuerza), drat (relación del eje trasero), wt (peso), qsec (tiempo en cuarto de milla), vs (configuración del motor), am (tipo de transmisión), gear (n´umero de marchas) y carb (n´umero de carburadores). Teniendo en cuenta esta informaci´on:

str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

###a) Calcule el vector de medias, la matriz de covarianzas y la matriz de correlación. Ilustre la última e interprete los resultados.

library(corrplot)
## corrplot 0.94 loaded
# vector de medias
medias <- colMeans(mtcars)
medias
##        mpg        cyl       disp         hp       drat         wt       qsec 
##  20.090625   6.187500 230.721875 146.687500   3.596563   3.217250  17.848750 
##         vs         am       gear       carb 
##   0.437500   0.406250   3.687500   2.812500
# Matriz de covarianzas
matriz_cov <- cov(mtcars)
matriz_cov
##              mpg         cyl        disp          hp         drat          wt
## mpg    36.324103  -9.1723790  -633.09721 -320.732056   2.19506351  -5.1166847
## cyl    -9.172379   3.1895161   199.66028  101.931452  -0.66836694   1.3673710
## disp -633.097208 199.6602823 15360.79983 6721.158669 -47.06401915 107.6842040
## hp   -320.732056 101.9314516  6721.15867 4700.866935 -16.45110887  44.1926613
## drat    2.195064  -0.6683669   -47.06402  -16.451109   0.28588135  -0.3727207
## wt     -5.116685   1.3673710   107.68420   44.192661  -0.37272073   0.9573790
## qsec    4.509149  -1.8868548   -96.05168  -86.770081   0.08714073  -0.3054816
## vs      2.017137  -0.7298387   -44.37762  -24.987903   0.11864919  -0.2736613
## am      1.803931  -0.4657258   -36.56401   -8.320565   0.19015121  -0.3381048
## gear    2.135685  -0.6491935   -50.80262   -6.358871   0.27598790  -0.4210806
## carb   -5.363105   1.5201613    79.06875   83.036290  -0.07840726   0.6757903
##              qsec           vs           am        gear        carb
## mpg    4.50914919   2.01713710   1.80393145   2.1356855 -5.36310484
## cyl   -1.88685484  -0.72983871  -0.46572581  -0.6491935  1.52016129
## disp -96.05168145 -44.37762097 -36.56401210 -50.8026210 79.06875000
## hp   -86.77008065 -24.98790323  -8.32056452  -6.3588710 83.03629032
## drat   0.08714073   0.11864919   0.19015121   0.2759879 -0.07840726
## wt    -0.30548161  -0.27366129  -0.33810484  -0.4210806  0.67579032
## qsec   3.19316613   0.67056452  -0.20495968  -0.2804032 -1.89411290
## vs     0.67056452   0.25403226   0.04233871   0.0766129 -0.46370968
## am    -0.20495968   0.04233871   0.24899194   0.2923387  0.04637097
## gear  -0.28040323   0.07661290   0.29233871   0.5443548  0.32661290
## carb  -1.89411290  -0.46370968   0.04637097   0.3266129  2.60887097
# Matriz de correlación
matriz_cor <- cor(mtcars)
matriz_cor
##             mpg        cyl       disp         hp        drat         wt
## mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
## cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
## disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
## hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
## drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
## wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
## qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
## vs    0.6640389 -0.8108118 -0.7104159 -0.7230967  0.44027846 -0.5549157
## am    0.5998324 -0.5226070 -0.5912270 -0.2432043  0.71271113 -0.6924953
## gear  0.4802848 -0.4926866 -0.5555692 -0.1257043  0.69961013 -0.5832870
## carb -0.5509251  0.5269883  0.3949769  0.7498125 -0.09078980  0.4276059
##             qsec         vs          am       gear        carb
## mpg   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507
## cyl  -0.59124207 -0.8108118 -0.52260705 -0.4926866  0.52698829
## disp -0.43369788 -0.7104159 -0.59122704 -0.5555692  0.39497686
## hp   -0.70822339 -0.7230967 -0.24320426 -0.1257043  0.74981247
## drat  0.09120476  0.4402785  0.71271113  0.6996101 -0.09078980
## wt   -0.17471588 -0.5549157 -0.69249526 -0.5832870  0.42760594
## qsec  1.00000000  0.7445354 -0.22986086 -0.2126822 -0.65624923
## vs    0.74453544  1.0000000  0.16834512  0.2060233 -0.56960714
## am   -0.22986086  0.1683451  1.00000000  0.7940588  0.05753435
## gear -0.21268223  0.2060233  0.79405876  1.0000000  0.27407284
## carb -0.65624923 -0.5696071  0.05753435  0.2740728  1.00000000
# Visualiza la matriz de correlación
corrplot(matriz_cor, 
         method = "color", 
         type = "upper", 
         addCoef.col = "black",
         tl.cex = 0.8,
         number.cex = 0.7,
         title = "Matriz de Correlación de mtcars",
         mar = c(0,0,1,0))

En la matriz de correlaciones obtenida, podemos observar distintas relaciones lineales entre las variables del dataset:

El rendimiento del combustible (mpg) tiene una fuerte correlación negativa con el peso del vehículo (wt, -0.87), el número de cilindros (cyl, -0.85), el desplazamiento del motor (disp, -0.85) y los caballos de fuerza (hp, -0.78). Esto sugiere que los autos más pesados, con motores más grandes y potentes, tienden a ser menos eficientes en combustible. En contraste, mpg tiene correlaciones positivas con la relación del eje trasero (drat, 0.68), el motor en línea (vs, 0.66) y la transmisión manual (am, 0.60), lo que indica que estas características favorecen un mejor rendimiento del combustible.

El peso del vehículo (wt) no solo está fuertemente correlacionado con el rendimiento del combustible, sino que también muestra una fuerte correlación positiva con el desplazamiento del motor (disp, 0.89) y el número de cilindros (cyl, 0.78). Los autos más pesados suelen tener motores más grandes y más cilindros. También se observa una correlación positiva con los caballos de fuerza (hp, 0.66), aunque en menor medida.

En cuanto al desempeño en el cuarto de milla (qsec), se observa una correlación negativa con la potencia del motor (hp, -0.71) y con el número de carburadores (carb, -0.66), indicando que los autos más potentes y con más carburadores tienden a ser más rápidos. Además, la correlación positiva de qsec con el motor en línea (vs, 0.74) sugiere que estos motores podrían ser más lentos en aceleración en comparación con los motores en V.

La variable drat (relación del eje trasero) muestra una correlación positiva moderada con la transmisión manual (am, 0.71) y el número de marchas (gear, 0.70), lo cual podría indicar que los autos con mayor relación del eje trasero suelen tener transmisiones manuales y más marchas, posiblemente orientados a un manejo más deportivo o eficiente.

Finalmente, el número de carburadores (carb) presenta una fuerte correlación positiva con los caballos de fuerza (hp, 0.75) y una correlación moderada con el número de cilindros (cyl, 0.53), lo que sugiere que los motores más potentes y grandes tienden a tener más carburadores, posiblemente en vehículos de alto rendimiento o deportivos.

b) Defina un criterio que le permita elegir tres variables y realice gráficos univariados adecuados que le permitan describir la distribución marginal de cada una.

Escogimos mpg (eficiencia de combustible), hp (potencia del motor) y wt (peso del vehículo) porque representan aspectos fundamentales y complementarios de un automóvil. Estas variables permiten un análisis multivariado que abarque la eficiencia, el rendimiento y una física del vehículo.

# 1. Histogramas
hist(mtcars$mpg, main = "Distribución de mpg", xlab = "Millas por galón", col = "lightblue", border = "black")

hist(mtcars$hp, main = "Distribución de hp", xlab = "Caballos de fuerza", col = "lightgreen", border = "black")

hist(mtcars$wt, main = "Distribución de wt", xlab = "Peso (1000 lbs)", col = "lightcoral", border = "black")

# 2. Boxplots
boxplot(mtcars$mpg, main = "Boxplot de mpg", col = "lightblue", horizontal = TRUE)

boxplot(mtcars$hp, main = "Boxplot de hp", col = "lightgreen", horizontal = TRUE)

boxplot(mtcars$wt, main = "Boxplot de wt", col = "lightcoral", horizontal = TRUE)

Como se puede observar, las observaciones de las variables seleccionadas presentan un comportamiento asimétrico: Hp se encuentra sesgada a la derecha, al igual que mpg, pero esta última en un menor grado. Adicionalmente, a pesar de que wt muestra un pico central, aún tiene un alto grado de asimetría. Además, se evidencian valores atípicos en las variables hp y wt, que pueden influir en el análisis debido al tamaño reducido del dataset.

c) Elija un gráfico que le permita reconocer observaciones (modelos de autos) similares e interpretelo.

Para este punto vamos a utilizar las caras de Chernoff.

#install.packages(aplpack)
require(aplpack)
## Loading required package: aplpack
## Warning: package 'aplpack' was built under R version 4.2.2
faces(mtcars[, 1:11],  
      face.type = 1,   
      scale = TRUE,   
      labels = as.character(1:nrow(mtcars)), 
      plot.faces = TRUE,  
      nrow.plot = 5)  

## effect of variables:
##  modified item       Var   
##  "height of face   " "mpg" 
##  "width of face    " "cyl" 
##  "structure of face" "disp"
##  "height of mouth  " "hp"  
##  "width of mouth   " "drat"
##  "smiling          " "wt"  
##  "height of eyes   " "qsec"
##  "width of eyes    " "vs"  
##  "height of hair   " "am"  
##  "width of hair   "  "gear"
##  "style of hair   "  "carb"
##  "height of nose  "  "mpg" 
##  "width of nose   "  "cyl" 
##  "width of ear    "  "disp"
##  "height of ear   "  "hp"

A partir de esto podemos concluir que las observaciones con variables más parecidas son 1 y 2; 10 y 11; 15 y 16

d) Verifique normalidad univariada y multivariada, usando gráficos y pruebas formales.

# Seleccionamos variables escogidas
Datos <- mtcars[, c("mpg", "hp", "wt")]

# Pruebas de Shapiro-Wilk para cada variable
shapiro.test(Datos$mpg)
## 
##  Shapiro-Wilk normality test
## 
## data:  Datos$mpg
## W = 0.94756, p-value = 0.1229
shapiro.test(Datos$hp)
## 
##  Shapiro-Wilk normality test
## 
## data:  Datos$hp
## W = 0.93342, p-value = 0.04881
shapiro.test(Datos$wt)
## 
##  Shapiro-Wilk normality test
## 
## data:  Datos$wt
## W = 0.94326, p-value = 0.09265

El test de normalidad de Shapiro-Wilk indica que la variable mpg (W = 0.94756, p = 0.1229) y wt (W = 0.94326, p = 0.09265) no rechazan la hipótesis nula de normalidad al nivel de significancia común (α = 0.05), sugiriendo que podrían seguir una distribución normal. Sin embargo, la variable hp (W = 0.93342, p = 0.04881) presenta un p-valor inferior a 0.05, lo que indica que no se ajusta a una distribución normal, por lo que podría requerir una transformación.

#install.packages("MVA")
require(MVA)
## Loading required package: MVA
## Loading required package: HSAUR2
## Warning: package 'HSAUR2' was built under R version 4.2.3
## Loading required package: tools
# Elipse de dispersión para mpg y hp
x1x2 <- data.frame(Datos$mpg, Datos$hp)
mat12 <- as.matrix.data.frame(x1x2)
bvbox(mat12, method = "robust", 
      xlab = expression(mpg), 
      ylab = expression(hp))

# Elipse de dispersión para mpg y wt
x1x3 <- data.frame(Datos$mpg, Datos$wt)
mat13 <- as.matrix.data.frame(x1x3)
bvbox(mat13, method = "robust", 
      xlab = expression(mpg), 
      ylab = expression(wt))

# Elipse de dispersión para hp y wt
x2x3 <- data.frame(Datos$hp, Datos$wt)
mat23 <- as.matrix.data.frame(x2x3)
bvbox(mat23, method = "robust", 
      xlab = expression(hp), 
      ylab = expression(wt))

Por medio de las elipses de dispersión podemos confirmar las correlaciones lineales de las variables calculada previamente. Además, se evidencia mucha dispersión en los datos (muchas obervaciones fuera de la elipse), lo que puede indicar que no hay normalidad.

# Matriz de datos
X <- as.matrix(Datos)
Xbarra <- colMeans(X)
S <- cov(X)

# Distancias de Mahalanobis
dm <- mahalanobis(X, Xbarra, S)

# QQplot
cuantiles <- qchisq(ppoints(length(dm)), df = ncol(X))
qqplot(cuantiles, dm, 
       main = "QQplot Normal Multivariada", 
       xlab = "Cuantiles teóricos", 
       ylab = "Distancias de Mahalanobis")
abline(0, 1, col = "blue")

El QQ plot con la distancia de Mahalanobis frente a la distribución chi-cuadrado muestra que los datos no siguen completamente la línea de referencia. Aunque en ciertos tramos la alineación es adecuada, en los extremos superiores los puntos se desvían por encima de la línea, lo cual indica una posible falta de normalidad multivariada.

#install.packages("mvShapiroTest")
#install.packages("MVN")
require(MVN)
## Loading required package: MVN
## Warning: package 'MVN' was built under R version 4.2.3
require(mvShapiroTest)
## Loading required package: mvShapiroTest
# Prueba de Shapiro Multivariada
mvShapiro.Test(X)
## 
##  Generalized Shapiro-Wilk test for Multivariate Normality by
##  Villasenor-Alva and Gonzalez-Estrada
## 
## data:  X
## MVW = 0.92021, p-value = 0.0008699
mvn(X, mvnTest="hz") # test de Henze-Zirkler
## $multivariateNormality
##            Test       HZ     p value MVN
## 1 Henze-Zirkler 1.226047 0.001048295  NO
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling    mpg       0.5797    0.1207    YES   
## 2 Anderson-Darling    hp        0.7077    0.0584    YES   
## 3 Anderson-Darling    wt        0.6091    0.1038    YES   
## 
## $Descriptives
##      n      Mean    Std.Dev  Median    Min     Max     25th   75th      Skew
## mpg 32  20.09062  6.0269481  19.200 10.400  33.900 15.42500  22.80 0.6106550
## hp  32 146.68750 68.5628685 123.000 52.000 335.000 96.50000 180.00 0.7260237
## wt  32   3.21725  0.9784574   3.325  1.513   5.424  2.58125   3.61 0.4231465
##        Kurtosis
## mpg -0.37276603
## hp  -0.13555112
## wt  -0.02271075
mvn(X, mvnTest = "royston") # test de royston
## $multivariateNormality
##      Test        H    p value MVN
## 1 Royston 3.782309 0.07940766 YES
## 
## $univariateNormality
##               Test  Variable Statistic   p value Normality
## 1 Anderson-Darling    mpg       0.5797    0.1207    YES   
## 2 Anderson-Darling    hp        0.7077    0.0584    YES   
## 3 Anderson-Darling    wt        0.6091    0.1038    YES   
## 
## $Descriptives
##      n      Mean    Std.Dev  Median    Min     Max     25th   75th      Skew
## mpg 32  20.09062  6.0269481  19.200 10.400  33.900 15.42500  22.80 0.6106550
## hp  32 146.68750 68.5628685 123.000 52.000 335.000 96.50000 180.00 0.7260237
## wt  32   3.21725  0.9784574   3.325  1.513   5.424  2.58125   3.61 0.4231465
##        Kurtosis
## mpg -0.37276603
## hp  -0.13555112
## wt  -0.02271075

Escogimos estas pruebas de normalidad multivariada siguiendo las recomendaciones específicas de cada una y tomando en cuenta sus ventajas. La prueba de Shapiro Multivariada es adecuada para muestras pequeñas y moderadas, lo cual se ajusta al tamaño reducido del dataset. El test de Henze-Zirkler es robusto y funciona bien en diferentes tamaños de muestra y dimensiones de los datos. Finalmente, el test de Royston es recomendado cuando hay pocas dimensiones, como en nuestro caso con p = 3 (mpg, hp, wt).

Los resultados de las pruebas de normalidad multivariada muestran que la prueba de Shapiro-Wilk generalizada (MVW = 0.92021, p-value = 0.0008699) y el test de Henze-Zirkler (HZ = 1.226047, p-value = 0.0010) rechazan la hipótesis nula de normalidad multivariada, indicando que los datos no siguen una distribución normal multivariada. Sin embargo, la prueba de Royston (H = 3.7823, p-value = 0.0794) no rechaza la normalidad multivariada, aunque el p-valor cercano a 0.05 sugiere precaución en la interpretación.

A nivel univariado, las pruebas de Anderson-Darling muestran que cada variable individual (mpg, hp, wt) presenta una distribución normal (p-valores mayores a 0.05).

A pesar de esto, debido los resultados mixtos en las pruebas de normalidad multivariada, sería recomendable tener precaución al aplicar métodos estadísticos que asumen normalidad multivariada.

Ejercicios 4:

1.4 Top 10 compañ´ias

Primero vamos a crear el dataset teniendo en cuenta la tabla presentada en el libro

companies_data <- data.frame(
  x1 = c(108.28, 152.36, 95.04, 65.45, 62.97, 263.99, 265.19, 285.06, 92.01, 165.68),
  x2 = c(17.05, 16.59, 10.91, 14.14, 9.52, 25.33, 18.54, 15.73, 8.10, 11.13),
  x3 = c(1484.10, 750.33, 766.42, 1110.46, 1031.29, 195.26, 193.83, 191.11, 1175.16, 211.15)
)

print(companies_data)
##        x1    x2      x3
## 1  108.28 17.05 1484.10
## 2  152.36 16.59  750.33
## 3   95.04 10.91  766.42
## 4   65.45 14.14 1110.46
## 5   62.97  9.52 1031.29
## 6  263.99 25.33  195.26
## 7  265.19 18.54  193.83
## 8  285.06 15.73  191.11
## 9   92.01  8.10 1175.16
## 10 165.68 11.13  211.15
  1. Traza el diagrama de dispersión y los diagramas de puntos marginales para las variables X₁ y X₂. Comenta sobre la apariencia de los diagrama
pairs(~ x1 + x2, data = companies_data, pch = 12, 
      main = "Diagrama de Pares para Sells y Assets")

Observando la relación entre X1(ventas) y X2(beneficios), se aprecia una tendencia positiva, indicando que un incremento en las ventas podría estar asociado con un aumento en los beneficios. Sin embargo, la relación no parece ser perfectamente lineal, lo cual sugiere que otros factores podrían influir en los beneficios además de las ventas. Además, la dispersión de los puntos muestra una correlación positiva, aunque no perfectamente definida, entre estas dos variables

  1. Calcule \(\bar{X}_1, \bar{X}_2, s_{11}, s_{22}, s_{12}, \text{ y } r_{12}\). Interprete \(r_{12}\).
#Promedios
x_barra_1 <- mean(companies_data$x1)
x_barra_2 <- mean(companies_data$x2)
print(paste("X barra 1 es: ",x_barra_1)) 
## [1] "X barra 1 es:  155.603"
print(paste("X barra 2 es: ",x_barra_2)) 
## [1] "X barra 2 es:  14.704"
#Varianzas
s_11 <- var(companies_data$x1) 
s_22 <- var(companies_data$x2)  
print(paste("S11 es : ",s_11)) 
## [1] "S11 es :  7476.45324555556"
print(paste("S22 es : ",s_22)) 
## [1] "S22 es :  26.1903155555556"
# Covarianza entre x1 y x2
s_12 <- cov(companies_data$x1, companies_data$x2)  
print(paste("S12 es : ",s_12)) 
## [1] "S12 es :  303.61862"
# Coeficiente de correlación
r_12 <- cor(companies_data$x1, companies_data$x2)
print(paste("r12 es : ",r_12)) 
## [1] "r12 es :  0.686136030325892"

la interpretación de (r_{12}: =.68 es una correlación moderada, lo que nos dice que un aumento en las ventas generalmente se asocia con un incremento en los beneficios.

1.5 De acuerdo a los datos del ejercicio 1.4

pairs(~ x2 + x3, data = companies_data, pch = 12, 
      main = "Diagrama de dispersión Profits y Assets")

pairs(~ x1 + x3, data = companies_data, pch = 12, 
      main = "Diagrama de dispersión Ventas y Assets")

El diagrama de dispersión X2 (Profits) y de X3(Assets) nos muestra que parece no haber una relación lineal evidente entre los activos y los beneficios, lo que podría indicar que tener más activos no necesariamente se traduce en mayores beneficio. El diagrama de dispersión de X1 (sales) y X3 (Assets) parece haber una tendencia positiva ligera, sugiriendo que empresas con mayores activos tienden a tener mayores ventas, pero esta tendencia no es clara.

  1. Calcule los arreglos \(\bar{x}\), \(S_n\) y \(\mathbf{R}\) para \((x_1, x_2, x_3)\).
#Arreglo de medias
x_bar <- colMeans(companies_data)
print ("Arreglo de medias")
## [1] "Arreglo de medias"
x_bar
##      x1      x2      x3 
## 155.603  14.704 710.911
#Matriz de varianzas y covarianzas

S<-var(companies_data)
print ("Arreglo de varianzas")
## [1] "Arreglo de varianzas"
S
##             x1          x2         x3
## x1   7476.4532   303.61862 -35575.960
## x2    303.6186    26.19032  -1053.827
## x3 -35575.9596 -1053.82739 237054.270
#Matriz de correlación

R<-cor(companies_data)
print ("Matriz de correlación")
## [1] "Matriz de correlación"
R
##            x1         x2         x3
## x1  1.0000000  0.6861360 -0.8450549
## x2  0.6861360  1.0000000 -0.4229366
## x3 -0.8450549 -0.4229366  1.0000000

Ejercicios 9:

Considere un vector aleatorio \(\mathbf{X} \sim \mathcal{N}_2(\boldsymbol{\mu}, \boldsymbol{\Sigma})\), donde

\[ \boldsymbol{\mu} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}, \quad \boldsymbol{\Sigma} = \begin{bmatrix} 2 & 1.5 \\ 1.5 & 2 \end{bmatrix}. \]

a)Grafique los contornos de densidad de f (x) usando contour() en R.

#install.packages("mvtnorm")
#install.packages("MASS")
library(MASS)
library (mvtnorm)
mu<-c(0,0)
Sigma<-matrix(c(2,1.5,1.5,2),ncol = 2, byrow = T) 
#función de densidad
f <- function(x1, x2) {
  dmvnorm(cbind(x, x2), mean = mu, sigma = Sigma)
}
n <- 50
x1 <- seq(from = -5, to = 5, length.out = n)
x2 <- seq(from = -5, to = 5, length.out = n)

#  función de densidad 
f <- outer(x1, x2, FUN = function(x1, x2) dmvnorm(cbind(x1, x2), mean = mu, sigma = Sigma))
# --- Grafico de Contornos --- #
contour(x1,
x2,
f,
draw=T,
nlevels = 20,
labcex = 0.8,
xlab=expression(x[1]),
ylab=expression(x[2])
)

  1. Determine los ejes principales de los contornos hallando los autovalores y autovectores de
# Valores y vectores propios
autov <- eigen(Sigma)
# autovalores
autov$values
## [1] 3.5 0.5
# autovectores
autov$vectors
##           [,1]       [,2]
## [1,] 0.7071068 -0.7071068
## [2,] 0.7071068  0.7071068

c)Encuentre la ecuación del contorno de densidad constante que contiene el 95 % de la probabilidad y represéntelo gráficamente

#install.packages("ellipse")
library(ellipse)
## Warning: package 'ellipse' was built under R version 4.2.3
## 
## Attaching package: 'ellipse'
## The following object is masked from 'package:graphics':
## 
##     pairs
# Generar el contorno de la elipse al 95%
elipse_95 <- ellipse(Sigma, centre = mu, level = 0.95)
# Gráfico del contorno al 95%
contour(x1, x2, f, draw = T, nlevels = 20, labcex = 0.8,
        xlab = expression(x[1]), ylab = expression(x[2]))

lines(elipse_95, col = "red", lwd = 2)