Instrucciones: Grupo 4: (CCA)
Trabajaran con la base de datos ‘Economia’. Esta base de datos contiene dos grupos de preguntas medidas en 210 países. Estos dos grupos son:
Población (2:4) PIB (5:7)
Cargar base de datos
library(readr)
Economias <- read_csv("C:/Users/Nieves M/Documents/ESTA55503/Datos-Tareas/Economias.csv")
head(Economias)
## # A tibble: 6 × 7
## Country `Population (millions)` Surface_area Population_density
## <chr> <dbl> <dbl> <dbl>
## 1 Afghanistan 40.1 653. 59.8
## 2 Albania 2.81 28.8 104.
## 3 Algeria 44.2 2382. 18.2
## 4 American Samoa 0.0450 0.2 231.
## 5 Andorra 0.0790 0.47 165.
## 6 Angola 34.5 1247. 26.8
## # ℹ 3 more variables: Gross_national_income <dbl>,
## # Purchasing_power_parity <dbl>, Gross_domestic_product <dbl>
Eliminar datos faltantes
Economias <- na.omit(Economias)
Grupos
#Conjunto X
POB <- scale(Economias[,(2:4)])
#Conjunto Y
PIB<- scale(Economias[,(5:7)])
Matriz de correlacion
library(CCA)
correlaciones <- matcor(POB,PIB)$XYcor
correlaciones
## Population (millions) Surface_area Population_density
## Population (millions) 1.00000000 0.92466063 -0.03012874
## Surface_area 0.92466063 1.00000000 -0.04102806
## Population_density -0.03012874 -0.04102806 1.00000000
## Gross_national_income 0.83422831 0.90818284 -0.03219303
## Purchasing_power_parity 0.91387956 0.95037080 -0.03251747
## Gross_domestic_product 0.03846137 0.03045916 0.20903568
## Gross_national_income Purchasing_power_parity
## Population (millions) 0.83422831 0.91387956
## Surface_area 0.90818284 0.95037080
## Population_density -0.03219303 -0.03251747
## Gross_national_income 1.00000000 0.98302932
## Purchasing_power_parity 0.98302932 1.00000000
## Gross_domestic_product 0.04946633 0.05219634
## Gross_domestic_product
## Population (millions) 0.03846137
## Surface_area 0.03045916
## Population_density 0.20903568
## Gross_national_income 0.04946633
## Purchasing_power_parity 0.05219634
## Gross_domestic_product 1.00000000
Se observa que las variables ‘Gross national income’ y ‘Purchasing power parity’ tienen alta correlación positiva con ‘Population’ y ‘Surface area’, mientras que ‘Gross domestic product’ muestra correlaciones debiles.
Reduccion de variables para evitar multicolinealidad
POB2<- na.omit(POB[,-2]) #Se elimina 'Surface area'
PIB2<- na.omit(PIB[,-2]) #Se elimina 'Purchase power parity'
Pruebas de normalidad
Conjunto X
library(MVN)
# Normalidad univariada para POB2
mvn(data = as.data.frame(POB2), univariateTest = "SW")$univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk Population (millions) 0.2223 <0.001 NO
## 2 Shapiro-Wilk Population_density 0.1602 <0.001 NO
# Normal multivariada para POB2
mvn(data = as.data.frame(POB2), mvnTest = "hz")$multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 100.0889 0 NO
Conjunto Y
# Normalidad univariada para Y
mvn(data = as.data.frame(PIB2), univariateTest = "SW")$univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk Gross_national_income 0.2082 <0.001 NO
## 2 Shapiro-Wilk Gross_domestic_product 0.8784 <0.001 NO
# Normal multivariada para Y
mvn(data = as.data.frame(PIB2), mvnTest = "hz")$multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 36.04869 0 NO
Tanto el POB2 como el PIB2, no cumplen con la normalidad univariada ni multivariada.
Transfromaciones
#Transformacion para POB2
library(bestNormalize)
BN1<-bestNormalize(POB2[,1])
BN2<-bestNormalize(POB2[,2])
#Transformacion para PIB2
BNP1<-bestNormalize(PIB2[,1])
BNP2<-bestNormalize(PIB2[,2])
POBT<-matrix(c(BN1$x.t,BN2$x.t), ncol=2)
PIBT<-matrix(c(BNP1$x.t,BNP2$x.t), ncol=2)
Verificar normalidad
Conjunto X
#Normalidad univariada
mvn(data = as.data.frame(POBT), univariateTest = "SW")$univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk V1 0.9491 <0.001 NO
## 2 Shapiro-Wilk V2 0.9800 0.0053 NO
#Normalidad multivariada
mvn(data = as.data.frame(POBT), mvnTest = "hz")$multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 1.40232 0.005057246 NO
Conjunto Y
#Normalidad univariada
mvn(data = as.data.frame(PIBT), univariateTest = "SW")$univariateNormality
## Test Variable Statistic p value Normality
## 1 Shapiro-Wilk V1 0.9998 1.0000 YES
## 2 Shapiro-Wilk V2 0.9886 0.1015 YES
#Normal multivariada
mvn(data = as.data.frame(PIBT), mvnTest = "hz")$multivariateNormality
## Test HZ p value MVN
## 1 Henze-Zirkler 1.701218 0.0007595286 NO
Luego de las transformaciones, las variables de POBT alcanzaron normalidad univariada y multivaraiada. Por otro lado, las variables de PIBT solo alcanzaron normalidad univariada.En una investigación real, al los dos conjuntos no ser normales, no se pudieran realizar estas pruebas pero para propositos de esta tarea asumimos que los dos conjuntos sí la alcanzaron
Vectores canonicos
cca1 <- cc(POBT,PIBT)
cca1[3:4]
## $xcoef
## [,1] [,2]
## [1,] -1.000054572 0.09265412
## [2,] -0.000589675 1.00433739
##
## $ycoef
## [,1] [,2]
## [1,] -1.0340566 -0.042816
## [2,] 0.2222661 1.010060
#Correlaciones canonicas
cor_can <- cca1$cor
Prueba de significancia
library(CCP)
p.values <- p.asym(cca1$cor, nrow(POBT), ncol(POBT), ncol(PIBT))
## Wilks' Lambda, using F-approximation (Rao's F):
## stat approx df1 df2 p.value
## 1 to 2: 0.2720325 91.729807 4 400 0.00000000
## 2 to 2: 0.9824385 3.592959 1 201 0.05945977
Obteniendo un p-valor menor de 0.001 en el primer par indica una relacion significativa entre los conjuntos ‘X’ y ‘Y’. Por otro lado, en el segundo par de obtuvo p-valor mayor de 0.05, por lo que no es significativo.
Correlaciones canónicas:
cca1$cor
## [1] 0.8503557 0.1325198
cca1$names$Xnames <- c("POB", "DENSITY")
cca1$names$Ynames <- c("GNI", "GDP")
Interpretaciones de las correlaciones canónicas:
(U1,V1): correlación fuerte (0.866). (U2,V2): correlación débil (0.135).
El análisis sugiere que el primer par de variables canónicas (U1,V1) tiene una correlación fuerte (0.866), y sí alcanza significancia estadística (con un p-value cercano a 0). Los otros pares muestran correlaciones débiles y no son significativos. Este proceso nos demuestra que nos deberíamos enfocar en el primer par de variables canónicas debido a que estas explican, significativamente el conjunto de variables de población y del PIB.
Grafica de (U1,V1)
plt.cc(cca1, var.label = TRUE, type = "b")
Existe una relación fuerte entre combinaciones lineales que involucran,
número de la Población, gross national income y la densidad de la
población, por lo que podría ser relevante para explicar patrones entre
la población y su producto interno bruto en la economía de un país.