INTEGRANTES:

PREGUNTA 1

1.1 Contexto

El problema 1 tiene como objetivo evaluar el efecto de tres tipos de entrenamiento (Técnico, Resistencia y Fuerza) sobre el rendimiento de 20 nadadores, medido a través de sus tiempos en tres pruebas (50m, 100m y 200m). Para controlar las diferencias individuales en el rendimiento inicial, se emplea un análisis MANCOVA (Análisis Multivariado de Covarianza), utilizando los tiempos previos al entrenamiento como covariables.

1.1.1 Paquetes

# Cargar todas las librerías necesarias al inicio
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(mvnormtest)
library(heplots)
## Cargando paquete requerido: broom
library(biotools)
## Cargando paquete requerido: MASS
## 
## Adjuntando el paquete: 'MASS'
## 
## The following object is masked from 'package:dplyr':
## 
##     select
## 
## ---
## biotools version 4.3
## 
## Adjuntando el paquete: 'biotools'
## 
## The following object is masked from 'package:heplots':
## 
##     boxM
library(covTestR)
library(psych)
## 
## Adjuntando el paquete: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(jmv)
## 
## Adjuntando el paquete: 'jmv'
## 
## The following objects are masked from 'package:psych':
## 
##     pca, reliability
library(car)
## Cargando paquete requerido: carData
## 
## Adjuntando el paquete: 'car'
## 
## The following object is masked from 'package:psych':
## 
##     logit
## 
## The following object is masked from 'package:dplyr':
## 
##     recode
## 
## The following object is masked from 'package:purrr':
## 
##     some
library(readxl)
library(ggplot2)
library(gridExtra)
## 
## Adjuntando el paquete: 'gridExtra'
## 
## The following object is masked from 'package:dplyr':
## 
##     combine
library(GGally)
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
library(MVN)
library(epiDisplay)
## Cargando paquete requerido: foreign
## Cargando paquete requerido: survival
## Cargando paquete requerido: nnet
## 
## Adjuntando el paquete: 'epiDisplay'
## 
## The following objects are masked from 'package:psych':
## 
##     alpha, cs, lookup
## 
## The following object is masked from 'package:ggplot2':
## 
##     alpha
library(scales)
## 
## Adjuntando el paquete: 'scales'
## 
## The following object is masked from 'package:epiDisplay':
## 
##     alpha
## 
## The following objects are masked from 'package:psych':
## 
##     alpha, rescale
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(rgl)
## 
## Adjuntando el paquete: 'rgl'
## 
## The following objects are masked from 'package:heplots':
## 
##     arrow3d, bbox3d
library(hrbrthemes)
library(gganimate)
library(png)
library(gifski)
library(viridis)
## Cargando paquete requerido: viridisLite
## 
## Adjuntando el paquete: 'viridis'
## 
## The following object is masked from 'package:scales':
## 
##     viridis_pal
library(forcats)
library(BSDA)
## Cargando paquete requerido: lattice
## 
## Adjuntando el paquete: 'lattice'
## 
## The following object is masked from 'package:epiDisplay':
## 
##     dotplot
## 
## 
## Adjuntando el paquete: 'BSDA'
## 
## The following objects are masked from 'package:carData':
## 
##     Vocab, Wool
## 
## The following object is masked from 'package:datasets':
## 
##     Orange
library(dlookr)
## Registered S3 methods overwritten by 'dlookr':
##   method          from  
##   plot.transform  scales
##   print.transform scales
## 
## Adjuntando el paquete: 'dlookr'
## 
## The following object is masked from 'package:psych':
## 
##     describe
## 
## The following object is masked from 'package:tidyr':
## 
##     extract
## 
## The following object is masked from 'package:base':
## 
##     transform
library(ggpubr)
library(summarytools)
## 
## Adjuntando el paquete: 'summarytools'
## 
## The following object is masked from 'package:tibble':
## 
##     view
library(pastecs)
## 
## Adjuntando el paquete: 'pastecs'
## 
## The following object is masked from 'package:dlookr':
## 
##     extract
## 
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## The following object is masked from 'package:tidyr':
## 
##     extract
library(corrplot)
## corrplot 0.95 loaded
library(PerformanceAnalytics)
## Cargando paquete requerido: xts
## Cargando paquete requerido: zoo
## 
## Adjuntando el paquete: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Adjuntando el paquete: 'xts'
## 
## The following objects are masked from 'package:pastecs':
## 
##     first, last
## 
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## 
## Adjuntando el paquete: 'PerformanceAnalytics'
## 
## The following objects are masked from 'package:dlookr':
## 
##     kurtosis, skewness
## 
## The following object is masked from 'package:graphics':
## 
##     legend
library(ggcorrplot)
library(ade4)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(patchwork)
## 
## Adjuntando el paquete: 'patchwork'
## 
## The following object is masked from 'package:MASS':
## 
##     area
library(adegenet)
## 
##    /// adegenet 2.1.11 is loaded ////////////
## 
##    > overview: '?adegenet'
##    > tutorials/doc/questions: 'adegenetWeb()' 
##    > bug reports/feature requests: adegenetIssues()
## 
## 
## 
## Adjuntando el paquete: 'adegenet'
## 
## The following object is masked from 'package:survival':
## 
##     strata
library(FactoMineR)
## 
## Adjuntando el paquete: 'FactoMineR'
## 
## The following object is masked from 'package:ade4':
## 
##     reconst
library(sjPlot)
library(performance)
library(jsonlite)
## 
## Adjuntando el paquete: 'jsonlite'
## 
## The following object is masked from 'package:purrr':
## 
##     flatten
library(visdat)
library(naniar)
library(tidytext)
library(effectsize)
## 
## Adjuntando el paquete: 'effectsize'
## 
## The following object is masked from 'package:psych':
## 
##     phi

1.1.2 VARIABLES:

  • Variable Independiente: Tratamiento (T, R, F).

  • Variables Dependientes: Tiempos post-entrenamiento (post_50m, post_100m, post_200m).

  • Covariables: Tiempos pre-entrenamiento (pre_50m,pre_100,pre_200).

1.1.3 Descripcion de tratamientos:

  • Entrenamiento Técnico (T): } Mejora la técnica de nado (posición corporal, coordinación brazos-piernas, eficiencia en vueltas).

  • Entrenamiento de Resistencia (R): Aumenta la capacidad aeróbica mediante series largas a intensidad moderada-alta.

  • Entrenamiento de Fuerza (F): Desarrolla la potencia muscular (gimnasio + arrastres en agua) y velocidad explosiva.

1.2 Lectura de datos

datos1 <- read_xlsx("natacion.xlsx")[, 1:7]
## New names:
## • `` -> `...8`
## • `` -> `...9`
head(datos1)
## # A tibble: 6 × 7
##   tratamiento pre_50m pre_100m pre_200m post_50m post_100m post_200m
##   <chr>         <dbl>    <dbl>    <dbl>    <dbl>     <dbl>     <dbl>
## 1 T              28.5     62.3     135.     27.8      61.5      134 
## 2 R              30.2     66.1     142.     29.5      65        141 
## 3 F              29.8     65.4     141      29.5      65.8      142.
## 4 T              27.9     61.5     134.     27.5      60.8      132.
## 5 R              31       67.8     145.     30.8      67.5      144 
## 6 F              30.5     66.8     144.     30.2      66        143.

1.3 Analisis descriptivo

Se realiaza un analisis a cada grupo (tipo de entrenamiento)

1.3.1 Resumen

Grupo Fuerza (F)

  • Promedios: Los nadadores de este grupo tienen un rendimiento intermedio. Sus tiempos son más rápidos que los del grupo de Resistencia, pero más lentos que los del grupo Técnico, tanto antes como después del entrenamiento.

  • Asimetría: Los valores de skew son cercanos a 0 o negativos, lo que sugiere que los tiempos están distribuidos de forma bastante simétrica. No hay evidencia de nadadores muy fuera del promedio.

  • Curtosis: Todos los valores son negativos (por ejemplo, -1.74 en post_50m), lo que indica que los datos están concentrados cerca de la media, sin muchos valores extremos.

conclusion:

El entrenamiento de resistencia no parece haber mejorado significativamente los tiempos. Algunos nadadores incluso muestran tiempos por encima del promedio esperado, lo cual podría indicar menor efectividad de este enfoque para estas distancias.

Grupo Resistencia (R)

  • Promedios: Este grupo tiene los tiempos más lentos, tanto antes como después del entrenamiento, en las tres distancias (ej. post_100m: 65.64s). Es el grupo con el menor rendimiento promedio.

  • Asimetría: Algunos valores son positivos (por ejemplo, skew = 0.42 en post_100m), lo que indica que algunos nadadores tuvieron tiempos más altos de lo esperado (más lentos).

  • Curtosis: Todos los valores son negativos, indicando una distribución uniforme sin valores atípicos.

Conclusion:

El entrenamiento de resistencia no parece haber mejorado significativamente los tiempos. Algunos nadadores incluso muestran tiempos por encima del promedio esperado, lo cual podría indicar menor efectividad de este enfoque para estas distancias.

Grupo Técnico (T)

  • Promedios: Este grupo muestra los mejores tiempos promedio, tanto en pre como en post entrenamiento (por ejemplo, post_50m: 27.81s), lo que indica un alto rendimiento general.

  • Consistencia: Es el grupo con menor desviación estándar, especialmente en pruebas de 50m y 100m. Esto sugiere que todos los nadadores del grupo tienen un rendimiento muy similar.

  • Asimetría: Los valores están muy cerca de 0, lo que indica una distribución simétrica

  • Curtosis: También negativa, indicando que los tiempos se agrupan bastante alrededor de la media.

Conclusion:

El entrenamiento técnico no solo mantiene un alto rendimiento, sino también una gran uniformidad entre los nadadores. Es el grupo más consistente y rápido, lo que sugiere que este tipo de entrenamiento fue el más efectivo en mejorar el rendimiento.

# Resumen estadístico
describeBy(datos1[,2:7], group = datos1$tratamiento)
## 
##  Descriptive statistics by group 
## group: F
##           vars n   mean   sd median trimmed  mad   min   max range  skew
## pre_50m      1 6  29.63 0.60  29.65   29.63 0.59  28.8  30.5   1.7  0.03
## pre_100m     2 6  65.17 1.13  65.20   65.17 0.96  63.5  66.8   3.3 -0.04
## pre_200m     3 6 140.77 1.94 140.75  140.77 1.63 137.8 143.5   5.7 -0.11
## post_50m     4 6  29.53 0.68  29.65   29.53 0.82  28.5  30.2   1.7 -0.34
## post_100m    5 6  65.35 0.90  65.65   65.35 0.67  63.8  66.2   2.4 -0.66
## post_200m    6 6 141.37 1.70 141.70  141.37 1.70 138.5 143.0   4.5 -0.56
##           kurtosis   se
## pre_50m      -1.61 0.25
## pre_100m     -1.44 0.46
## pre_200m     -1.40 0.79
## post_50m     -1.74 0.28
## post_100m    -1.34 0.37
## post_200m    -1.40 0.69
## ------------------------------------------------------------ 
## group: R
##           vars n   mean   sd median trimmed  mad   min   max range  skew
## pre_50m      1 7  30.14 0.67   30.2   30.14 0.89  29.2  31.0   1.8 -0.09
## pre_100m     2 7  65.99 1.33   66.1   65.99 1.63  64.0  67.8   3.8 -0.10
## pre_200m     3 7 142.20 2.15  142.5  142.20 2.22 139.0 145.2   6.2 -0.11
## post_50m     4 7  29.97 0.53   29.8   29.97 0.44  29.5  30.8   1.3  0.38
## post_100m    5 7  65.64 1.16   65.2   65.64 1.04  64.5  67.5   3.0  0.42
## post_200m    6 7 141.54 1.72  141.0  141.54 2.22 139.5 144.0   4.5  0.16
##           kurtosis   se
## pre_50m      -1.80 0.25
## pre_100m     -1.60 0.50
## pre_200m     -1.57 0.81
## post_50m     -1.77 0.20
## post_100m    -1.65 0.44
## post_200m    -1.83 0.65
## ------------------------------------------------------------ 
## group: T
##           vars n   mean   sd median trimmed  mad   min   max range  skew
## pre_50m      1 7  28.17 0.42   28.2   28.17 0.44  27.5  28.8   1.3 -0.08
## pre_100m     2 7  61.94 0.69   62.0   61.94 0.44  60.8  63.0   2.2 -0.15
## pre_200m     3 7 134.50 1.26  134.5  134.50 1.04 132.5 136.5   4.0  0.00
## post_50m     4 7  27.81 0.41   27.8   27.81 0.30  27.2  28.5   1.3  0.14
## post_100m    5 7  61.34 0.88   61.5   61.34 0.74  60.0  62.8   2.8  0.12
## post_200m    6 7 133.54 1.49  133.8  133.54 0.59 131.0 135.8   4.8 -0.24
##           kurtosis   se
## pre_50m      -1.32 0.16
## pre_100m     -1.07 0.26
## pre_200m     -1.13 0.48
## post_50m     -1.03 0.15
## post_100m    -1.08 0.33
## post_200m    -1.01 0.56
# Gráficos de caja para cambios post-pre
library(ggplot2)
library(gridExtra)

