Introducción

En la siguiente presentación se mostrara una breve introducción al análisis de correlación canónicas (ACC), en donde se introduce brevemente su parte formal, conceptual e implementación.

¿Por qué?

A menudo medimos dos tipos de variables en cada unidad de investigación, por ejemplo:

El análisis de correlación canónica se ocupa de la cantidad de relación (lineal) entre dos conjuntos de variables. Siendo de esta forma, La correlación canónica es una extensión de la correlación múltiple, que es la correlación entre una y y varias x.

Ademas de identificar las variables con un mayor impacto en esa relación.

Procedimiento

De una breve manera se expondrá a groso modo de que va la técnica.

Donde es importante mencionar, que la idea es generar combinaciones lineales de un conjunto de variables que maximalmente se correlacionan con funciones lineales del otro conjunto de variables.

(Es considerada una técnica hermana del ACP) en donde también se generar nuevas variables a partir de las originales.

La idea es poder correr cor(u,v)

Así

ξ1 y η1 son los primeros componentes canónicos

ξ2 y η2 son los segundos componentes canónicos

ξ3 y η3 son los segundos componentes canónicos

Carga de datos

Sí cargamos unos datos

# file.choose()
ruta <- "C:\\Users\\Daniel Camacho\\Google Drive\\Statistical Theory V\\sales.csv"
dataset <- read.csv(ruta)

DT::datatable(data = dataset,
              colnames = c("Crecimiento",
                           "Ganancia",
                           "Nuevas Ventas",
                           "Creatividad",
                           "Razonamiento Mecanico",
                           "Razonamiento Abstracto",
                           "Razonamiento Matemático"
                           )
              )
colnames(dataset) <-  c("Growth",
                           "Ganancia",
                           "Nuevas",
                           "Creatividad",
                           "Razonamiento_Mecanico",
                           "Razonamiento_Abstracto",
                           "Razonar_Matemático"
                           )

# Analísis Descriptitivo
summarytools::dfSummary(dataset,
                        plain.ascii = FALSE,
                        style = "grid",
                        graph.magnif = 0.75,
                        valid.col = FALSE,
                        tmp.img.dir  = "/tmp")

Data Frame Summary

dataset

Dimensions: 50 x 7
Duplicates: 0

No Variable Stats / Values Freqs (% of Valid) Graph Missing
1 Growth
[numeric]
Mean (sd) : 98.8 (7.3)
min < med < max:
81.5 < 100.7 < 110.8
IQR (CV) : 11.5 (0.1)
38 distinct values 0
(0.0%)
2 Ganancia
[numeric]
Mean (sd) : 106.6 (10.1)
min < med < max:
87.3 < 106.2 < 122.3
IQR (CV) : 15.2 (0.1)
46 distinct values 0
(0.0%)
3 Nuevas
[numeric]
Mean (sd) : 102.8 (4.7)
min < med < max:
94.3 < 103.2 < 115.3
IQR (CV) : 7.4 (0)
35 distinct values 0
(0.0%)
4 Creatividad
[integer]
Mean (sd) : 11.2 (4)
min < med < max:
1 < 10 < 18
IQR (CV) : 5.8 (0.4)
14 distinct values 0
(0.0%)
5 Razonamiento_Mecanico
[integer]
Mean (sd) : 14.2 (3.4)
min < med < max:
5 < 15 < 20
IQR (CV) : 5 (0.2)
14 distinct values 0
(0.0%)
6 Razonamiento_Abstracto
[integer]
Mean (sd) : 10.6 (2.1)
min < med < max:
5 < 11 < 15
IQR (CV) : 3 (0.2)
11 distinct values 0
(0.0%)
7 Razonar_Matemático
[integer]
Mean (sd) : 29.8 (10.5)
min < med < max:
9 < 31.5 < 51
IQR (CV) : 15.5 (0.4)
32 distinct values 0
(0.0%)

