library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ 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
library(ggpubr)
library(rstatix)
## 
## Attaching package: 'rstatix'
## 
## The following object is masked from 'package:stats':
## 
##     filter
library(readxl)
Datos_Medidas_repetidas_2 <- read_excel("Datos Medidas repetidas 2.xlsx", 
    sheet = "Hoja2")

Se puede realizar el ANOVA de medidas repetidas bidireccionales para determinar si existe una interacción significativa entre la variedad y el tiempo en la puntuación de autoestima.

# Wide format
data("Datos_Medidas_repetidas_2", package = "datarium")
## Warning in data("Datos_Medidas_repetidas_2", package = "datarium"): data set
## 'Datos_Medidas_repetidas_2' not found
Datos_Medidas_repetidas_2 %>% sample_n_by(variedad, size = 1)
## # A tibble: 3 × 6
##      id    X1    X2    X3    X4 variedad
##   <dbl> <dbl> <dbl> <dbl> <dbl> <chr>   
## 1     4  2.81  4.29  4.75  4.88 Var_1   
## 2     3  3.09  4.65  5.11  5.44 Var_2   
## 3     5  2.91  4.25  4.84  4.97 Var_3
# Gather the columns t1, t2 and t3 into long format.
# Convert id and time into factor variables
Datos_Medidas_repetidas_2 <- Datos_Medidas_repetidas_2 %>%
  gather(key = "time", value = "score", X1, X2, X3, X4) %>%
  convert_as_factor(id, time)
# Inspect some random rows of the data by groups
set.seed(123)
Datos_Medidas_repetidas_2 %>% sample_n_by(variedad, time, size = 1)
## # A tibble: 12 × 4
##    id    variedad time  score
##    <fct> <chr>    <fct> <dbl>
##  1 3     Var_1    X1     2.78
##  2 3     Var_1    X2     4.25
##  3 10    Var_1    X3     4.97
##  4 2     Var_1    X4     4.74
##  5 6     Var_2    X1     3.21
##  6 5     Var_2    X2     4.75
##  7 4     Var_2    X3     5.23
##  8 6     Var_2    X4     5.53
##  9 9     Var_3    X1     2.57
## 10 10    Var_3    X2     5.09
## 11 5     Var_3    X3     4.84
## 12 3     Var_3    X4     4.96

##Resumen estadístico

Datos_Medidas_repetidas_2 %>%
  group_by(variedad, time) %>%
  get_summary_stats(score, type = "mean_sd")
## # A tibble: 12 × 6
##    variedad time  variable     n  mean    sd
##    <chr>    <fct> <fct>    <dbl> <dbl> <dbl>
##  1 Var_1    X1    score       10  2.83 0.242
##  2 Var_1    X2    score       10  4.26 0.176
##  3 Var_1    X3    score       10  4.78 0.133
##  4 Var_1    X4    score       10  5    0.209
##  5 Var_2    X1    score       10  3.24 0.174
##  6 Var_2    X2    score       10  4.79 0.218
##  7 Var_2    X3    score       10  5.29 0.215
##  8 Var_2    X4    score       10  5.55 0.163
##  9 Var_3    X1    score       10  2.85 0.27 
## 10 Var_3    X2    score       10  4.44 0.338
## 11 Var_3    X3    score       10  4.82 0.341
## 12 Var_3    X4    score       10  5.08 0.219

visualización

bxp <- ggboxplot(
  Datos_Medidas_repetidas_2, x = "time", y = "score",
  color = "variedad", palette = "jco"
  )
bxp

##Comprobar suposiciones:

1.Valores atípicos

Datos_Medidas_repetidas_2 %>%
  group_by(variedad, time) %>%
  identify_outliers(score)