p1 <- ggplot(datos1, aes(x=tratamiento, y=post_50m-pre_50m, fill=tratamiento)) + 
  geom_boxplot() + labs(title="Cambio en 50m", y="Diferencia (post-pre)")

p2 <- ggplot(datos1, aes(x=tratamiento, y=post_100m-pre_100m, fill=tratamiento)) + 
  geom_boxplot() + labs(title="Cambio en 100m")

p3 <- ggplot(datos1, aes(x=tratamiento, y=post_200m-pre_200m, fill=tratamiento)) + 
  geom_boxplot() + labs(title="Cambio en 200m")

grid.arrange(p1, p2, p3, ncol=3)

1.3.2 Conclusiones

  • El entrenamiento técnico (T) es el más efectivo en general, mostrando mejoras consistentes y marcadas en las tres distancias (50m, 100m y 200m), especialmente en las pruebas cortas.

  • El entrenamiento de resistencia (R) también resulta beneficioso, principalmente en la prueba de 200m, aunque con mayor variabilidad en los resultados.

  • El entrenamiento de fuerza (F) no muestra beneficios claros, y en varios casos los nadadores empeoran su rendimiento, lo que sugiere que no es adecuado para mejorar los tiempos de competencia.

1.4 Supuestos de MANCOVA

1.4.1 Normalidad Multivariada

Se usara la prueba shapiro-wilk multivariado por grupo

# Dividir por grupos
trat_T <- datos1 %>% filter(tratamiento == "T") %>% 
  dplyr::select(post_50m, post_100m, post_200m)

trat_R <- datos1 %>% filter(tratamiento == "R") %>% 
  dplyr::select(post_50m, post_100m, post_200m)

trat_F <- datos1 %>% filter(tratamiento == "F") %>% 
  dplyr::select(post_50m, post_100m, post_200m)

# Test de Shapiro-Wilk multivariado
mshapiro.test(t(trat_T))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.65709, p-value = 0.001238
mshapiro.test(t(trat_R))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.79155, p-value = 0.03375
mshapiro.test(t(trat_F))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.76762, p-value = 0.02947

Hipótesis: H0 (nula): Los datos del grupo siguen una distribución normal multivariada.

H1 (alternativa): Los datos del grupo no siguen una distribución normal multivariada

Conclusion:

  • todos los valores de p son menores a 0.05, se rechaza la hipótesis nula en los tres grupos.

1.4.2 Homogeneidad de Matrices de Varianza-Covarianza

Su usa el Test de Box’s M

# Test de Box's M

library(biotools)
boxM(datos1[, 5:7], datos1$tratamiento)
## 
##  Box's M-test for Homogeneity of Covariance Matrices
## 
## data:  datos1[, 5:7]
## Chi-Sq (approx.) = 16.254, df = 12, p-value = 0.1799

Hipótesis: H0 (nula): Las matrices de varianza-covarianza son iguales entre los grupos.

H1 (alternativa): Al menos una matriz de varianza-covarianza difiere entre los grupos.

Conclusion:

El valor de p es mayor que 0.05, por lo que no se rechaza la hipótesis nula. Por tanto, se cumple el supuesto de homogeneidad de matrices de varianza-covarianza necesario para aplicar MANCOVA.

1.4.3 Correlación entre Variables Dependientes

Se usara el Test de esfericidad de bartlett

# Test de esfericidad de Bartlett
cortest.bartlett(cor(datos1[, 5:7]), n = nrow(datos1))
## $chisq
## [1] 132.5793
## 
## $p.value
## [1] 1.503829e-28
## 
## $df
## [1] 3

Hipótesis: H0 (nula): No hay correlación entre las variables dependientes.

H1 (alternativa): Existe correlación significativa entre las variables dependientes.

Conclusion:

  • El p-value es significativamente menor que 0.05, por lo tanto, se rechaza la hipótesis nula.

1.5 Análisis MANCOVA

Se realiazara un MANCOVA para evaluar si algun tipo de tratamiento tiene un efecto global significativo sobre las variables dependientes (post_50m, post_100m y post_200m), controlando las covariables pre_50m, pre_100m y pre_200m en un Diseño Completamente Aleatorizad

# Modelo MANCOVA
modelo <- manova(cbind(post_50m, post_100m, post_200m) ~ 
                 tratamiento + pre_50m + pre_100m + pre_200m, 
               data = datos1)

# Resumen del modelo
summary(modelo, test = "Pillai")
##             Df  Pillai approx F num Df den Df    Pr(>F)    
## tratamiento  2 1.39440    9.978      6     26 9.768e-06 ***
## pre_50m      1 0.90440   37.840      3     12 2.145e-06 ***
## pre_100m     1 0.08030    0.349      3     12    0.7905    
## pre_200m     1 0.05806    0.247      3     12    0.8622    
## Residuals   14                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Wilks")
##             Df   Wilks approx F num Df den Df    Pr(>F)    
## tratamiento  2 0.00844   39.543      6     24 2.753e-11 ***
## pre_50m      1 0.09560   37.840      3     12 2.145e-06 ***
## pre_100m     1 0.91970    0.349      3     12    0.7905    
## pre_200m     1 0.94194    0.247      3     12    0.8622    
## Residuals   14                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Hotelling-Lawley")
##             Df Hotelling-Lawley approx F num Df den Df    Pr(>F)    
## tratamiento  2           69.764  127.900      6     22 5.834e-16 ***
## pre_50m      1            9.460   37.840      3     12 2.145e-06 ***
## pre_100m     1            0.087    0.349      3     12    0.7905    
## pre_200m     1            0.062    0.247      3     12    0.8622    
## Residuals   14                                                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Roy")
##             Df    Roy approx F num Df den Df    Pr(>F)    
## tratamiento  2 69.073  299.314      3     13 3.048e-12 ***
## pre_50m      1  9.460   37.840      3     12 2.145e-06 ***
## pre_100m     1  0.087    0.349      3     12    0.7905    
## pre_200m     1  0.062    0.247      3     12    0.8622    
## Residuals   14                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Conclusion:

Efecto tratamiento:

  • El tipo de tratamiento tiene un efecto significativo en las variables dependientes (tiempos post-entrenamiento en las distancias de 50m, 100m y 200m). Esto se observa en todos los resultados de las pruebas estadísticas (Pillai, Wilks, Hotelling-Lawley, y Roy), con valores de p muy pequeños (p < 0.001), lo que indica que los tratamientos realmente generan diferencias en los tiempos post-entrenamiento de los nadadores.

Efecto de la covariable pre_50m:

  • La covariable pre_50m (tiempo antes del entrenamiento en 50m) tiene un efecto altamente significativo en todas las variables dependientes. Esto quiere decir que el tiempo de los nadadores en 50m antes del entrenamiento es un covariable importante para su rendimiento posterior en las tres distancias evaluadas (50m, 100m y 200m).

  • Las covariables pre_100m y pre_200m no resultaron ser significativas en el análisis, ya que sus valores de p fueron altos (mayores que 0.05). Esto indica que estos tiempos previos no tienen una relación estadísticamente relevante con las variables dependientes en este caso.

1.6 ANCOVAs Post-Hoc

Dado que el MANCOVA fue significativo, se procede con ANCOVAs univariados para identificar en qué variables dependientes el tipo de tratamiento causó diferencias, ajustando los resultados por pre_50m, la única covariable significativa. Las covariables pre_100m y pre_200m no fueron significativas, por lo que no se consideran en el análisis.

post_50m:

summary(aov(post_50m ~ tratamiento + pre_50m, data = datos1))
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## tratamiento  2 18.009   9.005  125.24 1.69e-10 ***
## pre_50m      1  3.866   3.866   53.77 1.68e-06 ***
## Residuals   16  1.150   0.072                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hipotesis:

  • H0 : Todos los tipos de entrenamiento tienen el mismo efecto sobre post_50m (no hay diferencias entre ellos).

  • H1 : Al menos uno tiene efecto distinto

Conclusion:

Se rechaza la hipótesis nula. El tipo de entrenamiento tiene un efecto significativo en los tiempos de post_50m, incluso al controlar el rendimiento previo (pre_50m), que también influye significativamente.

summary(aov(post_100m ~ tratamiento + pre_50m, data = datos1))
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## tratamiento  2  79.20   39.60  270.89 4.58e-13 ***
## pre_50m      1  14.47   14.47   98.99 2.95e-08 ***
## Residuals   16   2.34    0.15                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hipotesis:

  • H0 : Todos los tipos de entrenamiento (tratamiento) tienen el mismo efecto sobre post_100m (no hay diferencias entre ellos).

  • H1 : Al menos uno tiene efecto distinto

Conclusion: Se rechaza la hipótesis nula. Al menos un tratamiento genera diferencias significativas en los tiempos de 100 metros post-entrenamiento, controlando el tiempo previo (pre_50m).

summary(aov(post_200m ~ tratamiento + pre_50m, data = datos1))
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## tratamiento  2 285.41  142.71   494.5 4.13e-15 ***
## pre_50m      1  40.91   40.91   141.8 2.30e-09 ***
## Residuals   16   4.62    0.29                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hipotesis:

  • H0 : Todos los tipos de entrenamiento tienen el mismo efecto sobre post_200m (no hay diferencias entre ellos).

  • H1 : Al menos uno tiene efecto distinto

Conclusion: Se rechaza la hipótesis nula. El tipo de entrenamiento influye significativamente en los tiempos de 200 metros después del tratamiento, controlando el tiempo previo (pre_50m).

1.7 Conclusion final:

El tipo de entrenamiento tiene un impacto claro en los tiempos de carrera después del entrenamiento (en 50m, 100m y 200m), incluso cuando se considera el tiempo previo en 50 metros (pre_50m). Aunque el tiempo previo también influye en los resultados, el tipo de entrenamiento es el principal factor que marca la diferencia. Esto demuestra que tanto el tipo de entrenamiento como los tiempos iniciales son importantes para mejorar las velocidades en las carreras de natacion.

PREGUNTA 2

2.1. Contexto

Objetivo

Evaluar el efecto de tres estrategias de enseñanza sobre la comprensión lectora (narrativa y argumentativa) la cual está evaluada del 0-20, controlando por dos covariables (pretest y número de libros leídos), y usando secciones como bloque (diseño en bloques completos al azar, DBCA).

Factores:

  • Factor tratamiento (Metodo): Lectura guiada, Resumen y subrayado, Videos explicativos
  • Bloque (Seccion): 4 secciones distintas de estudiantes
  • Covariables: Pretest(notas de un test pasado) de comprensión lectora, número de libros leídos

Variables dependientes:

  • Comprensión de texto narrativo
  • Comprensión de texto argumentativo

2.2 Cargar datos y librerías

# Cargar datos
datos2 <- read.csv("DATA_REALISTA_MANCOVA.csv")
str(datos2)
## 'data.frame':    90 obs. of  6 variables:
##  $ Metodo       : chr  "Lectura guiada" "Lectura guiada" "Lectura guiada" "Lectura guiada" ...
##  $ Seccion      : chr  "Seccion_1" "Seccion_1" "Seccion_1" "Seccion_1" ...
##  $ Pretest      : int  12 16 13 17 18 10 14 17 14 14 ...
##  $ Libros       : int  5 6 6 6 6 6 6 6 7 6 ...
##  $ Narrativo    : num  12 11.5 8.6 12.4 11.5 9.5 10.7 10.3 11.5 9.8 ...
##  $ Argumentativo: num  10.4 13.1 8.7 10.5 9.4 7.6 12.4 10.5 11.6 9.2 ...
head(datos2)
##           Metodo   Seccion Pretest Libros Narrativo Argumentativo
## 1 Lectura guiada Seccion_1      12      5      12.0          10.4
## 2 Lectura guiada Seccion_1      16      6      11.5          13.1
## 3 Lectura guiada Seccion_1      13      6       8.6           8.7
## 4 Lectura guiada Seccion_1      17      6      12.4          10.5
## 5 Lectura guiada Seccion_1      18      6      11.5           9.4
## 6 Lectura guiada Seccion_1      10      6       9.5           7.6

2.3 Análisis Gráfico

# Dispersión entre variables dependientes
ggplot(datos2, aes(x = Narrativo, y = Argumentativo, color = Metodo)) +
  geom_point(size = 3) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  theme_minimal() +
  labs(title = "Relación entre comprensión narrativa y argumentativa")
## `geom_smooth()` using formula = 'y ~ x'

Este gráfico de dispersión muestra la relación entre los puntajes de comprensión narrativa (Narrativo) y argumentativa (Argumentativo), diferenciando los tres métodos de enseñanza mediante colores. La línea negra de tendencia, con una correlación de r = 0.72, revela una relación positiva fuerte: a mayor puntaje en una competencia, mayor en la otra. Los puntos correspondientes a Videos explicativos (azules) se concentran en la zona superior derecha, indicando que este método logra los puntajes más altos en ambas habilidades

# Boxplot por tipo de texto y método
datos2 %>%
  pivot_longer(cols = c(Narrativo, Argumentativo), 
               names_to = "Tipo", values_to = "Puntaje") %>%
  ggplot(aes(x = Metodo, y = Puntaje, fill = Metodo)) +
  geom_boxplot() +
  facet_wrap(~Tipo) +
  theme_minimal() +
  labs(title = "Distribución de competencias por método")