Donde uno es el desempeño financiero de los vendedores:

  1. Crecimiento de las ventas

  2. Ganancia de ventas

  3. Ventas de cuentas nuevas

El otro es el resultado de un test de inteligencia:

  1. Creatividad

  2. Razonamiento Mecánico

  3. Razonamiento Abstracto

  4. Razonamiento Matemático

Análisis de Correlación Canónicas.

resultados_finanzas <- dataset[, 1:3]
soft_skills <- dataset[, 4:7]

Informe de correlación

GGally::ggpairs(resultados_finanzas)

Se observan unas cuantas correlaciones altas.

correlo <- CCA::matcor(resultados_finanzas, soft_skills)  
CCA::img.matcor(correlo,  type    =   2)

Correlación Canonica R2

cc1 <- CCA::cc(resultados_finanzas, soft_skills)
cc1$cor
## [1] 0.9944827 0.8781065 0.3836057
plot(cc1$scores$xscores[,1],cc1$scores$yscores[,1], xlab = "score x", ylab = "score y")
grid(lty = 1)

plot(cc1$scores$xscores[,2],cc1$scores$yscores[,2], xlab = "score x", ylab = "score y")
grid(lty = 1)

plot(cc1$scores$xscores[,3],cc1$scores$yscores[,3], xlab = "score x", ylab = "score y")
grid(lty = 1)

Coeficientes canónicos

cc1[3:4]
## $xcoef
##                 [,1]       [,2]       [,3]
## Growth   -0.06237788 -0.1740703  0.3771529
## Ganancia -0.02092564  0.2421641 -0.1035150
## Nuevas   -0.07825817 -0.2382940 -0.3834151
## 
## $ycoef
##                               [,1]        [,2]        [,3]
## Creatividad            -0.06974814 -0.19239132 -0.24655659
## Razonamiento_Mecanico  -0.03073830  0.20157438  0.14189528
## Razonamiento_Abstracto -0.08956418 -0.49576326  0.28022405
## Razonar_Matemático     -0.06282997  0.06831607 -0.01133259

La intensidad y dirección de los coeficientes permite definir la contribución de las variables al componente canónico asociado. Así, tener nuevos clientes es lo que más determina la variable canónica U1, mientras que, paradójicamente, el beneficio parece ser más secundario.

Asimismo, V1 está determinado principalmente por razonamiento abstracto. En otras palabras, un vendedor experto en pruebas de razonamiento abstracto debería tener un mejor desempeño financiero. (A comprobar al final del análisis)

rgl::plot3d(cc1$xcoef)
rgl::text3d(cc1$xcoef[,1:3], texts = rownames(cc1$xcoef), col = "red")
coords <- NULL
for (i in 1 :nrow(cc1$xcoef)) {
  coords <- rbind(coords, rbind(c(0,0,0), cc1$xcoef[i,1:3]))
} 
rgl::lines3d(coords, col = "red", lwd = 2)
cc <- vegan::cca(resultados_finanzas, soft_skills)
plot(cc)
grid(lty = 1)

CCA::plt.cc(CCA::cc(resultados_finanzas, soft_skills), var.label = TRUE)