## # A tibble: 9 × 6
##   variedad time  id    score is.outlier is.extreme
##   <chr>    <fct> <fct> <dbl> <lgl>      <lgl>     
## 1 Var_1    X1    1      2.21 TRUE       FALSE     
## 2 Var_1    X2    1      3.86 TRUE       TRUE      
## 3 Var_1    X2    2      4.05 TRUE       TRUE      
## 4 Var_1    X2    10     4.45 TRUE       FALSE     
## 5 Var_2    X4    9      5.82 TRUE       FALSE     
## 6 Var_2    X4    10     5.82 TRUE       FALSE     
## 7 Var_3    X3    6      4.23 TRUE       FALSE     
## 8 Var_3    X3    7      5.38 TRUE       FALSE     
## 9 Var_3    X4    10     5.56 TRUE       FALSE

Impacto en la validez de los resultados: Los datos atípicos pueden distorsionar la validez de los resultados del estudio. Pueden afectar la precisión de las estimaciones y reducir la confiabilidad de las conclusiones.

Influencia en las pruebas estadísticas: Los datos atípicos pueden tener un impacto significativo en las pruebas estadísticas utilizadas para analizar las diferencias entre los grupos o a lo largo del tiempo. Dependiendo de la magnitud de los datos atípicos, podrían conducir a conclusiones erróneas o malinterpretaciones de los resultados.

  1. Supuesto de normalidad
Datos_Medidas_repetidas_2 %>%
  group_by(variedad, time) %>%
  shapiro_test(score)
## # A tibble: 12 × 5
##    variedad time  variable statistic       p
##    <chr>    <fct> <chr>        <dbl>   <dbl>
##  1 Var_1    X1    score        0.750 0.00360
##  2 Var_1    X2    score        0.831 0.0339 
##  3 Var_1    X3    score        0.953 0.709  
##  4 Var_1    X4    score        0.960 0.791  
##  5 Var_2    X1    score        0.905 0.247  
##  6 Var_2    X2    score        0.971 0.899  
##  7 Var_2    X3    score        0.965 0.842  
##  8 Var_2    X4    score        0.881 0.135  
##  9 Var_3    X1    score        0.944 0.602  
## 10 Var_3    X2    score        0.901 0.224  
## 11 Var_3    X3    score        0.962 0.813  
## 12 Var_3    X4    score        0.888 0.163

Según la prueva de normalidad la puntuación se distribuyó normalmente en cada momento (p > 0,05), excepto para la variedad Var_1 en los tiempos X1 y X2, según lo evaluado mediante la prueba de Shapiro-Wilk.

gráfico QQ para cada celda del diseño:

ggqqplot(Datos_Medidas_repetidas_2, "score", ggtheme = theme_bw()) +
  facet_grid(time ~ variedad, labeller = "label_both")

Si los puntos en el gráfico QQ siguen aproximadamente una línea diagonal, indica que los datos observados se ajustan bien a la distribución teórica.

Del gráfico anterior, como todos los puntos caen aproximadamente a lo largo de la línea de referencia, podemos asumir normalidad.

crear un gráfico QQ para cada celda del diseño” implica visualizar y evaluar la normalidad de las distribuciones de datos para cada combinación única de condiciones o niveles dentro de tu estudio experimental.

##Cálculo

res.aov <- anova_test(
  data = Datos_Medidas_repetidas_2, dv = score, wid = id,
  within = c(variedad, time)
  )
get_anova_table(res.aov)
## ANOVA Table (type III tests)
## 
##          Effect DFn   DFd        F        p p<.05   ges
## 1      variedad 1.1  9.93   31.560 1.83e-04     * 0.496
## 2          time 3.0 27.00 3403.032 6.54e-35     * 0.939
## 3 variedad:time 6.0 54.00    2.493 3.30e-02     * 0.020

Hay interacciones bidireccionales estadísticamente significativas entre el variedad y el tiempo, F(6,54) = p < 0,05.

El índice GES es una medida de efecto que indica la proporción de la varianza total explicada por el efecto de interés. En este caso, el valor de GES es 0.020, lo que sugiere que alrededor del 2% de la variabilidad total puede atribuirse al efecto de interés.

##Pruebas post hoc Debido a que existe interacciones estadisitcamente significativas entre la variedad y el tiempo (existen diferencias entre las medias) las pruebas post hoc ayudan a identificar cuáles pares de grupos difieren significativamente entre sí en este caso avaluaremos el efecto de la varieddad sobre la creciemiento en cada tiempo