Este gráfico de cajas compara la distribución de puntajes de Narrativo y Argumentativo según el método de enseñanza. En ambas competencias, los Videos explicativos destacan con medianas más altas (Narrativo ≈ 18, Argumentativo ≈ 17.5) y cajas compactas, reflejando resultados superiores y consistentes.

2.4 Pruebas de supuestos para MANCOVA

2.4.1 Normalidad multivariada por grupo

H₀ (Hipótesis nula): Las variables dependientes siguen una distribución normal multivariada dentro de cada grupo de tratamiento.

H₁ (Hipótesis alternativa): Al menos uno de los grupos no presenta normalidad multivariada en las variables dependientes.

trat1 <- datos2 %>% filter(Metodo == "Lectura guiada") %>% dplyr::select(Narrativo, Argumentativo)
trat2 <- datos2 %>% filter(Metodo == "Resumen y subrayado") %>% dplyr::select(Narrativo, Argumentativo)
trat3 <- datos2 %>% filter(Metodo == "Videos explicativos") %>%dplyr::select(Narrativo, Argumentativo)

cat("Lectura guiada:\n")
## Lectura guiada:
print(mshapiro.test(t(trat1)))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.95117, p-value = 0.1816
cat("\nResumen y subrayado:\n")
## 
## Resumen y subrayado:
print(mshapiro.test(t(trat2)))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.98062, p-value = 0.8418
cat("\nVideos explicativos:\n")
## 
## Videos explicativos:
print(mshapiro.test(t(trat3)))
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.94634, p-value = 0.1348

Interpretación:Dado que en los tres grupos el valor p es mayor que 0.05, no se rechaza la hipótesis nula de normalidad multivariada. Por tanto, se concluye que las variables dependientes presentan distribución normal multivariada dentro de cada grupo de tratamiento, cumpliéndose este supuesto para aplicar MANCOVA.

2.4.2 Homogeneidad de matrices de covarianza (Box’s M)

H₀: Las matrices de varianzas-covarianzas de las variables dependientes son iguales entre los grupos (métodos de enseñanza).

H₁: Al menos una matriz de varianzas-covarianzas difiere significativamente entre los grupos.

boxM(datos2[, c("Narrativo", "Argumentativo")], datos2$Metodo)
## 
##  Box's M-test for Homogeneity of Covariance Matrices
## 
## data:  datos2[, c("Narrativo", "Argumentativo")]
## Chi-Sq (approx.) = 12.341, df = 6, p-value = 0.05479

Interpretación: El valor p es ligeramente mayor que 0.05, lo cual indica que no se rechaza la hipótesis nula de igualdad de matrices. Por tanto, se concluye que las matrices de varianzas-covarianzas pueden considerarse homogéneas entre los grupos, cumpliendo así este supuesto de MANCOVA.

2.4.3 Correlación entre variables dependientes (Bartlett)

H₀: Las variables dependientes (Narrativo y Argumentativo) no están correlacionadas (la matriz de correlación es identidad).

H₁: Las variables dependientes están significativamente correlacionadas (la matriz de correlación difiere de la identidad).

cortest.bartlett(cor(datos2[, c("Narrativo", "Argumentativo")]), n = nrow(datos2))
## $chisq
## [1] 206.4526
## 
## $p.value
## [1] 8.16259e-47
## 
## $df
## [1] 1

Interpretación: El valor p es mucho menor que 0.05, por lo que se rechaza la hipótesis nula de que las variables no están correlacionadas. Esto indica que existe una correlación significativa entre la comprensión de textos narrativos y argumentativos, lo cual justifica el uso de un análisis multivariado como MANCOVA.

2.4.4. MANCOVA (con covariables y bloque)

modelo <- manova(cbind(Narrativo, Argumentativo) ~ Metodo + Seccion + Pretest + Libros, data = datos2)

# Resultados con distintos tests
summary(modelo, test = "Pillai")
##           Df  Pillai approx F num Df den Df    Pr(>F)    
## Metodo     2 0.85874  30.8501      4    164 < 2.2e-16 ***
## Seccion    3 0.02758   0.3822      6    164    0.8896    
## Pretest    1 0.35643  22.4302      2     81 1.771e-08 ***
## Libros     1 0.00723   0.2951      2     81    0.7453    
## Residuals 82                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Wilks")
##           Df   Wilks approx F num Df den Df    Pr(>F)    
## Metodo     2 0.14499   65.861      4    162 < 2.2e-16 ***
## Seccion    3 0.97243    0.380      6    162    0.8909    
## Pretest    1 0.64357   22.430      2     81 1.771e-08 ***
## Libros     1 0.99277    0.295      2     81    0.7453    
## Residuals 82                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Hotelling-Lawley")
##           Df Hotelling-Lawley approx F num Df den Df    Pr(>F)    
## Metodo     2           5.8712  117.425      4    160 < 2.2e-16 ***
## Seccion    3           0.0284    0.378      6    160    0.8922    
## Pretest    1           0.5538   22.430      2     81 1.771e-08 ***
## Libros     1           0.0073    0.295      2     81    0.7453    
## Residuals 82                                                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(modelo, test = "Roy")
##           Df    Roy approx F num Df den Df    Pr(>F)    
## Metodo     2 5.8669  240.541      2     82 < 2.2e-16 ***
## Seccion    3 0.0282    0.770      3     82    0.5139    
## Pretest    1 0.5538   22.430      2     81 1.771e-08 ***
## Libros     1 0.0073    0.295      2     81    0.7453    
## Residuals 82                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretación: Si alguno de los tests (especialmente Pillai o Wilks) muestra un valor de p < 0.05 para Metodo, se rechaza H₀ → hay diferencias significativas entre métodos en al menos una variable dependiente, ajustando por covariables y bloque.

2.4.5 Tamaño del efecto (η² multivariado del tratamiento)

Matrices <- summary(modelo)$SS
F <- Matrices$Metodo
Bloque <- Matrices$Seccion
X1 <- Matrices$Pretest
X2 <- Matrices$Libros
W <- Matrices$Residuals
T <- F + Bloque + X1 + X2 + W

eta2 <- 1 - det(Bloque + X1 + X2 + W) / det(T)
eta2
## [1] 0.788769

Interpretación: El η² multivariado indica el porcentaje de varianza explicada por el tratamiento sobre el total (ajustado por covariables y bloque). Valores cercanos a 0.01 son pequeños, 0.06 medianos, y ≥0.14 grandes (según Cohen).

2.4.6 Comparaciones por pares entre métodos (con covariables y bloque)

metodos <- unique(datos2$Metodo)
comb <- t(combn(metodos, 2))

for(i in 1:nrow(comb)) {
  metodo1 <- comb[i, 1]
  metodo2 <- comb[i, 2]
  
  datos.par <- datos2 %>% filter(Metodo %in% c(metodo1, metodo2))
  datos.par$Metodo <- factor(datos.par$Metodo)
  
  modelo.pares <- manova(cbind(Narrativo, Argumentativo) ~ Metodo + Seccion + Pretest + Libros, data = datos.par)
  
  cat("\n🔻 Comparación:", metodo1, "vs", metodo2, "\n")
  print(summary(modelo.pares, test = "Pillai"))
}
## 
## 🔻 Comparación: Lectura guiada vs Resumen y subrayado 
##           Df  Pillai approx F num Df den Df    Pr(>F)    
## Metodo     1 0.62290   43.774      2     53 5.970e-12 ***
## Seccion    2 0.03280    0.450      4    108    0.7721    
## Pretest    1 0.33983   13.641      2     53 1.663e-05 ***
## Libros     1 0.01657    0.447      2     53    0.6422    
## Residuals 54                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 🔻 Comparación: Lectura guiada vs Videos explicativos 
##           Df  Pillai approx F num Df den Df    Pr(>F)    
## Metodo     1 0.89697  230.697      2     53 < 2.2e-16 ***
## Seccion    2 0.00207    0.028      4    108    0.9985    
## Pretest    1 0.35195   14.392      2     53 1.018e-05 ***
## Libros     1 0.01437    0.386      2     53    0.6814    
## Residuals 54                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 🔻 Comparación: Resumen y subrayado vs Videos explicativos 
##           Df  Pillai approx F num Df den Df    Pr(>F)    
## Metodo     1 0.77263   90.048      2     53 < 2.2e-16 ***
## Seccion    2 0.05503    0.764      4    108    0.5510    
## Pretest    1 0.40893   18.334      2     53 8.881e-07 ***
## Libros     1 0.08728    2.534      2     53    0.0889 .  
## Residuals 54                                             
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretación: En todas las comparaciones por pares, se observa un valor p < 0.05 para el efecto del método de enseñanza, lo que indica que existen diferencias estadísticamente significativas entre los métodos en cuanto a la comprensión lectora narrativa y argumentativa, incluso después de controlar por las covariables.

2.5 ✅ Conclusión

El análisis MANCOVA realizado bajo un diseño en bloques completos al azar muestra evidencia sólida de que el método de enseñanza influye significativamente en la comprensión lectora, tanto narrativa como argumentativa, incluso después de ajustar por la sección (bloque), el pretest de comprensión y el número de libros leídos. Los supuestos del modelo se cumplen adecuadamente: se observa normalidad multivariada en todos los grupos, homogeneidad marginal de las matrices de covarianza (p ≈ 0.05), y correlación significativa entre las variables dependientes.

PREGUNTA 3

3.1 ✅ Contexto del análisis

Este análisis se basa en una base de datos simulada que contiene variables clínicas cuantitativas de 500 pacientes. El objetivo es explorar la estructura subyacente entre las variables, reducir la dimensionalidad mediante Análisis de Componentes Principales (ACP) y visualizar los patrones clínicos predominantes.

3.1.1 Variables incluidas

  • Presion_Sistolica: Presión arterial sistólica (mmHg)
  • Colesterol_Total: Nivel total de colesterol (mg/dL)
  • Glucosa: Nivel de glucosa en sangre (mg/dL)
  • Trigliceridos: Nivel de triglicéridos en sangre (mg/dL)
  • IMC: Índice de masa corporal (kg/m²)
  • Frecuencia_Cardiaca: Latidos por minuto (bpm)
  • Edad: Edad del paciente (años)
  • Hemoglobina: Concentración de hemoglobina (g/dL)
  • Sodio_Serico: Nivel de sodio en suero (mEq/L)
  • Tipo_Paciente: Variable categórica con dos niveles: “Adulto” y “Adulto_Mayor”

3.2 Lectura de datos

datos1 <- read_excel("clinica6.xlsx")
head(datos1)
## # A tibble: 6 × 10
##   Presion_Sistolica Colesterol_Total Glucosa Trigliceridos   IMC
##               <dbl>            <dbl>   <dbl>         <dbl> <dbl>
## 1               107              247      76           111  21.9
## 2               128              186     124           117  29.6
## 3               101              162      90            89  23  
## 4               115              211      96           205  21.3
## 5               112              202     106           159  26.2
## 6               108              197      74            65  20.8
## # ℹ 5 more variables: Frecuencia_Cardiaca <dbl>, Edad <dbl>, Hemoglobina <dbl>,
## #   Sodio_Serico <dbl>, Tipo_Paciente <chr>
str(datos1)
## tibble [500 × 10] (S3: tbl_df/tbl/data.frame)
##  $ Presion_Sistolica  : num [1:500] 107 128 101 115 112 108 122 96 119 131 ...
##  $ Colesterol_Total   : num [1:500] 247 186 162 211 202 197 168 185 190 151 ...
##  $ Glucosa            : num [1:500] 76 124 90 96 106 74 76 70 116 131 ...
##  $ Trigliceridos      : num [1:500] 111 117 89 205 159 65 112 150 154 180 ...
##  $ IMC                : num [1:500] 21.9 29.6 23 21.3 26.2 20.8 19.9 24.7 19.4 31.9 ...
##  $ Frecuencia_Cardiaca: num [1:500] 62 53 65 65 65 67 77 79 91 61 ...
##  $ Edad               : num [1:500] 35 60 42 44 40 64 45 44 41 78 ...
##  $ Hemoglobina        : num [1:500] 14.4 15.8 13.4 13.1 14.4 14.5 12.6 14.5 14.5 14.1 ...
##  $ Sodio_Serico       : num [1:500] 138 134 142 138 136 141 141 139 138 139 ...
##  $ Tipo_Paciente      : chr [1:500] "Adulto" "Adulto_Mayor" "Adulto" "Adulto" ...
attach(datos1)

# Verificando si hay datos perdidos
per.miss.col <- 100 * colSums(is.na(datos1)) / nrow(datos1)
per.miss.col
##   Presion_Sistolica    Colesterol_Total             Glucosa       Trigliceridos 
##                   0                   0                   0                   0 
##                 IMC Frecuencia_Cardiaca                Edad         Hemoglobina 
##                   0                   0                   0                   0 
##        Sodio_Serico       Tipo_Paciente 
##                   0                   0

3.3 Visualización de proporciones

df <- datos1 %>%
  count(Tipo_Paciente) %>%
  mutate(porcentaje = round(n / sum(n) * 100, 1))

