El siguiente ejemplo corresponde a un grupo de 12 niños observados a los 30, 36, 42 y 48 meses. La variable dependiente en este caso es la inteligencia del grupo de 12 niños y el propósito del anÔlisis es determinar si la inteligencia va cambiando con el tiempo.

library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.4     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.0.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(ggpubr)
library(rstatix)
## 
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
## 
##     filter
library(datarium)



```r
Kids<-c(1,2,3,4,5,6,7,8,9,10,11,12)
T1<-c(108,103,96,84,118,110,129,90,84,96,105,113)
T2<-c(96,117,107,85,125,107,128,84,104,100,114,117)
T3<-c(110,127,106,92,125,96,123,101,100,103,105,132)
T4<-c(122,133,107,99,116,91,128,113,88,105,112,130)
df<-data.frame(Kids=Kids,T1=T1,T2=T2,T3=T3,T4=T4)
df
##    Kids  T1  T2  T3  T4
## 1     1 108  96 110 122
## 2     2 103 117 127 133
## 3     3  96 107 106 107
## 4     4  84  85  92  99
## 5     5 118 125 125 116
## 6     6 110 107  96  91
## 7     7 129 128 123 128
## 8     8  90  84 101 113
## 9     9  84 104 100  88
## 10   10  96 100 103 105
## 11   11 105 114 105 112
## 12   12 113 117 132 130
df <- df %>% gather(key="time",value="score",T1,T2,T3,T4) %>% convert_as_factor(Kids,time)
df
##    Kids time score
## 1     1   T1   108
## 2     2   T1   103
## 3     3   T1    96
## 4     4   T1    84
## 5     5   T1   118
## 6     6   T1   110
## 7     7   T1   129
## 8     8   T1    90
## 9     9   T1    84
## 10   10   T1    96
## 11   11   T1   105
## 12   12   T1   113
## 13    1   T2    96
## 14    2   T2   117
## 15    3   T2   107
## 16    4   T2    85
## 17    5   T2   125
## 18    6   T2   107
## 19    7   T2   128
## 20    8   T2    84
## 21    9   T2   104
## 22   10   T2   100
## 23   11   T2   114
## 24   12   T2   117
## 25    1   T3   110
## 26    2   T3   127
## 27    3   T3   106
## 28    4   T3    92
## 29    5   T3   125
## 30    6   T3    96
## 31    7   T3   123
## 32    8   T3   101
## 33    9   T3   100
## 34   10   T3   103
## 35   11   T3   105
## 36   12   T3   132
## 37    1   T4   122
## 38    2   T4   133
## 39    3   T4   107
## 40    4   T4    99
## 41    5   T4   116
## 42    6   T4    91
## 43    7   T4   128
## 44    8   T4   113
## 45    9   T4    88
## 46   10   T4   105
## 47   11   T4   112
## 48   12   T4   130

Resumen EstadĆ­stico

df %>% group_by(time) %>% get_summary_stats(score,type="mean_sd")
## # A tibble: 4 x 5
##   time  variable     n  mean    sd
##   <fct> <chr>    <dbl> <dbl> <dbl>
## 1 T1    score       12   103  13.7
## 2 T2    score       12   107  14.2
## 3 T3    score       12   110  13.3
## 4 T4    score       12   112  14.8
df
##    Kids time score
## 1     1   T1   108
## 2     2   T1   103
## 3     3   T1    96
## 4     4   T1    84
## 5     5   T1   118
## 6     6   T1   110
## 7     7   T1   129
## 8     8   T1    90
## 9     9   T1    84
## 10   10   T1    96
## 11   11   T1   105
## 12   12   T1   113
## 13    1   T2    96
## 14    2   T2   117
## 15    3   T2   107
## 16    4   T2    85
## 17    5   T2   125
## 18    6   T2   107
## 19    7   T2   128
## 20    8   T2    84
## 21    9   T2   104
## 22   10   T2   100
## 23   11   T2   114
## 24   12   T2   117
## 25    1   T3   110
## 26    2   T3   127
## 27    3   T3   106
## 28    4   T3    92
## 29    5   T3   125
## 30    6   T3    96
## 31    7   T3   123
## 32    8   T3   101
## 33    9   T3   100
## 34   10   T3   103
## 35   11   T3   105
## 36   12   T3   132
## 37    1   T4   122
## 38    2   T4   133
## 39    3   T4   107
## 40    4   T4    99
## 41    5   T4   116
## 42    6   T4    91
## 43    7   T4   128
## 44    8   T4   113
## 45    9   T4    88
## 46   10   T4   105
## 47   11   T4   112
## 48   12   T4   130

Visualización

bxp<-ggboxplot(df,x="time",y="score", add="point")
bxp

Supuesto del Modelo

df %>% group_by(time) %>% identify_outliers(score)
## [1] time       Kids       score      is.outlier is.extreme
## <0 rows> (or 0-length row.names)

Normalidad

df %>% group_by(time) %>% shapiro_test(score)
## # A tibble: 4 x 4
##   time  variable statistic     p
##   <fct> <chr>        <dbl> <dbl>
## 1 T1    score        0.968 0.883
## 2 T2    score        0.957 0.736
## 3 T3    score        0.911 0.222
## 4 T4    score        0.960 0.778
ggqqplot(df,"score",facet.by="time")

El modelo restringido muestra que el puntaje esperado para cada sujeto i es el promedio del sujeto i ignorando el factor tiempo. El modelo restringido muestra que el puntaje esperado para cada sujeto i es el promedio del sujeto i ignorando el factor tiempo.

Calculo de Anova

res.aov<-anova_test(data=df,dv=score,wid=Kids,within=time)
get_anova_table(res.aov)
## ANOVA Table (type III tests)
## 
##   Effect  DFn   DFd     F     p p<.05  ges
## 1   time 1.83 20.11 3.027 0.075       0.06

Comparación de Media

s

pwc<-df %>% pairwise_t_test(score~time,paired=TRUE,p.adjust.method="bonferroni")
pwc
## # A tibble: 6 x 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 T1     T2        12    12    -1.55     11 0.149 0.894 ns          
## 2 score T1     T3        12    12    -2.30     11 0.042 0.253 ns          
## 3 score T1     T4        12    12    -2.44     11 0.033 0.198 ns          
## 4 score T2     T3        12    12    -1.09     11 0.3   1     ns          
## 5 score T2     T4        12    12    -1.16     11 0.271 1     ns          
## 6 score T3     T4        12    12    -0.896    11 0.39  1     ns

Reporte

pwc <- pwc %>% add_xy_position(x="time")
  bxp+
  stat_pvalue_manual(pwc) +
    labs(
         subtitle = get_test_label(res.aov,detailed=TRUE),
         caption=get_pwc_label(pwc)
         )