# Effect of treatment at each time point
one.way <- Datos_Medidas_repetidas_2 %>%
  group_by(time) %>%
  anova_test(dv = score, wid = id, within = variedad) %>%
  get_anova_table() %>%
  adjust_pvalue(method = "bonferroni")
one.way
## # A tibble: 4 × 9
##   time  Effect     DFn   DFd     F         p `p<.05`   ges     p.adj
##   <fct> <chr>    <dbl> <dbl> <dbl>     <dbl> <chr>   <dbl>     <dbl>
## 1 X1    variedad  2    18     18.7 0.0000408 *       0.43  0.000163 
## 2 X2    variedad  1.15 10.4   21.6 0.00062   *       0.458 0.00248  
## 3 X3    variedad  1.11  9.98  21.8 0.000727  *       0.498 0.00291  
## 4 X4    variedad  1.15 10.3   55.5 0.0000126 *       0.621 0.0000504

Existen diferencias significativas

# Pairwise comparisons between treatment groups
pwc <- Datos_Medidas_repetidas_2 %>%
  group_by(time) %>%
  pairwise_t_test(
    score ~ variedad, paired = TRUE,
    p.adjust.method = "bonferroni"
    )
pwc
## # A tibble: 12 × 11
##    time  .y.   group1 group2    n1    n2 statistic    df             p     p.adj
##  * <fct> <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>         <dbl>     <dbl>
##  1 X1    score Var_1  Var_2     10    10    -8.76      9 0.0000106       3.18e-5
##  2 X1    score Var_1  Var_3     10    10    -0.226     9 0.826           1   e+0
##  3 X1    score Var_2  Var_3     10    10     4.88      9 0.000873        3   e-3
##  4 X2    score Var_1  Var_2     10    10   -16.7       9 0.000000045     1.35e-7
##  5 X2    score Var_1  Var_3     10    10    -1.84      9 0.098           2.95e-1
##  6 X2    score Var_2  Var_3     10    10     3.64      9 0.005           1.6 e-2
##  7 X3    score Var_1  Var_2     10    10   -18.6       9 0.0000000174    5.22e-8
##  8 X3    score Var_1  Var_3     10    10    -0.480     9 0.643           1   e+0
##  9 X3    score Var_2  Var_3     10    10     4.48      9 0.002           5   e-3
## 10 X4    score Var_1  Var_2     10    10   -25.3       9 0.00000000114   3.42e-9
## 11 X4    score Var_1  Var_3     10    10    -1.20      9 0.259           7.77e-1
## 12 X4    score Var_2  Var_3     10    10     7.24      9 0.0000488       1.46e-4
## # ℹ 1 more variable: p.adj.signif <chr>

no huvo diferencias signidficativas por que todo da sobre 0.05, la comparaciones por pares muestran que la puntuación media de creciemiento fue significativamente en el tiempo

Efecto del tiempo . Tenga en cuenta que también es posible realizar el mismo análisis para la timevariable en cada nivel de variedad. No es necesario que hagas este análisis.

# Effect of time at each level of treatment
one.way2 <- Datos_Medidas_repetidas_2 %>%
  group_by(variedad) %>%
  anova_test(dv = score, wid = id, within = time) %>%
  get_anova_table() %>%
  adjust_pvalue(method = "bonferroni")
# Pairwise comparisons between time points
pwc2 <- Datos_Medidas_repetidas_2 %>%
  group_by(variedad) %>%
  pairwise_t_test(
    score ~ time, paired = TRUE,
    p.adjust.method = "bonferroni"
    )