# Pie chart profesional con etiquetas
ggplot(df, aes(x = "", y = porcentaje, fill = Tipo_Paciente)) +
  geom_bar(stat = "identity", color = "white") +
  geom_text(aes(label = paste0(porcentaje, "%")),
            position = position_stack(vjust = 0.5), color = "white", size = 6) +
  coord_polar(theta = "y") +
  labs(title = "Distribución por Tipo de Paciente") +
  theme_minimal()

3.4 Exploración gráfica preliminar

3.4.1 Gráfico de matriz de dispersión con correlaciones, histogramas y elipses de confianza

pairs.panels(dplyr::select(datos1, -Tipo_Paciente))

El gráfico de matriz de dispersión muestra correlaciones entre todas las variables clínicas. Se observan asociaciones moderadas entre Glucosa, IMC y Triglicéridos (correlaciones mayores a 0.5). En contraste, variables como Colesterol_Total y Sodio_Serico presentan correlaciones cercanas a cero con la mayoría de las demás variables, lo que sugiere un bajo aporte a la estructura común de los datos.

3.4.2 Gráfico de dispersión entre Glucosa e IMC

ggplot(datos1, aes(x = Glucosa, y = IMC)) +
  geom_point(aes(color = Tipo_Paciente), size = 4, alpha = 0.7) +
  theme_minimal() +
  labs(title = "Relación entre Glucosa e IMC",
       x = "Glucosa (mg/dL)",
       y = "Índice de Masa Corporal",
       color = "Tipo de Paciente")

El gráfico muestra una relación positiva clara entre los niveles de glucosa y el índice de masa corporal (IMC). A medida que aumenta la glucosa, también tiende a incrementarse el IMC. Esta asociación se observa tanto en adultos como en adultos mayores, aunque no hay una separación evidente entre los grupos.

3.4.3 Boxplot comparativo de los niveles de Glucosa según Tipo de Paciente.

ggplot(datos1, aes(x = Tipo_Paciente, y = Glucosa, fill = Tipo_Paciente)) +
  geom_boxplot() +
  scale_fill_viridis(discrete = TRUE, alpha = 0.6) +
  geom_jitter(color = "darkgreen", size = 0.4, alpha = 0.9) +
  theme_minimal() +
  labs(title = "Distribución de Glucosa por Tipo de Paciente",
       x = "Tipo de Paciente",
       y = "Glucosa (mg/dL)") +
  theme(legend.position = "none")

El gráfico muestra que los adultos mayores tienden a tener niveles de glucosa más altos que los adultos. Esto se ve porque la “caja” del grupo Adulto Mayor está más arriba en el eje vertical. Además, la mediana (que representa el valor central o más común del grupo) también es más alta en los adultos mayores

3.4.4 Gráfico de densidad para la variable Glucosa, separado por Tipo de Paciente.

ggplot(datos1, aes(x = Glucosa, colour = Tipo_Paciente)) +
  geom_density(size = 1.2) +
  labs(title = "Densidad de Glucosa por Tipo de Paciente",
       x = "Glucosa (mg/dL)",
       y = "Densidad",
       colour = "Tipo de Paciente") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Este gráfico de densidad compara la distribución de los niveles de glucosa entre adultos y adultos mayores. Se observa que la curva de los adultos (rojo) está centrada en valores más bajos, mientras que la de los adultos mayores (celeste) se desplaza hacia la derecha, indicando que tienden a tener niveles de glucosa más altos.

3.5 Análisis Descriptivo

datosacp <- dplyr::select(datos1, -Tipo_Paciente)
head(datosacp)
## # A tibble: 6 × 9
##   Presion_Sistolica Colesterol_Total Glucosa Trigliceridos   IMC
##               <dbl>            <dbl>   <dbl>         <dbl> <dbl>
## 1               107              247      76           111  21.9
## 2               128              186     124           117  29.6
## 3               101              162      90            89  23  
## 4               115              211      96           205  21.3
## 5               112              202     106           159  26.2
## 6               108              197      74            65  20.8
## # ℹ 4 more variables: Frecuencia_Cardiaca <dbl>, Edad <dbl>, Hemoglobina <dbl>,
## #   Sodio_Serico <dbl>
str(datosacp)
## tibble [500 × 9] (S3: tbl_df/tbl/data.frame)
##  $ Presion_Sistolica  : num [1:500] 107 128 101 115 112 108 122 96 119 131 ...
##  $ Colesterol_Total   : num [1:500] 247 186 162 211 202 197 168 185 190 151 ...
##  $ Glucosa            : num [1:500] 76 124 90 96 106 74 76 70 116 131 ...
##  $ Trigliceridos      : num [1:500] 111 117 89 205 159 65 112 150 154 180 ...
##  $ IMC                : num [1:500] 21.9 29.6 23 21.3 26.2 20.8 19.9 24.7 19.4 31.9 ...
##  $ Frecuencia_Cardiaca: num [1:500] 62 53 65 65 65 67 77 79 91 61 ...
##  $ Edad               : num [1:500] 35 60 42 44 40 64 45 44 41 78 ...
##  $ Hemoglobina        : num [1:500] 14.4 15.8 13.4 13.1 14.4 14.5 12.6 14.5 14.5 14.1 ...
##  $ Sodio_Serico       : num [1:500] 138 134 142 138 136 141 141 139 138 139 ...
# Estadísticas descriptivas detalladas
summarytools::descr(datosacp)
## Descriptive Statistics  
## datosacp  
## N: 500  
## 
##                     Colesterol_Total     Edad   Frecuencia_Cardiaca   Glucosa   Hemoglobina      IMC
## ----------------- ------------------ -------- --------------------- --------- ------------- --------
##              Mean             197.75    49.35                 74.77     99.27         14.39    24.90
##           Std.Dev              30.13    11.38                  9.23     19.56          1.17     4.06
##               Min             113.00    20.00                 45.00     46.00         11.30    10.20
##                Q1             176.00    41.00                 69.00     85.00         13.50    22.25
##            Median             198.00    49.00                 75.00    100.00         14.30    24.80
##                Q3             218.00    57.00                 81.00    113.00         15.20    27.80
##               Max             284.00    82.00                106.00    158.00         17.80    38.40
##               MAD              31.13    11.86                  8.90     20.76          1.19     4.30
##               IQR              42.00    16.00                 12.00     28.00          1.70     5.52
##                CV               0.15     0.23                  0.12      0.20          0.08     0.16
##          Skewness              -0.01     0.12                 -0.02     -0.03          0.13    -0.09
##       SE.Skewness               0.11     0.11                  0.11      0.11          0.11     0.11
##          Kurtosis              -0.13    -0.38                 -0.17     -0.17         -0.40     0.25
##           N.Valid             500.00   500.00                500.00    500.00        500.00   500.00
##                 N             500.00   500.00                500.00    500.00        500.00   500.00
##         Pct.Valid             100.00   100.00                100.00    100.00        100.00   100.00
## 
## Table: Table continues below
## 
##  
## 
##                     Presion_Sistolica   Sodio_Serico   Trigliceridos
## ----------------- ------------------- -------------- ---------------
##              Mean              119.47         139.89          145.99
##           Std.Dev                9.44           4.05           36.37
##               Min               91.00         129.00           54.00
##                Q1              113.00         137.00          120.00
##            Median              120.00         140.00          147.00
##                Q3              126.00         143.00          169.00
##               Max              144.00         151.00          250.00
##               MAD                8.90           4.45           35.58
##               IQR               13.00           6.00           49.00
##                CV                0.08           0.03            0.25
##          Skewness               -0.15          -0.03            0.04
##       SE.Skewness                0.11           0.11            0.11
##          Kurtosis               -0.22          -0.32           -0.13
##           N.Valid              500.00         500.00          500.00
##                 N              500.00         500.00          500.00
##         Pct.Valid              100.00         100.00          100.00

Presión sistólica presenta valores bastante homogéneos, con una baja variabilidad relativa (CV = 0.08) y una distribución prácticamente simétrica. Sodio sérico es la variable más estable, con muy poca dispersión (CV = 0.03). En cambio, triglicéridos muestran una mayor variabilidad relativa (CV = 0.25) y un rango amplio, lo que indica una mayor heterogeneidad entre los pacientes.

3.5.1 Asimetría y curtosis muestral para la variable Glucosa

X <- datos1$Glucosa
Xbar <- mean(X)
Sd <- sd(X)

# Cálculos
mean(((X - Xbar)/Sd)^3)       # Asimetría ≈ -0.03
## [1] -0.03381895
mean(((X - Xbar)/Sd)^4) - 3   # Curtosis ≈ -0.17
## [1] -0.167253
  • La asimetría es prácticamente nula (-0.03), lo que indica que la distribución de Glucosa es simétrica.

  • La curtosis es ligeramente negativa (-0.17), lo que sugiere una forma levemente más plana que una distribución normal.

3.5.2 Summary por grupos

with(datos1, summarytools::stby(Glucosa, Tipo_Paciente, summarytools::descr))
## Error in match.call(f, call): ... used in a situation where it does not exist
## Warning in parse_call(mc = match.call(), var_name = (ncol(xx) == 1), var_label
## = (ncol(xx) == : metadata extraction terminated unexpectedly; inspect results
## carefully
## Error in match.call(f, call): ... used in a situation where it does not exist
## Warning in parse_call(mc = match.call(), var_name = (ncol(xx) == 1), var_label
## = (ncol(xx) == : metadata extraction terminated unexpectedly; inspect results
## carefully
## Descriptive Statistics  
## datos1  
## N: 405  
## 
##                       data
## ----------------- --------
##              Mean    96.36
##           Std.Dev    18.80
##               Min    46.00
##                Q1    83.00
##            Median    97.00
##                Q3   109.00
##               Max   154.00
##               MAD    19.27
##               IQR    26.00
##                CV     0.20
##          Skewness    -0.02
##       SE.Skewness     0.12
##          Kurtosis    -0.14
##           N.Valid   405.00
##                 N   405.00
##         Pct.Valid   100.00
## 
## N: 95  
## 
##                       data
## ----------------- --------
##              Mean   111.71
##           Std.Dev    17.88
##               Min    59.00
##                Q1   102.00
##            Median   111.00
##                Q3   126.00
##               Max   158.00
##               MAD    17.79
##               IQR    23.00
##                CV     0.16
##          Skewness    -0.20
##       SE.Skewness     0.25
##          Kurtosis     0.09
##           N.Valid    95.00
##                 N    95.00
##         Pct.Valid   100.00

Los pacientes adultos mayores presentan niveles de glucosa más altos en promedio (111.71 mg/dL) que los adultos (96.36 mg/dL), lo cual se observa también en la mediana y cuartiles. Además, la variabilidad relativa (coeficiente de variación) es menor en adultos mayores (CV = 0.16), lo que indica mayor homogeneidad en ese grupo.


3.6 Análisis de Correlación

3.6.1 Matriz de Varianza-Covarianza

# Matriz de Varianza-Covarianza
# Permite conocer la dispersión conjunta entre las variables 
round(cov(datosacp), 2)
##                     Presion_Sistolica Colesterol_Total Glucosa Trigliceridos
## Presion_Sistolica               89.06           -16.21   94.70        172.30
## Colesterol_Total               -16.21           908.09    1.53         27.51
## Glucosa                         94.70             1.53  382.66        434.31
## Trigliceridos                  172.30            27.51  434.31       1322.76
## IMC                             13.86             1.70   49.75         87.15
## Frecuencia_Cardiaca             -1.56            15.06   -8.05        -24.71
## Edad                            53.41            -4.43   92.93        147.36
## Hemoglobina                      3.28             0.35   12.55         20.80
## Sodio_Serico                    -2.63             4.33   -4.43         -1.71
##                       IMC Frecuencia_Cardiaca   Edad Hemoglobina Sodio_Serico
## Presion_Sistolica   13.86               -1.56  53.41        3.28        -2.63
## Colesterol_Total     1.70               15.06  -4.43        0.35         4.33
## Glucosa             49.75               -8.05  92.93       12.55        -4.43
## Trigliceridos       87.15              -24.71 147.36       20.80        -1.71
## IMC                 16.45               -2.47  12.50        2.40        -0.22
## Frecuencia_Cardiaca -2.47               85.18  -1.05       -0.40        -1.36
## Edad                12.50               -1.05 129.48        3.53        -1.78
## Hemoglobina          2.40               -0.40   3.53        1.36         0.01
## Sodio_Serico        -0.22               -1.36  -1.78        0.01        16.41

3.6.2 Calculando una correlación manualmente a partir de la covarianza

# Ejemplo: calcular una correlación manualmente a partir de la covarianza
# Extraer varianzas desde la matriz, va
varglu <- 382.66  #glucosa
vartrig <- 1322.76   #trigilceridos
covglutrig <- 434.31
sdglu <- sqrt(varglu)
sdtrig <- sqrt(vartrig)

cor <- covglutrig / (sdglu * sdtrig)
cor  
## [1] 0.6104538

3.6.3 Matriz de Correlaciones

Muestra la fuerza y dirección de la relación lineal entre variables.

  • +1: relación positiva fuerte

  • –1: relación negativa fuerte

  • 0: sin relación lineal