summary(cc)
## 
## Call:
## cca(X = resultados_finanzas, Y = soft_skills) 
## 
## Partitioning of scaled Chi-square:
##                 Inertia Proportion
## Total         0.0007636      1.000
## Constrained   0.0006048      0.792
## Unconstrained 0.0001588      0.208
## 
## Eigenvalues, and their contribution to the scaled Chi-square 
## 
## Importance of components:
##                            CCA1      CCA2       CA1       CA2
## Eigenvalue            0.0005626 0.0000422 0.0001021 5.668e-05
## Proportion Explained  0.7367645 0.0552679 0.1337416 7.423e-02
## Cumulative Proportion 0.7367645 0.7920325 0.9257740 1.000e+00
## 
## Accumulated constrained eigenvalues
## Importance of components:
##                            CCA1      CCA2
## Eigenvalue            0.0005626 0.0000422
## Proportion Explained  0.9302201 0.0697799
## Cumulative Proportion 0.9302201 1.0000000
## 
## Scaling 2 for species and site scores
## * Species are scaled proportional to eigenvalues
## * Sites are unscaled: weighted dispersion equal on all dimensions
## 
## 
## Species scores
## 
##                CCA1      CCA2      CA1       CA2
## Growth    0.0006845 -0.009454 -0.01218 -0.006143
## Ganancia -0.0285742  0.004308 -0.00100  0.010326
## Nuevas    0.0289757  0.004621  0.01275 -0.004803
## 
## 
## Site scores (weighted averages of species scores)
## 
##           CCA1     CCA2      CA1      CA2
## sit1   0.95667 -1.13507 -0.73969 -1.22606
## sit2   1.55403  0.27805  0.10648  0.39451
## sit3   0.40845 -0.69050 -0.49172 -1.29899
## sit4   1.12808 -1.29282  0.42727 -1.62675
## sit5  -0.14769 -1.81517 -0.72644 -0.33482
## sit6   0.95301 -2.17176 -0.86305 -0.99943
## sit7   0.54915 -1.35003 -0.85905 -1.51559
## sit8  -0.35398  0.73900  2.65352 -1.47008
## sit9  -0.09341 -1.93194 -0.42769 -0.34789
## sit10 -2.23788 -1.38502 -2.27024  2.33295
## sit11 -0.29863 -1.71980 -0.67677 -0.34842
## sit12 -1.25635  0.33707 -0.65112 -0.71382
## sit13 -0.23862  0.04332  0.17707 -0.15161
## sit14  0.10260 -1.03857 -0.55129 -0.17248
## sit15 -0.05907 -0.72073 -1.11298 -0.97598
## sit16  0.90054  6.25579  2.27070  1.05069
## sit17  0.22505 -2.22395 -1.13798 -0.79190
## sit18 -0.53918 -1.56803 -1.08318 -0.10422
## sit19  0.40788  1.90331  2.06696  0.64314
## sit20  0.79625  0.31638  0.83419 -0.77503
## sit21  0.72046  1.40260 -0.33564  0.44142
## sit22 -1.09301  2.87048  1.30452  1.72201
## sit23  1.24164  1.19777 -0.13939 -0.17604
## sit24 -0.73516 -1.30094 -0.85799  0.61719
## sit25 -1.19152  0.93961  0.35650  1.45429
## sit26 -0.10242  0.74994 -0.36124 -1.03655
## sit27 -1.01466 -0.39437 -0.51149  1.25834
## sit28 -1.71086 -0.60475 -0.15770 -1.19192
## sit29  2.26461 -1.69882  0.15388 -0.26762
## sit30 -1.91131 -0.05808 -0.36458  0.20830
## sit31 -0.74199  1.64225  0.75573  0.14253
## sit32  1.36627  1.04801 -0.63702  1.72244
## sit33  0.15445  0.14434  0.43378 -0.39600
## sit34  1.43834 -2.21865 -0.84210 -0.91711
## sit35 -1.03482  1.90240  0.78542  0.41101
## sit36 -0.68633 -1.06943  0.40619 -0.27525
## sit37  1.31854  2.98295  1.65027 -0.41191
## sit38  1.23107 -4.43028 -1.54533 -0.61184
## sit39 -1.45015  0.30484 -0.02148  1.12183
## sit40 -1.24328 -0.25144 -0.19973  0.67432
## sit41 -0.25530 -1.39121 -0.15150 -0.13103
## sit42  0.07092  2.08744  0.28880 -1.04452
## sit43 -0.47699  0.87087  0.54531 -0.54920
## sit44  2.34998  2.97928  2.16117 -0.32278
## sit45  0.28670  0.27777  0.54779 -0.36388
## sit46  0.44146  1.16164  1.07888  0.81445
## sit47  0.86408  1.42802  0.68819  1.62210
## sit48  1.48447  2.26291 -0.04492  2.49602
## sit49  0.15774 -1.64304 -0.73148  0.09431
## sit50 -1.46222 -0.46295 -0.97340  1.17276
## 
## 
## Site constraints (linear combinations of constraining variables)
## 
##           CCA1     CCA2      CA1      CA2
## con1   0.80161  0.60341 -0.73969 -1.22606
## con2   1.63441 -0.10967  0.10648  0.39451
## con3   0.17648  0.77031 -0.49172 -1.29899
## con4   0.59580 -0.82485  0.42727 -1.62675
## con5  -0.06848 -0.65590 -0.72644 -0.33482
## con6   0.88690 -0.41514 -0.86305 -0.99943
## con7   0.34464  0.72679 -0.85905 -1.51559
## con8  -1.36057 -1.79757  2.65352 -1.47008
## con9  -0.08693 -1.15437 -0.42769 -0.34789
## con10 -1.09034  0.10725 -2.27024  2.33295
## con11 -0.23455 -0.61678 -0.67677 -0.34842
## con12 -1.29553  1.63699 -0.65112 -0.71382
## con13 -0.32004 -0.09221  0.17707 -0.15161
## con14  0.18446 -0.21027 -0.55129 -0.17248
## con15 -0.06100  1.34730 -1.11298 -0.97598
## con16  0.65402  2.62956  2.27070  1.05069
## con17  0.27793 -0.23934 -1.13798 -0.79190
## con18 -0.31585 -0.08852 -1.08318 -0.10422
## con19  0.10005 -1.20004  2.06696  0.64314
## con20  0.39648 -0.28378  0.83419 -0.77503
## con21  0.91582  1.56238 -0.33564  0.44142
## con22 -0.93679  0.08206  1.30452  1.72201
## con23  1.22707  1.49070 -0.13939 -0.17604
## con24 -0.37191 -0.57020 -0.85799  0.61719
## con25 -0.88685 -0.44262  0.35650  1.45429
## con26 -0.29474  1.87498 -0.36124 -1.03655
## con27 -0.56097 -0.52013 -0.51149  1.25834
## con28 -1.99173  0.35258 -0.15770 -1.19192
## con29  2.15767 -1.73094  0.15388 -0.26762
## con30 -1.77133  0.28644 -0.36458  0.20830
## con31 -0.87921  0.56599  0.75573  0.14253
## con32  1.97265  0.79348 -0.63702  1.72244
## con33 -0.05156 -0.17216  0.43378 -0.39600
## con34  1.38929 -0.54129 -0.84210 -0.91711
## con35 -1.10742  0.61811  0.78542  0.41101
## con36 -0.85379 -1.42606  0.40619 -0.27525
## con37  0.82631  1.08868  1.65027 -0.41191
## con38  1.42632 -2.02750 -1.54533 -0.61184
## con39 -1.14640 -0.37443 -0.02148  1.12183
## con40 -1.01739 -0.41589 -0.19973  0.67432
## con41 -0.25508 -1.11085 -0.15150 -0.13103
## con42 -0.27420  2.36905  0.28880 -1.04452
## con43 -0.74965  0.50539  0.54531 -0.54920
## con44  1.76307  0.36197  2.16117 -0.32278
## con45  0.06282 -0.20779  0.54779 -0.36388
## con46  0.40828 -0.76005  1.07888  0.81445
## con47  1.13656 -0.49295  0.68819  1.62210
## con48  2.15962  0.74782 -0.04492  2.49602
## con49  0.35241 -0.74775 -0.73148  0.09431
## con50 -0.92427  0.06814 -0.97340  1.17276
## 
## 
## Biplot scores for constraining variables
## 
##                           CCA1     CCA2 CA1 CA2
## Creatividad            -0.3321 -0.06183   0   0
## Razonamiento_Mecanico  -0.7222 -0.20784   0   0
## Razonamiento_Abstracto -0.2533 -0.96736   0   0
## Razonar_Matemático     -0.8754 -0.35094   0   0