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
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
bxp<-ggboxplot(df,x="time",y="score", add="point")
bxp
df %>% group_by(time) %>% identify_outliers(score)
## [1] time Kids score is.outlier is.extreme
## <0 rows> (or 0-length row.names)
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.
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
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
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)
)