round(cor(datosacp), 3)
##                     Presion_Sistolica Colesterol_Total Glucosa Trigliceridos
## Presion_Sistolica               1.000           -0.057   0.513         0.502
## Colesterol_Total               -0.057            1.000   0.003         0.025
## Glucosa                         0.513            0.003   1.000         0.610
## Trigliceridos                   0.502            0.025   0.610         1.000
## IMC                             0.362            0.014   0.627         0.591
## Frecuencia_Cardiaca            -0.018            0.054  -0.045        -0.074
## Edad                            0.497           -0.013   0.417         0.356
## Hemoglobina                     0.297            0.010   0.549         0.490
## Sodio_Serico                   -0.069            0.036  -0.056        -0.012
##                        IMC Frecuencia_Cardiaca   Edad Hemoglobina Sodio_Serico
## Presion_Sistolica    0.362              -0.018  0.497       0.297       -0.069
## Colesterol_Total     0.014               0.054 -0.013       0.010        0.036
## Glucosa              0.627              -0.045  0.417       0.549       -0.056
## Trigliceridos        0.591              -0.074  0.356       0.490       -0.012
## IMC                  1.000              -0.066  0.271       0.507       -0.014
## Frecuencia_Cardiaca -0.066               1.000 -0.010      -0.037       -0.036
## Edad                 0.271              -0.010  1.000       0.265       -0.039
## Hemoglobina          0.507              -0.037  0.265       1.000        0.002
## Sodio_Serico        -0.014              -0.036 -0.039       0.002        1.000
# Diagonal de la matriz de correlación (siempre 1's)
diag(cor(datosacp))
##   Presion_Sistolica    Colesterol_Total             Glucosa       Trigliceridos 
##                   1                   1                   1                   1 
##                 IMC Frecuencia_Cardiaca                Edad         Hemoglobina 
##                   1                   1                   1                   1 
##        Sodio_Serico 
##                   1
# Suma de las correlaciones principales (no muy útil, solo para revisión)
sum(diag(cor(datosacp)))
## [1] 9

3.6.4 Correlacion test:

  • Hipótesis nula (H₀):No existe correlación lineal entre las variables X , Y

  • Hipótesis alternativa(H₁): Existe una correlación lineal significativa entre las variables X y Y

corr.test(datosacp)
## Call:corr.test(x = datosacp)
## Correlation matrix 
##                     Presion_Sistolica Colesterol_Total Glucosa Trigliceridos
## Presion_Sistolica                1.00            -0.06    0.51          0.50
## Colesterol_Total                -0.06             1.00    0.00          0.03
## Glucosa                          0.51             0.00    1.00          0.61
## Trigliceridos                    0.50             0.03    0.61          1.00
## IMC                              0.36             0.01    0.63          0.59
## Frecuencia_Cardiaca             -0.02             0.05   -0.04         -0.07
## Edad                             0.50            -0.01    0.42          0.36
## Hemoglobina                      0.30             0.01    0.55          0.49
## Sodio_Serico                    -0.07             0.04   -0.06         -0.01
##                       IMC Frecuencia_Cardiaca  Edad Hemoglobina Sodio_Serico
## Presion_Sistolica    0.36               -0.02  0.50        0.30        -0.07
## Colesterol_Total     0.01                0.05 -0.01        0.01         0.04
## Glucosa              0.63               -0.04  0.42        0.55        -0.06
## Trigliceridos        0.59               -0.07  0.36        0.49        -0.01
## IMC                  1.00               -0.07  0.27        0.51        -0.01
## Frecuencia_Cardiaca -0.07                1.00 -0.01       -0.04        -0.04
## Edad                 0.27               -0.01  1.00        0.27        -0.04
## Hemoglobina          0.51               -0.04  0.27        1.00         0.00
## Sodio_Serico        -0.01               -0.04 -0.04        0.00         1.00
## Sample Size 
## [1] 500
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##                     Presion_Sistolica Colesterol_Total Glucosa Trigliceridos
## Presion_Sistolica                0.00             1.00    0.00           0.0
## Colesterol_Total                 0.20             0.00    1.00           1.0
## Glucosa                          0.00             0.95    0.00           0.0
## Trigliceridos                    0.00             0.58    0.00           0.0
## IMC                              0.00             0.76    0.00           0.0
## Frecuencia_Cardiaca              0.69             0.23    0.32           0.1
## Edad                             0.00             0.77    0.00           0.0
## Hemoglobina                      0.00             0.82    0.00           0.0
## Sodio_Serico                     0.12             0.43    0.21           0.8
##                      IMC Frecuencia_Cardiaca Edad Hemoglobina Sodio_Serico
## Presion_Sistolica   0.00                1.00 0.00        0.00            1
## Colesterol_Total    1.00                1.00 1.00        1.00            1
## Glucosa             0.00                1.00 0.00        0.00            1
## Trigliceridos       0.00                1.00 0.00        0.00            1
## IMC                 0.00                1.00 0.00        0.00            1
## Frecuencia_Cardiaca 0.14                0.00 1.00        1.00            1
## Edad                0.00                0.82 0.00        0.00            1
## Hemoglobina         0.00                0.40 0.00        0.00            1
## Sodio_Serico        0.76                0.42 0.39        0.97            0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option

En contraste, variables como Colesterol_Total, Frecuencia_Cardiaca y Sodio_Serico presentan valores p elevados, lo que indica falta de significancia estadística en la mayoría de sus relaciones con otras variables. Esto sugiere que no aportan información estructural relevante al análisis multivariado.

3.6.5 Correlograma con coeficientes

res1 <- cor.mtest(datosacp, conf.level = 0.95)
corrplot(cor(datosacp), p.mat = res1$p, sig.level = 0.05, method = "ellipse", type = "lower")

  • Elipses inclinadas hacia la diagonal positiva indican correlaciones positivas.

  • Cuanto más alargada la elipse, más fuerte la relación.

  • Los símbolos “X” indican que la correlación no es estadísticamente significativa (p > 0.05).

  • Se observa que variables como Glucosa, IMC, Trigliceridos y Edad están moderadamente correlacionadas entre sí,lo cual es coherente con perfiles clínicos.

  • Variables como Colesterol_Total, Frecuencia_Cardiaca y Sodio_Serico muestran muchas correlaciones no significativas,lo que sugiere que tienen poco aporte estructural a la varianza común.

3.7 Analisis de Componentes Principales

acp <- dudi.pca(datosacp,
                scannf = FALSE,
                scale = TRUE,  # Tipifica las variables → usa matriz de correlación
                nf = ncol(datosacp))  # Calcula todos los componentes posibles

acp$eig       # Vector de autovalores
## [1] 3.3256188 1.0746938 1.0524729 0.9279690 0.8806918 0.5620481 0.4622099
## [8] 0.3858832 0.3284125
sum(acp$eig)  # Suma total = 9 (porque se usa matriz de correlación)
## [1] 9
(3.326 + 1.075 + 1.052) / 9  
## [1] 0.6058889

Con solo 3 componentes principales, se logra resumir el 60.6% de la información total contenida en las 9 variables originales.

inertia.dudi(acp)
## Inertia information:
## Call: inertia.dudi(x = acp)
## 
## Decomposition of total inertia:
##     inertia     cum  cum(%)
## Ax1  3.3256   3.326   36.95
## Ax2  1.0747   4.400   48.89
## Ax3  1.0525   5.453   60.59
## Ax4  0.9280   6.381   70.90
## Ax5  0.8807   7.261   80.68
## Ax6  0.5620   7.823   86.93
## Ax7  0.4622   8.286   92.06
## Ax8  0.3859   8.672   96.35
## Ax9  0.3284   9.000  100.00

El primer componente (Ax1) explica un 36.95% de la varianza total.

3.7.1 Cargas factoriales (vectores propios normalizados)

acp$c1
##                              CS1         CS2          CS3         CS4
## Presion_Sistolica    0.385230952  0.27279536  0.010554376  0.24618886
## Colesterol_Total    -0.003290962 -0.50255368  0.629221191 -0.32600230
## Glucosa              0.466655658 -0.02452235  0.024515024 -0.05297379
## Trigliceridos        0.445274903 -0.09667584 -0.004653717 -0.04857623
## IMC                  0.422006783 -0.18109564 -0.015728093 -0.16750468
## Frecuencia_Cardiaca -0.045129637  0.23411890  0.753984877  0.40465513
## Edad                 0.327945913  0.26985712  0.061217251  0.34471074
## Hemoglobina          0.383223331 -0.19688149  0.009498051 -0.13348160
## Sodio_Serico        -0.031843188 -0.68108917 -0.175409016  0.70675402
##                              CS5         CS6          CS7         CS8
## Presion_Sistolica   -0.320693966 -0.38718395  0.526703996  0.32031951
## Colesterol_Total    -0.489139780 -0.01351014  0.051158060  0.05198443
## Glucosa              0.089336127 -0.02665477 -0.107451611  0.42146068
## Trigliceridos        0.049747238 -0.36273013  0.075604053 -0.79206429
## IMC                  0.270020890 -0.21702153 -0.559960482  0.23283272
## Frecuencia_Cardiaca  0.454466254 -0.04744948 -0.029060244 -0.03573668
## Edad                -0.502992617  0.49614897 -0.404465056 -0.17754762
## Hemoglobina          0.338972368  0.64833354  0.473970431 -0.01911712
## Sodio_Serico         0.009339591 -0.04210058  0.007983803  0.04817972
##                               CS9
## Presion_Sistolica    0.2892779570
## Colesterol_Total     0.0217345369
## Glucosa             -0.7618120325
## Trigliceridos       -0.1512381769
## IMC                  0.5225256083
## Frecuencia_Cardiaca  0.0002266616
## Edad                 0.0526787807
## Hemoglobina          0.1903100729
## Sodio_Serico        -0.0242749666
  • CS1 representa un eje metabólico fuerte: glucosa, triglicéridos, IMC y presión.

  • CS2 agrupa sodio y colesterol frente a presión/edad

  • CS3 está claramente dominado por la frecuencia cardíaca.

3.7.2 Correlaciones entre variables originales y Componentes

acp$co
##                           Comp1       Comp2        Comp3       Comp4
## Presion_Sistolica    0.70251792  0.28279996  0.010827746  0.23715656
## Colesterol_Total    -0.00600149 -0.52098453  0.645518674 -0.31404175
## Glucosa              0.85100629 -0.02542169  0.025149989 -0.05103026
## Trigliceridos        0.81201575 -0.10022137 -0.004774253 -0.04679404
## IMC                  0.76958335 -0.18773721 -0.016135467 -0.16135918
## Frecuencia_Cardiaca -0.08229967  0.24270507  0.773513870  0.38980893
## Edad                 0.59805133  0.27975397  0.062802842  0.33206381
## Hemoglobina          0.69885677 -0.20410200  0.009744061 -0.12858436
## Sodio_Serico        -0.05807013 -0.70606770 -0.179952292  0.68082426
##                            Comp5       Comp6       Comp7       Comp8
## Presion_Sistolica   -0.300955835 -0.29027129  0.35808509  0.19898086
## Colesterol_Total    -0.459034115 -0.01012853  0.03478033  0.03229246
## Glucosa              0.083837651 -0.01998304 -0.07305208  0.26180924
## Trigliceridos        0.046685386 -0.27193829  0.05140019 -0.49202633
## IMC                  0.253401595 -0.16270075 -0.38069485  0.14463451
## Frecuencia_Cardiaca  0.426494681 -0.03557281 -0.01975690 -0.02219944
## Edad                -0.472034334  0.37196222 -0.27497970 -0.11029168
## Hemoglobina          0.318109235  0.48605479  0.32223364 -0.01187546
## Sodio_Serico         0.008764756 -0.03156275  0.00542787  0.02992900
##                             Comp9
## Presion_Sistolica    0.1657773377
## Colesterol_Total     0.0124554726
## Glucosa             -0.4365737779
## Trigliceridos       -0.0866704902
## IMC                  0.2994452295
## Frecuencia_Cardiaca  0.0001298936
## Edad                 0.0301887780
## Hemoglobina          0.1090615322
## Sodio_Serico        -0.0139113238
  • Comp1 es el componente más fuerte y representa alta correlación con glucosa, triglicéridos, IMC y presión arterial.

  • Comp2 agrupa sodio y colesterol,

  • Comp3 está claramente relacionado con la frecuencia cardíaca y colesterol.

3.7 Visualizacion del ACP

3.7.3 Gráficos

Gráfico A
a <- fviz_eig(acp, choice = 'eigenvalue', geom = "line", 
              linecolor = '#3A5FCD', xlab = 'Componentes Principales') +
  geom_hline(yintercept = 1, color = '#EE6363') +
  theme_grey()
a

  • El gráfico muestra los autovalores de cada componente principal.

  • Se observa que solo los primeros 3 componentes tienen autovalores > 1, lo cual, según el criterio de Kaiser, sugiere conservar 3 componentes para el análisis.

Gráfico B:
b <- fviz_screeplot(acp, ncp = 9, addlabels = TRUE, hjust = 0.5,
                    linecolor = "#FC4E07", barfill = "#00AFBB",
                    xlab = "Componentes Principales")
b

Los tres primeros componentes explican juntos más del 60% de la varianza, lo que refuerza la decisión de conservar 3 componentes para análisis.

Gráfico C:
c <- fviz_pca_var(acp, col.var = "#FF3030") +
  labs(x = "Dim2 (11.9%)", y = "Dim1 (37%)") +
  theme_minimal()
