crees que podríamos hacer un análisis multivariante donde se pueda observar todos los deportes por separado para mujeres y hombres por separado?? con C.I. 95% también sería interesante poder comparar cuándo “sube más el cortisol de 0 a 30” si los días de descanso (rest) o los días de competición (Comp)??
Carga de datos
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.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── 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
Warning: package 'ggstatsplot' was built under R version 4.4.1
You can cite this package as:
Patil, I. (2021). Visualizations with statistical details: The 'ggstatsplot' approach.
Journal of Open Source Software, 6(61), 3167, doi:10.21105/joss.03167
library(lme4)
Warning: package 'lme4' was built under R version 4.4.1
Loading required package: Matrix
Attaching package: 'Matrix'
The following objects are masked from 'package:tidyr':
expand, pack, unpack
library(lmerTest)
Attaching package: 'lmerTest'
The following object is masked from 'package:lme4':
lmer
The following object is masked from 'package:stats':
step
df2=df %>%select(ID,GENDER,Sport,Type=Clasificacion, CORT_Awak_rest, CORT_30_rest, CORT_awak_comp, CORT_30_comp) %>%mutate(CORT_rest_rel=CORT_30_rest/CORT_Awak_rest,CORT_comp_rel=CORT_30_comp/CORT_awak_comp,CORT_rest_incRel=(CORT_Awak_rest-CORT_30_rest)/CORT_Awak_rest*100,CORT_comp_increl=(CORT_awak_comp-CORT_30_comp)/CORT_awak_comp*100)df3=df2 %>%select(ID,GENDER,Sport,Type,CORT_rest_rel,CORT_comp_rel) %>%pivot_longer(-c(ID,GENDER,Sport,Type)) %>%mutate(name=str_replace(name,"_rel","")) %>%separate(name,into=c("Hormone","Activity")) %>%mutate(Activity=factor(Activity,levels=c("rest","comp"), labels=c("Rest", "Competition")))creaGrafico=function(df,Deporte="Football"){ggwithinstats(df %>%filter(Sport==Deporte),x = Activity,y = value,type ="np")+ylab("Relative change in cortisol after 30 minutes")+xlab(Deporte)+coord_cartesian(ylim=c(0.25,12))+#escala logaritmica en el eje yscale_y_log10()+theme_minimal()+theme(legend.position ="none")}#creaGrafico("Football")#creaGrafico("Hockey")listaGraficos=df3 %>%distinct(Sport) %>%pull(Sport) %>%map(creaGrafico %>%partial(df=df3))
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Vamos a dejar temporalmente fuera a los e-sports. Seguimos con el resto.
df=df %>%filter(Sport!="e-Sports")
¿La respuesta al cortisol está relacionada con las exigencias del deportista al empezar el día comparado con el día de descanso.?
Todos los días de competición han sido dias importantes (salvo quizás no tanto Atletismo y natación).
Es posible que en el futbol la variabilidad sea relacionada con ser suplente, portero, …
Llamamos repuesta al cortisol a la diferencia entre los 30 minutos y el despertar (Salience/Slope)
Queremos comparar los slopes INTRA entre dias de descanso y dias de competición.
Deportes individuales vs deportes de equipo.
Las demandas cognitivs produicen respuestas anticipatorias. Los equipos de e-sports no tienen ningun esfuerzo físico, pero si mental. Queremos comparar e-sports vs individuales.
Discriptiva general de qué diferencia hay en los cambios entre dias de competicion y dias normales (CORTinc_Dif)
Dado que suele haber ciertos incrementos a los 30 minutos de despertarse, y tenemos dias de competición y de descanso, vamos a llamar CORTinc_Dif a la diferencia entre los respectivos incrementos de cortisol a los 30 minutos de despertarse entre dias de competición y días de descanso. Exploremos la variable en los diferentes deportes y vamos a añadir unos contrastes simples entre ellos:
Tras corregir por las diferencias de variabilidad con la prueba de Welch aparentemente los que experimentan cambios más altos entre dias de competición son los jugadores de badminton, que presentan diferencias significativas con respecto a los de atletismo y natación, que son los que experimentan menos cambios.
El coeficiente omega cuadrado parcial=0.32 indica que aproximadamente el 32% de la variabilidad en la variable dependiente se puede explicar por la diferencia entre los tipos de deporte, y visto como size-effect es un valor de efecto grande el que tiene el deporte en los cambios experimentados (valores mayores que 0.06 se consideran medianos y mayores que 0.14 grandes. Incluso el intervalo de confianza del 95% deja claro que el tamaño de efecto es de mediano a grande tirando más a grande.)
Deportes individuales vs deportes de equipo.
Pero el objetivo no era ese sino comparar deportes individuales y de grupo. Vamos a hacerlo de la forma más simple comparandolos directamente tal cual sin tener en cuenta otras consideraciones:
Tal cual, en la comparación no se aprecia diferencias significativas. Pero hay algo que no tenemos en cuenta… Los deportistas pertenecen a diferentes deportes y podría haber un efecto concreto de cada deporte (cluster) y lo que buscamos es si, más allá de ese efecto del deporte, hay algo que diferencie a los deportes individuales de los de equipo.
Vamos a hacer un modelo mixto con el deporte como factor aleatorio y el tipo de deporte como factor fijo:
lmer(CORTincDif ~ IT + (1| Sport), data = df) %>%summary()
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: CORTincDif ~ IT + (1 | Sport)
Data: df
REML criterion at convergence: 1222.3
Scaled residuals:
Min 1Q Median 3Q Max
-2.5765 -0.4721 -0.1467 0.2953 5.6573
Random effects:
Groups Name Variance Std.Dev.
Sport (Intercept) 1.639 1.280
Residual 36.523 6.043
Number of obs: 190, groups: Sport, 7
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.5454 0.9349 6.0330 3.792 0.00896 **
ITTeam 0.5376 1.3904 4.9692 0.387 0.71502
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr)
ITTeam -0.672
En este modelo el intercept nos mide cuanto aumenta el cortisol en los dias de competición en los deportes individuales y es 3.3253 (EE 0.94, p=0.013), pero en los de equipo, aunque el cambio es mayor (hay que añadirele 0.78), no es significativamente diferente a los individuales.
Sí que los deportes son diferentes entre sí (como vimos badminton vs Natación), sí que hay un aumento los días de competición con respecto a los de descanso, pero no hay un cambio especial entre dias de competición y descanso entre deportes de equipo e individuales.
Segmento por sexos, no vaya a ser que las mujeres vayan por un lado completamente diferente de los hombres:
lmer(CORTincDif ~ IT + (1| Sport), data = df %>%filter(GENDER=="Male")) %>%summary()
boundary (singular) fit: see help('isSingular')
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: CORTincDif ~ IT + (1 | Sport)
Data: df %>% filter(GENDER == "Male")
REML criterion at convergence: 878.4
Scaled residuals:
Min 1Q Median 3Q Max
-2.2550 -0.4217 -0.1398 0.2337 4.9836
Random effects:
Groups Name Variance Std.Dev.
Sport (Intercept) 0.00 0.000
Residual 47.26 6.874
Number of obs: 132, groups: Sport, 6
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.66876 1.07358 130.00000 3.417 0.000845 ***
ITTeam -0.08744 1.29301 130.00000 -0.068 0.946190
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr)
ITTeam -0.830
optimizer (nloptwrap) convergence code: 0 (OK)
boundary (singular) fit: see help('isSingular')
lmer(CORTincDif ~ IT + (1| Sport), data = df %>%filter(GENDER=="Female")) %>%summary()
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: CORTincDif ~ IT + (1 | Sport)
Data: df %>% filter(GENDER == "Female")
REML criterion at convergence: 314.9
Scaled residuals:
Min 1Q Median 3Q Max
-1.4778 -0.6994 -0.1253 0.5597 2.7369
Random effects:
Groups Name Variance Std.Dev.
Sport (Intercept) 3.164 1.779
Residual 13.596 3.687
Number of obs: 58, groups: Sport, 5
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.499 1.087 3.235 3.218 0.0437 *
ITTeam 1.899 2.306 2.780 0.823 0.4750
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr)
ITTeam -0.472
Mirando los sexos por separado, no se ve nada diferente a lo que vimos en el global. No hay diferencias significativas entre deportes individuales y de equipo en la respuesta al cortisol entre dias de competición y descanso. Solo parece que los hombres experimentan menos cambios que las mujeres. Veamos un modelo que desglose por tipo de deporte y sexo:
lmer(CORTincDif ~ GENDER+ IT + (1| Sport), data = df) %>%summary()
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: CORTincDif ~ GENDER + IT + (1 | Sport)
Data: df
REML criterion at convergence: 1220
Scaled residuals:
Min 1Q Median 3Q Max
-2.5660 -0.4641 -0.1521 0.3206 5.6470
Random effects:
Groups Name Variance Std.Dev.
Sport (Intercept) 1.562 1.250
Residual 36.708 6.059
Number of obs: 190, groups: Sport, 7
Fixed effects:
Estimate Std. Error df t value Pr(>|t|)
(Intercept) 3.7917 1.0892 8.7075 3.481 0.00728 **
GENDERMale -0.4813 1.1541 76.6288 -0.417 0.67782
ITTeam 0.6481 1.4055 5.3767 0.461 0.66280
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Correlation of Fixed Effects:
(Intr) GENDER
GENDERMale -0.528
ITTeam -0.449 -0.210
No vemos nada diferente a lo anterior. No hay diferencias significativas entre deportes individuales y de equipo en la respuesta al cortisol entre dias de competición y descanso. Sí, el cortisol sube significativamente más los dias de competición, se observa más en las mujeres y más en los deportes de equipo, pero no significativo con respecto a los hombres y los deportes individuales respectivamente.
Visión en modo de “Slopes”, incrementos de cortisol según deportes y días de competición
Vamos a hacer un seguimiento de cada individuo y ver como varía su cortisol en los días de competición y descanso, aunque este tipo de gráficos es más adecuado para muestras pequeñas que estas muestras tan grandes y donde hay riesgo de ver más bien una maraña de líneas.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
Scale for y is already present.
Adding another scale for y, which will replace the existing scale.
# A tibble: 44 × 9
GENDER Sport Type Moment Day name mean se n
<fct> <fct> <fct> <fct> <chr> <chr> <dbl> <dbl> <int>
1 Female Swimming Individual 30 min Comp. CORT_30_comp 8.7 1.19 4
2 Female Swimming Individual 30 min Rest CORT_30_rest 6.77 1.21 4
3 Female Swimming Individual Awake Rest CORT_Awak_rest 5.24 0.563 4
4 Female Swimming Individual Awake Comp. CORT_awak_comp 5.83 0.696 4
5 Female Athletism Individual 30 min Comp. CORT_30_comp 8.23 0.856 13
6 Female Athletism Individual 30 min Rest CORT_30_rest 7.38 0.839 13
7 Female Athletism Individual Awake Rest CORT_Awak_rest 5.55 0.657 13
8 Female Athletism Individual Awake Comp. CORT_awak_comp 4.56 0.659 13
9 Female Judo Individual 30 min Comp. CORT_30_comp 10.7 0.707 7
10 Female Judo Individual 30 min Rest CORT_30_rest 5.00 0.503 7
# ℹ 34 more rows
Tal vez no deberían pintar nada en este gráfico los deportes donde no hay simultáneamente hombres y mujeres (curiosamente son todos deportes de equipo).
Está sería la versión desglosandolos en dos gráficos: Uno para deportes individuales (donde es posible comparar sexos), y otro para deportes de equipo (donde no es posible comparar sexos):
Deportes individuales, posible comparar géneros
Una versión
Deportes de equipo, no es posible comparar géneros
Ahora vamos a por versión equivalente, pero comparando sexos:
Esto se puede entender añadiendo a todo el mundo en general o solo añadir aquellos deportes donde haya a la vez hombres y mujeres, controlando por el deporte que practican y estudiando cuanto se desvían con respecto a la media del mismo.
El primero es más simple, pero el segundo nos permite aislarnos del deporte en concreto, aunque perdemos casos. Lo vamos ahacer de las dos formas y luego ya veremos qué es mejor contar:
# A tibble: 8 × 7
GENDER Moment Day name mean se n
<fct> <fct> <chr> <chr> <dbl> <dbl> <int>
1 Female 30 min Comp. CORT_30_comp 11.1 0.805 44
2 Female 30 min Rest CORT_30_rest 7.33 0.393 44
3 Female Awake Rest CORT_Awak_rest 6.32 0.385 44
4 Female Awake Comp. CORT_awak_comp 6.19 0.476 44
5 Male 30 min Comp. CORT_30_comp 10.8 0.817 41
6 Male 30 min Rest CORT_30_rest 6.45 0.490 41
7 Male Awake Rest CORT_Awak_rest 5.35 0.561 41
8 Male Awake Comp. CORT_awak_comp 6.07 0.537 41
Como en el anterior, no hay nada que diga que merezca gran cosa diferenciar por sexos. Para quitarnos las últimas dudas, vamos a hacer lo mismo que este, pero controlando por el sexo. Nos vamos a quedar con los residuos del modelo, que está en la misma escala que la variable actual, pero centrado en cero.
Comparación de hombres y mujeres, controlando por deporte
# A tibble: 8 × 6
GENDER Moment Day mean se n
<fct> <fct> <chr> <dbl> <dbl> <int>
1 Female Awake Comp. -1.52 0.330 44
2 Female Awake Rest -1.39 0.245 44
3 Female 30 min Comp. 3.43 0.604 44
4 Female 30 min Rest -0.383 0.341 44
5 Male Awake Comp. -1.14 0.336 41
6 Male Awake Rest -1.86 0.323 41
7 Male 30 min Comp. 3.62 0.557 41
8 Male 30 min Rest -0.765 0.347 41
Aquí el eje Y representa lo de siempre pero de forma que 0 es el valor esperado para cada deporte para un dia aleatorio (sea de competición o descanso) y una persona aleatoria (hombre o mujer). Si el valor es positivo, es que el valor observado es mayor que el esperado, y si es negativo, es que es menor. Si acaso diría que parece que un hombre que practique undeporte parece despertar los dias de descanso con un nivel de cortisol algo más bajo que su equivalente del mismo deporte mujer. Pero tampoco es que llame mucho la atención y también podrían decir que hemos mirado mucho para que nos salga algo.
Por mí solo destacaría que al estudiar deportes donde hay hombres y mujeres, no parece que el sexo, tras controlar por deporte valga mucho la pena. En deportista de este nivel lo que importa es la competición.
Vamos a poner la escala del cortisol en logaritmica para evitar falta de normalidad
grafico+scale_y_log10()
Cuestiones previas para la tabla 1
Es interesante antes de ir a por los objetivos del estudio chequear si los valores al despertar los dias de competición son como los dias normales. Si lo fuesen podríamos plantearnos tomar como valores de referencia (“00”) la media de los dos. SI no lo fuesen deberíamos tomar como valores de referencia los del despertar de cada día. Haremos los dos análisis y ya veremos cual nos cuenta una historia más interesante.
Aparentemente se levantan bastante igual sea cual sea el deporte y sexo, y donde aparece una pequeña diferencia la submuestra es pequeña. Sería posible si quisiésemos controlar cierta variabilidad tomar como valor de referencia la media de los dos días. Al menos sabemos que la posibilidad existe.
Cambios entre tiempo m00 y m30mm (diferencias), entre dias de competición y de descanso
Aparentemente la variabilidad que existe intradia (m00 a m30) es muy pequeña los dias de descanso. En general se produce un aumento de Cortisol desde m00 a m30 los dias de competición. Si comparamos el aumento desde m00 a m30 entre los dias de competición y dias de descanso, se suele ver un aumento.
Se observa una heterogeneidad relacionada con el tipo de deporte. Aparentemente vamos a tener que separar los resultados por ellos. En los deportes donde compiten hombres y mujeres no parece que haya gran diferencias por sexos. Posiblemente tengamos derecho a no considerar el sexo, o si acaso considerarlo como una variable de control.