pwc2
## # A tibble: 18 × 11
##    variedad .y.   group1 group2    n1    n2 statistic    df        p    p.adj
##  * <chr>    <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>    <dbl>    <dbl>
##  1 Var_1    score X1     X2        10    10    -49.6      9 2.77e-12 1.66e-11
##  2 Var_1    score X1     X3        10    10    -41.7      9 1.31e-11 7.86e-11
##  3 Var_1    score X1     X4        10    10    -52.4      9 1.68e-12 1.01e-11
##  4 Var_1    score X2     X3        10    10    -22.3      9 3.45e- 9 2.07e- 8
##  5 Var_1    score X2     X4        10    10    -26.1      9 8.48e-10 5.09e- 9
##  6 Var_1    score X3     X4        10    10     -8.97     9 8.79e- 6 5.27e- 5
##  7 Var_2    score X1     X2        10    10    -60.5      9 4.66e-13 2.8 e-12
##  8 Var_2    score X1     X3        10    10    -98.9      9 5.59e-15 3.35e-14
##  9 Var_2    score X1     X4        10    10   -106.       9 2.95e-15 1.77e-14
## 10 Var_2    score X2     X3        10    10    -36.9      9 3.90e-11 2.34e-10
## 11 Var_2    score X2     X4        10    10    -35.3      9 5.84e-11 3.5 e-10
## 12 Var_2    score X3     X4        10    10    -10.2      9 2.98e- 6 1.79e- 5
## 13 Var_3    score X1     X2        10    10    -29.8      9 2.65e-10 1.59e- 9
## 14 Var_3    score X1     X3        10    10    -30.7      9 1.99e-10 1.19e- 9
## 15 Var_3    score X1     X4        10    10    -39.4      9 2.16e-11 1.3 e-10
## 16 Var_3    score X2     X3        10    10     -7.85     9 2.57e- 5 1.54e- 4
## 17 Var_3    score X2     X4        10    10    -12.8      9 4.58e- 7 2.75e- 6
## 18 Var_3    score X3     X4        10    10     -3.54     9 6   e- 3 3.8 e- 2
## # ℹ 1 more variable: p.adj.signif <chr>

el efecto del tiempo fue significativo para todas las pruebas

##Procedimiento de interacción bidireccional no significativa

Comparaciones de pruebas t pareadas por pares:

# comparisons for variedad variable
Datos_Medidas_repetidas_2 %>%
  pairwise_t_test(
    score ~ variedad, paired = TRUE, 
    p.adjust.method = "bonferroni"
    )
## # A tibble: 3 × 10
##   .y.   group1 group2    n1    n2 statistic    df        p    p.adj p.adj.signif
## * <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>    <dbl>    <dbl> <chr>       
## 1 score Var_1  Var_2     40    40    -27.7     39 2.72e-27 8.16e-27 ****        
## 2 score Var_1  Var_3     40    40     -1.87    39 7   e- 2 2.09e- 1 ns          
## 3 score Var_2  Var_3     40    40      9.78    39 4.79e-12 1.44e-11 ****
# comparisons for time variable
Datos_Medidas_repetidas_2 %>%
  pairwise_t_test(
    score ~ time, paired = TRUE, 
    p.adjust.method = "bonferroni"
    )
## # A tibble: 6 × 10
##   .y.   group1 group2    n1    n2 statistic    df        p    p.adj p.adj.signif
## * <chr> <chr>  <chr>  <int> <int>     <dbl> <dbl>    <dbl>    <dbl> <chr>       
## 1 score X1     X2        30    30    -61.3     29 3.12e-32 1.87e-31 ****        
## 2 score X1     X3        30    30    -72.4     29 2.58e-34 1.55e-33 ****        
## 3 score X1     X4        30    30    -87.2     29 1.18e-36 7.08e-36 ****        
## 4 score X2     X3        30    30    -22.1     29 1.10e-19 6.60e-19 ****        
## 5 score X2     X4        30    30    -32.4     29 2.58e-24 1.55e-23 ****        
## 6 score X3     X4        30    30     -9.40    29 2.66e-10 1.6 e- 9 ****

hay diferencias significativas exepto

INFORME:

# Visualization: box plots with p-values
pwc <- pwc %>% add_xy_position(x = "time")
bxp + 
  stat_pvalue_manual(pwc, tip.length = 0, hide.ns = TRUE) +
  labs(
    subtitle = get_test_label(res.aov, detailed = TRUE),
    caption = get_pwc_label(pwc)
  )