c

  • Las variables Glucosa, IMC y Triglicéridos están alineadas con Dim1

  • Frecuencia_Cardiaca y Sodio_Serico contribuyen más al segundo componente (Dim2),mientras que Colesterol_Total tiene poca representación en este plano.

Gráfico D: Biplot
d <- fviz_pca_biplot(acp, repel = FALSE,
                     col.var = "#EE3A8C",
                     col.ind = "green")
d

  • Los puntos verdes representan a cada individuo proyectado en el plano Dim1–Dim2.

  • La mayor dispersión de los individuos ocurre a lo largo de Dim1, reforzando que este componente explica la mayor parte de la variabilidad total.

3.8 📌 Conclusión

  • Se realizó un análisis exploratorio multivariado sobre variables clínicas cuantitativas. Las correlaciones mostraron relaciones moderadas entre variables clave como glucosa, triglicéridos, IMC y presión arterial, lo cual justifica la aplicación del Análisis de Componentes Principales (ACP).

  • El ACP reveló que los tres primeros componentes explican más del 60% de la varianza total. El primer componente representa un claro perfil metabólico, mientras que los siguientes capturan aspectos fisiológicos complementarios.

  • Las visualizaciones como scree plot, círculo de correlaciones y biplot facilitaron la interpretación de los patrones clínicos. En conjunto, el análisis permitió simplificar la estructura de los datos y destacar los factores más relevantes en la población estudiada.

PREGUNTA 4

4.1 Contexto

Para un estudio psicológico se realiza una evaluación de factores relacionados con el estrés académico en estudiantes universitarios, para ello se tiene el registro de 100 estudiantes teniendo las siguientes variables:

  • Estudio: Número de horas que un estudiante dedica diariamente al estudio.

  • Sueño: Horas de sueño por noche durante el periodo académico.

  • Cansancio: Nivel percibido de fatiga física por estudiante, medido del 1-6.

  • Ansiedad: Grado de ansiedad relacionado con las actividades académicas.

  • Concentración: Capacidad para mantener la atención y concentración.

  • Rendimiento: Desempeño académico medido por calificaciones.

4.2 Paquetes

library(psych)
library(ade4)
library(psych)
library(corrplot)
library(ggplot2)
library(ggcorrplot)
library(mvnormtest)
library(tidyverse)
library(GGally)
library(PerformanceAnalytics)
library(performance)

4.3 Generación de datos

set.seed(101)

n <- 100  # Número de observaciones

# Factores latentes: estrés físico, mental y rendimiento
fisico <- rnorm(n)
mental <- rnorm(n)
rend   <- rnorm(n)

# Generamos variables observadas
estudio     <- 4 + 0.6*rend - 0.2*mental + rnorm(n, 0, 0.5)
sueno       <- 7 - 0.6*mental - 0.3*fisico + rnorm(n, 0, 0.5)
Cansancio  <- 5 + 0.7*fisico + rnorm(n, 0, 0.3)
Ansiedad          <- 4 + 0.6*mental + rnorm(n, 0, 0.4)
Concentracion     <- 6 - 0.5*mental + 0.5*rend + rnorm(n, 0, 0.3)
Rendimiento       <- 12 + 0.6*rend - 0.4*mental + rnorm(n, 0, 0.5)

# Creamos el dataframe final
data <- data.frame(
  estudio    = round(estudio, 1),
  sueno      = round(sueno, 1),
  Cansancio = round(Cansancio, 1),
  Ansiedad         = round(Ansiedad, 1),
  Concentracion    = round(Concentracion, 1),
  Rendimiento      = round(Rendimiento, 1)
)

4.4 Análisis Exploratorio

4.4.1 Analisis Descriptivo

describe(data)
## # A tibble: 6 × 26
##   described_variables     n    na  mean    sd se_mean   IQR skewness kurtosis
##   <chr>               <int> <int> <dbl> <dbl>   <dbl> <dbl>    <dbl>    <dbl>
## 1 estudio               100     0  4.00 0.753  0.0753 1       0.149   -0.112 
## 2 sueno                 100     0  6.93 0.831  0.0831 1.03   -0.112    0.626 
## 3 Cansancio             100     0  4.99 0.743  0.0743 1.2    -0.179   -0.688 
## 4 Ansiedad              100     0  3.93 0.692  0.0692 0.925  -0.0887   0.558 
## 5 Concentracion         100     0  5.98 0.712  0.0712 0.925   0.149   -0.0980
## 6 Rendimiento           100     0 12.0  0.805  0.0805 1.12   -0.0466  -0.197 
## # ℹ 17 more variables: p00 <dbl>, p01 <dbl>, p05 <dbl>, p10 <dbl>, p20 <dbl>,
## #   p25 <dbl>, p30 <dbl>, p40 <dbl>, p50 <dbl>, p60 <dbl>, p70 <dbl>,
## #   p75 <dbl>, p80 <dbl>, p90 <dbl>, p95 <dbl>, p99 <dbl>, p100 <dbl>
apply(data, MARGIN = 2, FUN = mean)
##       estudio         sueno     Cansancio      Ansiedad Concentracion 
##         4.001         6.931         4.988         3.929         5.980 
##   Rendimiento 
##        12.039

4.4.2 Análisis de Correlación

Coeficientes de correlación
# Coeficientes de Correlacion 
(correl=round(cor(data),3))
##               estudio  sueno Cansancio Ansiedad Concentracion Rendimiento
## estudio         1.000  0.031    -0.103   -0.071         0.522       0.471
## sueno           0.031  1.000    -0.370   -0.643         0.410       0.225
## Cansancio      -0.103 -0.370     1.000    0.124        -0.019       0.114
## Ansiedad       -0.071 -0.643     0.124    1.000        -0.562      -0.370
## Concentracion   0.522  0.410    -0.019   -0.562         1.000       0.733
## Rendimiento     0.471  0.225     0.114   -0.370         0.733       1.000
round(solve(correl),3) #Tiene inversa
##               estudio  sueno Cansancio Ansiedad Concentracion Rendimiento
## estudio         1.653  0.284     0.345   -0.403        -0.959      -0.328
## sueno           0.284  2.071     0.657    1.047        -0.402       0.007
## Cansancio       0.345  0.657     1.302    0.089        -0.135      -0.327
## Ansiedad       -0.403  1.047     0.089    2.208         1.007       0.023
## Concentracion  -0.959 -0.402    -0.135    1.007         3.343      -1.520
## Rendimiento    -0.328  0.007    -0.327    0.023        -1.520       2.313

Pruebas estadísticas
corr.test(data)$p #p-valor
##                    estudio        sueno   Cansancio     Ansiedad Concentracion
## estudio       0.000000e+00 1.000000e+00 1.000000000 1.000000e+00  3.033194e-07
## sueno         7.587296e-01 0.000000e+00 0.001381471 7.295239e-12  2.328269e-04
## Cansancio     3.066134e-01 1.534968e-04 0.000000000 1.000000e+00  1.000000e+00
## Ansiedad      4.848506e-01 5.210885e-13 0.220584271 0.000000e+00  1.570101e-08
## Concentracion 2.527661e-08 2.328269e-05 0.854325244 1.207770e-09  0.000000e+00
## Rendimiento   7.646103e-07 2.470514e-02 0.257697852 1.536462e-04  4.176992e-18
##                Rendimiento
## estudio       8.410713e-06
## sueno         1.729360e-01
## Cansancio     1.000000e+00
## Ansiedad      1.381471e-03
## Concentracion 6.265487e-17
## Rendimiento   0.000000e+00

4.5 Supuestos

Con un nivel de significación del 0.01.

4.5.1 Prueba de Esfericidad de Bartlett

Ho: |Rp|=1 Las variables no estan correlacionadas

options(scipen=0)
esfer=cortest.bartlett(cor(data),n=dim(data))
esfer$p.value[1]
## [1] 5.357662e-41

Conclusión: Como p < 0.01. Se rechaza H₀, las variables están correlacionadas, por lo cual si es adecuado aplicar análisis factorial.

check_sphericity_bartlett(data)
## # Test of Sphericity
## 
## Bartlett's test of sphericity suggests that there is sufficient significant correlation in the data for factor analysis (Chisq(15) = 232.31, p < .001).

4.5.2 Normalidad Multivariada

Ho: Las 6 variables tienen distribución normal multivariada.

mshapiro.test(t(data)) #Cumple con alpha 0.01
## 
##  Shapiro-Wilk normality test
## 
## data:  Z
## W = 0.9683, p-value = 0.01639

Conclusión: Como p > 0.01. Se acepta H₀, las seis variables vienen de una distribución normal multivariada.

4.5.3 KMO (Índice de Adecuación) y MSAj

KMO

KMO(data)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data)
## Overall MSA =  0.65
## MSA for each item = 
##       estudio         sueno     Cansancio      Ansiedad Concentracion 
##          0.62          0.63          0.41          0.68          0.67 
##   Rendimiento 
##          0.73

Interpretación: Debido a que el KMO es 0.65, los datos de pueden usar para el análisis factorial pero aún queda evaluar cada variable.

4.5.4 MSA - MSAj

kmo = psych::KMO(data)
round(kmo$MSAi,3)
##       estudio         sueno     Cansancio      Ansiedad Concentracion 
##         0.617         0.632         0.406         0.676         0.672 
##   Rendimiento 
##         0.725

Interpretación: La mayoría de variables son altamente adecuadas para el análisis factorial, a excepción de la variable Cansancio 0.41 (Poco adecuado).

check_kmo(data)
## # KMO Measure of Sampling Adequacy
## 
## The Kaiser, Meyer, Olkin (KMO) overall measure of sampling adequacy suggests that data seems appropriate for factor analysis (KMO = 0.65). The individual KMO scores are: estudio (0.62), sueno (0.63), Cansancio (0.41*), Ansiedad (0.68), Concentracion (0.67), Rendimiento (0.73).

4.6 Análisis Factorial sin Rotación

4.6.1 Aplicación del método

facto.sin.rota <- principal(data, nfactors=2, rotate="none")
print(facto.sin.rota)
## Principal Components Analysis
## Call: principal(r = data, nfactors = 2, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                 PC1   PC2   h2   u2 com
## estudio        0.54  0.49 0.54 0.46 2.0
## sueno          0.65 -0.63 0.82 0.18 2.0
## Cansancio     -0.19  0.64 0.44 0.56 1.2
## Ansiedad      -0.74  0.38 0.69 0.31 1.5
## Concentracion  0.90  0.22 0.86 0.14 1.1
## Rendimiento    0.77  0.44 0.79 0.21 1.6
## 
##                        PC1  PC2
## SS loadings           2.71 1.43
## Proportion Var        0.45 0.24
## Cumulative Var        0.45 0.69
## Proportion Explained  0.65 0.35
## Cumulative Proportion 0.65 1.00
## 
## Mean item complexity =  1.6
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.13 
##  with the empirical chi square  51.02  with prob <  2.2e-10 
## 
## Fit based upon off diagonal values = 0.89

4.6.2 Autovalores

facto.sin.rota$values
## [1] 2.7055553 1.4307031 0.9752083 0.3784656 0.3053925 0.2046751

Se deben retener los 2 primeros factores porque sus autovalores son mayores que 1.

4.6.3 Gráfica

4.6.4 Varianza explicada por los factores

#Proporción de variación
sum(facto.sin.rota$Vaccounted[1,])/6
## [1] 0.6893764

Interpretación: Los dos factores extraidos explican el 68.94% de la varianza total de las 6 variables.

Factor 1

facto.sin.rota$Vaccounted[1,1]/6
## [1] 0.4509259

Interpetación: El 45.09% de la varianza total es explicada por el factor 1.

Factor 2

facto.sin.rota$Vaccounted[1,2]/6
## [1] 0.2384505

Interpetación: El 23.84% de la varianza total es explicada por el factor 2.

Cargas Factoriales

facto.sin.rota$loadings
## 
## Loadings:
##               PC1    PC2   
## estudio        0.542  0.492
## sueno          0.648 -0.631
## Cansancio     -0.185  0.638
## Ansiedad      -0.744  0.376
## Concentracion  0.900  0.225
## Rendimiento    0.771  0.438
## 
##                  PC1   PC2
## SS loadings    2.706 1.431
## Proportion Var 0.451 0.238
## Cumulative Var 0.451 0.689
  • El factor 1 representa la Concentración, Rendimiento y Ansiedad.

  • El factor 2 representa el sueño y Cansancio.

4.7 Análisis Factorial con Rotación

facto.con.rota <- principal(r=data,nfactors=2,rotate="varimax")
print(facto.con.rota)
## Principal Components Analysis
## Call: principal(r = data, nfactors = 2, rotate = "varimax")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                 RC1   RC2   h2   u2 com
## estudio        0.73  0.10 0.54 0.46 1.0
## sueno          0.18 -0.89 0.82 0.18 1.1
## Cansancio      0.21  0.63 0.44 0.56 1.2
## Ansiedad      -0.40  0.73 0.69 0.31 1.5
## Concentracion  0.87 -0.33 0.86 0.14 1.3
## Rendimiento    0.88 -0.08 0.79 0.21 1.0
## 
##                        RC1  RC2
## SS loadings           2.29 1.84
## Proportion Var        0.38 0.31
## Cumulative Var        0.38 0.69
## Proportion Explained  0.55 0.45
## Cumulative Proportion 0.55 1.00
## 
## Mean item complexity =  1.2
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.13 
##  with the empirical chi square  51.02  with prob <  2.2e-10 
## 
## Fit based upon off diagonal values = 0.89

La rotación varimax permitió identificar asociaciones más claras entre factores y variables específicas.

4.7.1 Varianza explicada por factores rotados

sum(facto.con.rota$ Vaccounted[1,])/6
## [1] 0.6893764

Los dos primeros factores explican 68.94% de la varianza total

4.7.2 Cargas Factoriales con rotación

facto.con.rota$loadings
## 
## Loadings:
##               RC1    RC2   
## estudio        0.725       
## sueno          0.175 -0.887
## Cansancio      0.210  0.630
## Ansiedad      -0.399  0.732
## Concentracion  0.868 -0.326
## Rendimiento    0.883       
## 
##                  RC1   RC2
## SS loadings    2.294 1.842
## Proportion Var 0.382 0.307
## Cumulative Var 0.382 0.689
  • El factor 1 representa el Rendimiento, Concentración y estudio.

  • El factor 2 representa el sueño y Ansiedad.

4.7.3 Gráfica de las cargas con y sin rotación

PREGUNTA 5

5.1 CONTEXTO

La empresa Industrias TecnoManufac S.A. cuenta con una planta de producción donde operan trabajadores en distintos turnos (día y noche). Con el objetivo de mejorar la eficiencia operativa y el bienestar del personal, la dirección de recursos humanos desea analizar los factores que podrían estar relacionados con el desempeño laboral de los empleados.

Se ha recopilado información de 130 trabajadores sobre diversas características laborales y personales, tales como:
- turno: Turno del trabajador (Día o Noche)
- años_experiencia: Años de experiencia laboral
- piezas_producidas: Número de piezas producidas en el mes
- capacitacion: Si ha recibido capacitación reciente (Si o No)
- seguimiento_salud: Si esta bajo seguimiento médico laboral (Si o No)
- evaluacion_rendimiento: Evaluación del desempeño (Alto, Medio, Bajo)

5.2 Generación y carga de datos

5.2.1 Cargamos la data 📥

data<- read_xlsx("data5.xlsx")
knitr::kable(head(data))
turno años_experiencia piezas_producidas capacitacion seguimiento_salud evaluacion_rendimiento
Día 29 436 Alto
Noche 15 413 No Medio
Día 1 396 Alto
Día 25 339 Alto
Día 7 444 No Medio
Noche 9 396 No Medio

5.2.2 Convertimos a factor las variables cualitativas 🔀

data$turno<- factor(data$turno)
data$capacitacion<-factor(data$capacitacion)
data$seguimiento_salud<-factor(data$seguimiento_salud)
data$evaluacion_rendimiento<-factor(data$evaluacion_rendimiento)

5.3 Análisis Descriptivo y gráfico 📊

sjPlot::view_df(data, show.frq = TRUE, show.prc = TRUE, show.na = TRUE)
Data frame: data
ID Name Label missings Values Value Labels Freq. %
1 turno 0 (0.00%) Día
Noche
54
76
41.54
58.46
2 años_experiencia 0 (0.00%) range: 1-40
3 piezas_producidas 0 (0.00%) range: 251-498
4 capacitacion 0 (0.00%) No
50
80
38.46
61.54
5 seguimiento_salud 0 (0.00%) No
26
104
20.00
80.00
6 evaluacion_rendimiento 0 (0.00%) Alto
Bajo
Medio
37
22
71
28.46
16.92
54.62
  1. Turno: La mayoría de los trabajadores labora en el turno de noche.
  2. Años de experiencia: Hay una amplia variabilidad en la experiencia de los trabajadores, desde recién incorporados hasta personas con 40 años de experiencia.
  3. Piezas producidas: La producción individual varía considerablemente, lo que podría estar relacionado con la experiencia, el turno, la capacitación, etc.
  4. Capacitación: La mayoría ha recibido capacitación, lo cual podría influir positivamente en su desempeño y producción.
  5. Seguimiento de salud: Una gran mayoría cuenta con seguimiento de salud, lo que puede ser indicativo de una política de bienestar laboral en la empresa.
  6. Evaluación de rendimiento: La mayor parte de los trabajadores tiene un rendimiento medio, mientras que una minoría se encuentra en los extremos (alto o bajo).
data %>% 
  group_by(turno) %>%
  plot_frq(capacitacion) %>%
  plot_grid()

plot_grpfrq(
  var.cnt = data$seguimiento_salud,
  var.grp = data$turno
)

plot_xtab(data$capacitacion,
                  data$evaluacion_rendimiento, margin = "row")

5.4 Relación entre variables continuas 📈

m=lm(piezas_producidas~años_experiencia,data=data)
summary(m)
## 
## Call:
## lm(formula = piezas_producidas ~ años_experiencia, data = data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -133.726  -51.822    7.244   44.224  136.070 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       399.924     11.328  35.304   <2e-16 ***
## años_experiencia   -1.085      0.473  -2.295   0.0234 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 66.65 on 128 degrees of freedom
## Multiple R-squared:  0.03953,    Adjusted R-squared:  0.03202 
## F-statistic: 5.268 on 1 and 128 DF,  p-value: 0.02335

A un nivel de siginificación del 1% podemos afirmar que si existe una relación significativa entre los años de experiencia y las piezas producidas.

5.5 Verificación de supuestos

5.5.1 Normalidad

Ho:Los residuos del modelo siguen una distribución normal.
Ha:Los residuos del modelo no siguen una distribución normal.

check_normality(m)
## Warning: Non-normality of residuals detected (p = 0.015).
plot(check_normality(m))
## For confidence bands, please install `qqplotr`.

A un nivel de significancia del 1% podemos afirmar que los residuos del modelo se distribuyen normalmente

5.5.2 Homogeneidad de varianzas

Ho:La varianza de los residuos es constante a lo largo de los valores predichos
Ha:La varianza de los residuos no es constante (hay heterocedasticidad).

check_heteroscedasticity(m)
## OK: Error variance appears to be homoscedastic (p = 0.977).
plot(check_heteroscedasticity(m))

A un nivel de significancia del 1% podemos afirmar que la varianza de los residuos es constante a lo largo de los valores predichos

5.6 Análisis Factorial Mixto 📊

famd_pre_result <- data %>% 
  FAMD(ncp =6 ,graph = TRUE)

famd_pre_result
## *The results are available in the following objects:
## 
##   name          description                             
## 1 "$eig"        "eigenvalues and inertia"               
## 2 "$var"        "Results for the variables"             
## 3 "$ind"        "results for the individuals"           
## 4 "$quali.var"  "Results for the qualitative variables" 
## 5 "$quanti.var" "Results for the quantitative variables"

Sobre las dimensiones:
Dim 1 : Explica el 18.94% de la variabilidad total de los datos.
Dim 2 : Explica el 17.17% de la variabilidad total.

Sobre las variables:
años_experiencia: apunta hacia la derecha, alineada casi completamente con Dim 1. Esto significa que esta variable está fuertemente asociada con la primera dimensión y es una de las principales responsables de la variabilidad explicada por Dim 1.

piezas_producidas: apunta hacia la izquierda y ligeramente hacia arriba, más alineada con Dim 2 pero en dirección opuesta a años_experiencia. Esto indica que piezas_producidas está asociada negativamente con Dim 1 y positivamente con Dim 2.

5.6.1 Visualización de las variables en el espacio factorial 📊

famd_pre_result %>% fviz_famd_var()

años_experiencia:

  • Se encuentra muy alejada sobre el eje X (Dim1), pero cerca de cero en el eje Y (Dim2).
  • Interpretación: Esta variable está fuertemente asociada con la primera dimensión (Dim1), es decir, Dim1 resume principalmente la información de años de experiencia.

evaluacion_rendimiento:

  • Está en la parte superior del gráfico, muy alejada sobre el eje Y (Dim2).
  • Interpretación: Esta variable está fuertemente asociada con la segunda dimensión (Dim2), es decir, Dim2 resume principalmente la información de evaluación de rendimiento.

seguimiento_salud:

  • Está más cerca de años_experiencia en el eje X, pero también tiene un valor moderado en el eje Y.
  • Interpretación: Contribuye tanto a Dim1 como a Dim2, pero más a Dim1.

piezas_producidas:

  • Está en una posición intermedia, contribuyendo un poco a ambas dimensiones, pero más a Dim1.
  • Interpretación: Tiene relación con ambas dimensiones, pero no es la variable más importante para ninguna de ellas.

turno y capacitacion:

  • Se encuentran más cerca del origen, especialmente capacitación.

  • Interpretación: Estas variables tienen una menor contribución a las dos primeras dimensiones, es decir, no son las principales responsables de la variabilidad explicada por Dim1 y Dim2.

5.7 Análisis de valores propios 📉

eigenvalues <- famd_pre_result %>% get_eigenvalue()
famd_pre_result %>% fviz_screeplot(addlabels = TRUE, ylim = c(0, 30),
                                   barfill="white", barcolor ="darkblue",
                                   linecolor ="red")

a = famd_pre_result$eig
a
##        eigenvalue percentage of variance cumulative percentage of variance
## comp 1  1.3258887               18.94127                          18.94127
## comp 2  1.2017172               17.16739                          36.10866
## comp 3  1.1212783               16.01826                          52.12692
## comp 4  1.0307333               14.72476                          66.85168
## comp 5  0.8933779               12.76254                          79.61422
## comp 6  0.7714901               11.02129                          90.63551

Según el criterio de Kaiser (eigenvalue ≥ 1), deberíamos conservar las primeras 4 dimensiones, porque sus valores propios son mayores o iguales a 1.

Estas 4 dimensiones explican aproximadamente el 66.85% de la varianza total, lo cual es bastante bueno para resumir la información original.

Las dimensiones 5 y 6 tienen valores propios menores a 1, por lo que se consideran menos informativas y podrían no aportar mucho valor.

5.8 Análisis de variables 🔍

5.8.1.1 General

var_analysis <- famd_pre_result %>% get_famd_var()
5.8.1.2 Coordenadas de las variables en cada dimensión
var_analysis$coord
##                             Dim.1      Dim.2      Dim.3        Dim.4
## años_experiencia       0.44178755 0.02041871 0.23242570 0.0004422077
## piezas_producidas      0.20794399 0.13931084 0.02332457 0.4093461033
## turno                  0.07268216 0.24882483 0.08430762 0.1539994105
## capacitacion           0.03055664 0.13155745 0.51661244 0.0000312706
## seguimiento_salud      0.29585649 0.17099590 0.01668285 0.2793890134
## evaluacion_rendimiento 0.27706186 0.49060948 0.24792514 0.1875252699
##                              Dim.5        Dim.6
## años_experiencia       0.046223104 0.0187655490
## piezas_producidas      0.064839233 0.0004123863
## turno                  0.325690769 0.1120567109
## capacitacion           0.056786106 0.2628679057
## seguimiento_salud      0.001175465 0.0547443421
## evaluacion_rendimiento 0.398663266 0.3226431780
  • años_experiencia tiene un valor alto en Dim.1 (0.44), lo que indica que esta variable está muy ligada a la primera dimensión.

  • capacitacion tiene un valor alto en Dim.3 (0.52), indicando que esta variable contribuye mucho a la tercera dimensión.

5.8.1.3 Calidad de representación (coseno cuadrado)
var_analysis$cos2
##                              Dim.1        Dim.2        Dim.3        Dim.4
## años_experiencia       0.195176242 0.0004169239 0.0540217041 1.955477e-07
## piezas_producidas      0.043240703 0.0194075105 0.0005440356 1.675642e-01
## turno                  0.005282696 0.0619137971 0.0071077740 2.371582e-02
## capacitacion           0.000933708 0.0173073621 0.2668884148 9.778504e-10
## seguimiento_salud      0.087531061 0.0292395971 0.0002783174 7.805822e-02
## evaluacion_rendimiento 0.038381638 0.1203488291 0.0307334363 1.758286e-02
##                               Dim.5        Dim.6
## años_experiencia       2.136575e-03 3.521458e-04
## piezas_producidas      4.204126e-03 1.700624e-07
## turno                  1.060745e-01 1.255671e-02
## capacitacion           3.224662e-03 6.909954e-02
## seguimiento_salud      1.381719e-06 2.996943e-03
## evaluacion_rendimiento 7.946620e-02 5.204931e-02
  • capacitacion tiene un cos2 alto en Dim.3 (~0.27), lo que confirma que está bien representada en esa dimensión.

  • años_experiencia tiene un cos2 alto en Dim.1 (~0.20), lo que indica buena representación en esa dimensión.

5.8.1.4 Contribución de las variables a cada dimensión
var_analysis$contrib
##                            Dim.1     Dim.2     Dim.3        Dim.4      Dim.5
## años_experiencia       33.320109  1.699128 20.728636  0.042902247  5.1739697
## piezas_producidas      15.683367 11.592648  2.080177 39.714066969  7.2577607
## turno                   5.481769 20.705773  7.518884 14.940762485 36.4561014
## capacitacion            2.304616 10.947455 46.073525  0.003033821  6.3563363
## seguimiento_salud      22.313825 14.229296  1.487842 27.105849791  0.1315754
## evaluacion_rendimiento 20.896314 40.825701 22.110937 18.193384687 44.6242566
##                              Dim.6
## años_experiencia        2.43237726
## piezas_producidas       0.05345322
## turno                  14.52471198
## capacitacion           34.07275288
## seguimiento_salud       7.09592308
## evaluacion_rendimiento 41.82078159

En Dim.1, años_experiencia contribuye con ~33%, seguimiento_salud con ~22% y evaluacion_rendimiento con ~20%, siendo las variables más importantes para esa dimensión.

En Dim.3, capacitacion aporta casi el 46%, siendo claramente la variable más relevante para esa dimensión.

En Dim.5 y Dim.6, evaluacion_rendimiento y turno tienen contribuciones muy altas, indicando que esas dimensiones están muy relacionadas con esas variables.

famd_pre_result %>% fviz_contrib(choice = "var", axes=1,)

famd_pre_result %>% fviz_contrib(choice = "var", axes=1:2)

famd_pre_result %>% fviz_contrib(choice = "var", axes=1:5)

5.8.2 Cuantitativas

var_analysis_quanti <- famd_pre_result %>% get_famd_var(element = "quanti.var")
5.8.2.1 Coordenadas de las variables en cada dimensión
var_analysis_quanti$coord
##                        Dim.1      Dim.2      Dim.3       Dim.4     Dim.5
## años_experiencia   0.6646710 -0.1428941  0.4821055 -0.02102874 0.2149956
## piezas_producidas -0.4560088  0.3732437 -0.1527238  0.63980161 0.2546355
##                        Dim.6
## años_experiencia   0.1369874
## piezas_producidas -0.0203073
famd_pre_result %>% 
  fviz_famd_var(choice = "quanti.var", col.var = "coord",
                gradient.cols = c("red","yellow","green"))

  • Dimensión 1 está principalmente asociada con años_experiencia (positiva) y en sentido contrario con piezas_producidas (negativa).

  • Dimensión 4 está fuertemente relacionada con piezas_producidas.

5.8.2.2 Calidad de representación (coseno cuadrado)
var_analysis_quanti$cos2
##                       Dim.1      Dim.2      Dim.3        Dim.4      Dim.5
## años_experiencia  0.4417876 0.02041871 0.23242570 0.0004422077 0.04622310
## piezas_producidas 0.2079440 0.13931084 0.02332457 0.4093461033 0.06483923
##                          Dim.6
## años_experiencia  0.0187655490
## piezas_producidas 0.0004123863
famd_pre_result %>% 
  fviz_famd_var(choice = "quanti.var", col.var = "cos2",
                gradient.cols = c("red","yellow","green"))

  • años_experiencia está bien representada principalmente en Dim.1 y en menor medida en Dim.3.

  • piezas_producidas está bien representada principalmente en Dim.4, y tiene representación moderada en Dim.1 y Dim.2.

5.8.2.3 Contribución de las variables a cada dimensión
var_analysis_quanti$contrib
##                      Dim.1     Dim.2     Dim.3       Dim.4    Dim.5      Dim.6
## años_experiencia  33.32011  1.699128 20.728636  0.04290225 5.173970 2.43237726
## piezas_producidas 15.68337 11.592648  2.080177 39.71406697 7.257761 0.05345322
famd_pre_result %>% 
  fviz_famd_var(choice = "quanti.var", col.var = "contrib",
                gradient.cols = c("red","yellow","green"))

  • Dimensión 1 está dominada por años_experiencia, que es la variable más importante para esta dimensión.

  • Dimensión 2 está dominada por piezas_producidas, siendo la variable principal que explica esta dimensión.

5.8.3 Cualitativas

var_analysis_quali <- famd_pre_result %>% get_famd_var(element = "quali.var")
5.8.3.1 Coordenadas de las variables en cada dimensión
var_analysis_quali$coord
##            Dim.1      Dim.2       Dim.3        Dim.4       Dim.5       Dim.6
## Día   -0.3682793 -0.6487209  0.36475397  0.472653191 -0.63992673  0.34881409
## Noche  0.2616722  0.4609333 -0.25916730 -0.335832530  0.45468479 -0.24784159
## No    -0.2546046  0.5029431  0.96271809  0.007181270 -0.28490407 -0.56963143
## Sí     0.1591279 -0.3143394 -0.60169881 -0.004488294  0.17806504  0.35601964
## No     1.2526337  0.9066173  0.27354059  1.073267074  0.06481157  0.41102173
## Sí    -0.3131584 -0.2266543 -0.06838515 -0.268316768 -0.01620289 -0.10275543
## Alto   0.5617759 -1.0436611 -0.33781232  0.696343732  0.12768167 -0.76878380
## Bajo   0.8209095  1.2547247 -0.88994377 -0.318087132 -1.30676394  0.05657088
## Medio -0.5471227  0.1550918  0.45180026 -0.264321144  0.33837443  0.38310481

Las coordenadas muestran cómo cada categoría cualitativa se asocia con las seis dimensiones del análisis. Categorías opuestas, como “Día” y “Noche” o “Alto” y “Bajo”, tienen signos contrarios en varias dimensiones, indicando que estas dimensiones distinguen claramente entre esos grupos. Cada dimensión refleja contrastes específicos entre categorías, ayudando a identificar patrones clave en los datos cualitativos.

5.8.3.2 Calidad de representación (coseno cuadrado)
var_analysis_quali$cos2
##            Dim.1      Dim.2      Dim.3        Dim.4        Dim.5        Dim.6
## Día   0.09377426 0.29096769 0.09198754 1.544593e-01 0.2831323161 0.0841234312
## Noche 0.09377426 0.29096769 0.09198754 1.544593e-01 0.2831323161 0.0841234312
## No    0.03924015 0.15312137 0.56104329 3.121768e-05 0.0491355033 0.1964201320
## Sí    0.03924015 0.15312137 0.56104329 3.121768e-05 0.0491355033 0.1964201320
## No    0.36782066 0.19267969 0.01754008 2.700248e-01 0.0009846752 0.0396020382
## Sí    0.36782066 0.19267969 0.01754008 2.700248e-01 0.0009846752 0.0396020382
## Alto  0.12048302 0.41583275 0.04356630 1.851173e-01 0.0062238169 0.2256358600
## Bajo  0.13225955 0.30898216 0.15543960 1.985769e-02 0.3351435124 0.0006280907
## Medio 0.34416099 0.02765476 0.23468485 8.032596e-02 0.1316397912 0.1687435949

Los valores de cos2 indican la calidad de representación de cada categoría en las dimensiones. Categorías como “Medio” y “No” están bien representadas en Dim.1 y Dim.3, mientras que “Alto” destaca en Dim.2 y Dim.6. Valores altos de cos2 muestran que esas dimensiones explican bien la variabilidad de esas categorías, ayudando a identificar en qué dimensiones se representan mejor los grupos cualitativos.

5.8.3.3 Contribución de las variables a cada dimensión
var_analysis_quali$contrib
##            Dim.1      Dim.2      Dim.3        Dim.4       Dim.5       Dim.6
## Día    3.2047267 12.1049132  4.3956553  8.734599606 21.31279772  8.49137008
## Noche  2.2770426  8.6008594  3.1232287  6.206162878 15.14330364  6.03334190
## No     1.4182249  6.7368952 28.3529385  0.001866967  3.91159155 20.96784792
## Sí     0.8863906  4.2105595 17.7205866  0.001166854  2.44474472 13.10490495
## No    17.8510603 11.3834367  1.1902734 21.684679833  0.10526030  5.67673847
## Sí     4.4627651  2.8458592  0.2975683  5.421169958  0.02631507  1.41918462
## Alto   5.1094059 21.4670727  2.5833455 12.990118723  0.58135987 28.26221091
## Bajo   6.4871764 18.4489493 10.6605012  1.611680442 36.20788539  0.09099227
## Medio  9.2997315  0.9096791  8.8670899  3.591585523  7.83501136 13.46757840

Las contribuciones indican qué porcentaje aporta cada categoría a la construcción de cada dimensión. Por ejemplo, “Bajo” y “Medio” contribuyen fuertemente a Dim.5, mientras que “Alto” destaca en Dim.2 y Dim.6. Las categorías “No” y “Sí” tienen mayor aporte en Dim.3 y Dim.6. Esto muestra qué categorías son clave para definir cada dimensión y ayudan a interpretar el significado de los ejes factoriales.

3#### 5.8.3.4 Estadístico v.test 📈

var_analysis_quali$v.test
##           Dim.1     Dim.2     Dim.3       Dim.4      Dim.5      Dim.6
## Día   -3.062025 -5.665545  3.297830  4.45712059 -6.4818292  3.8020147
## Noche  3.062025  5.665545 -3.297830 -4.45712059  6.4818292 -3.8020147
## No    -1.985398  4.119577  8.163517  0.06351305 -2.7065490 -5.8232259
## Sí     1.985398 -4.119577 -8.163517 -0.06351305  2.7065490  5.8232259
## No     6.177822  4.696645  1.466999  6.00343091  0.3894034  2.6574462
## Sí    -6.177822 -4.696645 -1.466999 -6.00343091 -0.3894034 -2.6574462
## Alto   3.495134 -6.820443 -2.285457  4.91365619  0.9677545 -6.2703718
## Bajo   3.654568  5.867345 -4.308243 -1.60608035 -7.0871863  0.3301582
## Medio -5.920103  1.762730  5.316035 -3.24382025  4.4604426  5.4343856

Los valores v.test indican la significancia de la asociación de cada categoría con las dimensiones. Valores absolutos mayores a 1.96 señalan una asociación significativa. Por ejemplo, “Día” y “Noche” están significativamente opuestos en Dim.1, Dim.2 y Dim.5, mientras que “No” y “Sí” destacan en Dim.3 y Dim.6. Esto muestra qué categorías influyen fuertemente en la formación de cada dimensión y ayudan a interpretar su significado.

5.8.4 Análisis de individuos 📊

ind_analysis <- famd_pre_result %>% get_famd_ind()
5.8.4.1 Coordenadas de los individuos en cada dimensión
ind_analysis$coord[1:7,] %>% View()

El individuo 1 tiene una alta puntuación positiva en Dim.4 y una fuerte negativa en Dim.2, mientras que el individuo 5 destaca negativamente en Dim.1 y positivamente en Dim.3. Estas diferencias reflejan cómo cada individuo se diferencia según los patrones latentes capturados por las dimensiones.

5.8.4.2 Calidad de representación (coseno cuadrado)
var_analysis_quali$cos2
##            Dim.1      Dim.2      Dim.3        Dim.4        Dim.5        Dim.6
## Día   0.09377426 0.29096769 0.09198754 1.544593e-01 0.2831323161 0.0841234312
## Noche 0.09377426 0.29096769 0.09198754 1.544593e-01 0.2831323161 0.0841234312
## No    0.03924015 0.15312137 0.56104329 3.121768e-05 0.0491355033 0.1964201320
## Sí    0.03924015 0.15312137 0.56104329 3.121768e-05 0.0491355033 0.1964201320
## No    0.36782066 0.19267969 0.01754008 2.700248e-01 0.0009846752 0.0396020382
## Sí    0.36782066 0.19267969 0.01754008 2.700248e-01 0.0009846752 0.0396020382
## Alto  0.12048302 0.41583275 0.04356630 1.851173e-01 0.0062238169 0.2256358600
## Bajo  0.13225955 0.30898216 0.15543960 1.985769e-02 0.3351435124 0.0006280907
## Medio 0.34416099 0.02765476 0.23468485 8.032596e-02 0.1316397912 0.1687435949

El individuo 4 está muy bien representado en Dim.2 (0.84), mientras que el individuo 5 destaca en Dim.1 (0.73). En cambio, valores bajos indican poca explicación por esa dimensión.

5.8.4.3 Contribución de los individuos a cada dimensión
var_analysis_quali$contrib
##            Dim.1      Dim.2      Dim.3        Dim.4       Dim.5       Dim.6
## Día    3.2047267 12.1049132  4.3956553  8.734599606 21.31279772  8.49137008
## Noche  2.2770426  8.6008594  3.1232287  6.206162878 15.14330364  6.03334190
## No     1.4182249  6.7368952 28.3529385  0.001866967  3.91159155 20.96784792
## Sí     0.8863906  4.2105595 17.7205866  0.001166854  2.44474472 13.10490495
## No    17.8510603 11.3834367  1.1902734 21.684679833  0.10526030  5.67673847
## Sí     4.4627651  2.8458592  0.2975683  5.421169958  0.02631507  1.41918462
## Alto   5.1094059 21.4670727  2.5833455 12.990118723  0.58135987 28.26221091
## Bajo   6.4871764 18.4489493 10.6605012  1.611680442 36.20788539  0.09099227
## Medio  9.2997315  0.9096791  8.8670899  3.591585523  7.83501136 13.46757840

El individuo 4 contribuye mucho a Dim.2 (2.83), y el individuo 10 tiene una alta contribución en Dim.4 (1.96). Esto ayuda a identificar qué individuos son clave para cada dimensión del análisis.