13 o 16 Trabajo del diseño de hoy https://www.datanovia.com/en/lessons/repeated-measures-anova-in-r/
El tiempo juega un papel importante en el modelo, que pasa cuando se tiene mediciones en el “Tiempo”, hacer evaluaciones temprales.
DISEÑO EN MEDIDAS REPETIDAS *Factor Intrasujeto: El tiempo.
*Factores Entre-sujeto: FSCA, FSBA, FCCA, FCBA
TRES CASOS DE ESTE DISEÑO
1. Diseño de medidas repetidas de una via: Se la llama una sola “Via” cuando solo hay un “Factor”(tiempo) Resp: Aceite (Limonaria) t1= Corte 1(30 dias) t1= Corte 2(60 dias) *t1= Corte 2(90 dias)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
# install.packages("datarium")
data("selfesteem", package = "datarium")
datos = selfesteem
datos = datos %>%
gather(key = "tiempo",
value = "rto",
t1, t2, t3) %>%
mutate_at(vars(id, tiempo), as.factor)
print(datos)
## # A tibble: 30 × 3
## id tiempo rto
## <fct> <fct> <dbl>
## 1 1 t1 4.01
## 2 2 t1 2.56
## 3 3 t1 3.24
## 4 4 t1 3.42
## 5 5 t1 2.87
## 6 6 t1 2.05
## 7 7 t1 3.53
## 8 8 t1 3.18
## 9 9 t1 3.51
## 10 10 t1 3.04
## # ℹ 20 more rows
#id (Factor que identifica la parcela y tiempo se debe indicar que son los factores)
Se reuniero los datos, donde se paso de formato ANCHO A UNO LARGO
VISUALIZACION POR DIAGRAMA DE CAJA
boxplot(datos$rto~ datos$tiempo)
RESUMEN ESTADISTICO DE LOS DATOS
datos %>%
group_by(tiempo) %>%
summarise(media = mean(rto),
desv = sd(rto),
n = n(),
cv = 100*desv/media)
## # A tibble: 3 × 5
## tiempo media desv n cv
## <fct> <dbl> <dbl> <int> <dbl>
## 1 t1 3.14 0.552 10 17.6
## 2 t2 4.93 0.863 10 17.5
## 3 t3 7.64 1.14 10 15.0
*Cv: Si tiene menos 20% son datos normales, si son superiores hay problemas,en caso mayor a 20% imputar
boxplot(datos$rto~datos$tiempo)
DETECION DE DATOS ATIPICOS
library(rstatix)
##
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
##
## filter
datos %>%
group_by(tiempo) %>%
identify_outliers(rto)
## # A tibble: 2 × 5
## tiempo id rto is.outlier is.extreme
## <fct> <fct> <dbl> <lgl> <lgl>
## 1 t1 6 2.05 TRUE FALSE
## 2 t2 2 6.91 TRUE FALSE
Is.outlier (TRUE): Son posibles datos atipicos, pero como “El resumen estadistico me deio menor a 20%, me relajo” No detectamos datos atipicos
SUPUESTO DE NORMALIDAD
datos %>%
group_by(tiempo) %>%
shapiro_test(rto)
## # A tibble: 3 × 4
## tiempo variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 t1 rto 0.967 0.859
## 2 t2 rto 0.876 0.117
## 3 t3 rto 0.923 0.380
SUPUESTO DE ESFERICIDAD Tiene que ver con igualdad de varianza, tenemos tiempo que son muy distintas t1-t2-t3 Este compara si la variabilidad de los datos en tiempo son “Sucesivos” es igual
ANALISIS DE VARIANZA
res.aov= anova_test(data=datos,
dv=rto,
wid = id,
within = tiempo)
#Esfericidad
res.aov$`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 1 tiempo 0.551 0.092
get_anova_table(res.aov)
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 tiempo 2 18 55.469 2.01e-08 * 0.829
#ges: Tamaño de efecto
P-value es menor al 5% por lo tanto se rechaza la hipotesis H0, el redimiento de aceite no es igual en todos los TIEMPOS DE CORTE
PRUEBA DE COMPARACION
datos %>%
pairwise_t_test(rto~tiempo,
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 rto t1 t2 10 10 -4.97 9 0.000772 2e-3 **
## 2 rto t1 t3 10 10 -13.2 9 0.000000334 1e-6 ****
## 3 rto t2 t3 10 10 -4.87 9 0.000886 3e-3 **
Observamos p-Valores ajustados, observo que todos son menores al 5% Todos los tiempo son diferentes, ya que este observo la relacion entre cada tiempo * Concluimos que el redimiento mejorar entre mas se hagan cortes
2. Diseño de medidas repetidas de dos vias: * Una via es el “tiempo”, y la otra es el “fertilizantes”(Factor)
data("selfesteem2", package = "datarium")
datos2 = selfesteem2
print(datos2)
## # A tibble: 24 × 5
## id treatment t1 t2 t3
## <fct> <fct> <dbl> <dbl> <dbl>
## 1 1 ctr 83 77 69
## 2 2 ctr 97 95 88
## 3 3 ctr 93 92 89
## 4 4 ctr 92 92 89
## 5 5 ctr 77 73 68
## 6 6 ctr 72 65 63
## 7 7 ctr 92 89 79
## 8 8 ctr 92 87 81
## 9 9 ctr 95 91 84
## 10 10 ctr 92 84 81
## # ℹ 14 more rows
datos2 = selfesteem2
datos2$tratamiento = gl(2,12,24, c('con fert', 'sin fert'))
#Un control es sin fert y otro con fert
#Vamos a convertirlos de formato ancho a largo
datos2 = datos2 %>%
gather(key='tiempo', value = 'rto',
t1,t2,t3)
datos2 %>%
group_by(tratamiento, tiempo) %>%
summarise(media = mean(rto),
desv = sd(rto),
n = n(),
cv = 100*desv/media)
## `summarise()` has grouped output by 'tratamiento'. You can override using the
## `.groups` argument.
## # A tibble: 6 × 6
## # Groups: tratamiento [2]
## tratamiento tiempo media desv n cv
## <fct> <chr> <dbl> <dbl> <int> <dbl>
## 1 con fert t1 88 8.08 12 9.18
## 2 con fert t2 83.8 10.2 12 12.2
## 3 con fert t3 78.7 10.5 12 13.4
## 4 sin fert t1 87.6 7.62 12 8.70
## 5 sin fert t2 87.8 7.42 12 8.45
## 6 sin fert t3 87.7 8.14 12 9.28
*Fertilice y me da un buen valor en la media(88)
VISUALIZACION POR DIAGRAMA DE CAJA
library(ggplot2)
ggplot(datos2)+
aes(tiempo, rto, fill=tratamiento)+
geom_boxplot()
*Sin fertilizantes son mejores para t2 y t3, que con fertlizantes
DETECION DE DATOS ATIPICOS
library(rstatix)
datos2 %>%
group_by(tratamiento, tiempo) %>%
identify_outliers(rto)
## [1] tratamiento tiempo id treatment rto is.outlier
## [7] is.extreme
## <0 rows> (or 0-length row.names)
#No hay datos atipicos
SUPUESTO DE NORMALIDAD
datos2 %>%
group_by(tratamiento, tiempo) %>%
shapiro_test(rto)
## # A tibble: 6 × 5
## tratamiento tiempo variable statistic p
## <fct> <chr> <chr> <dbl> <dbl>
## 1 con fert t1 rto 0.828 0.0200
## 2 con fert t2 rto 0.868 0.0618
## 3 con fert t3 rto 0.887 0.107
## 4 sin fert t1 rto 0.919 0.279
## 5 sin fert t2 rto 0.923 0.316
## 6 sin fert t3 rto 0.886 0.104
ANALISIS DE VARIANZA
res.aov= anova_test(data=datos2,
dv=rto,
wid = id,
within =c( tratamiento, tiempo))
get_anova_table(res.aov)
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 tratamiento 1.00 11.00 15.541 2.00e-03 * 0.059
## 2 tiempo 1.31 14.37 27.369 5.03e-05 * 0.049
## 3 tratamiento:tiempo 2.00 22.00 30.424 4.63e-07 * 0.050
#ges: Tamaño de efecto
*Si hay interaccion porque el p-value (4.63e-07) es menor al 5%
PROCEDIMEINTO CON INTERACCION
datos2 %>%
group_by(tiempo, tratamiento) %>%
summarise(mean_rto = mean(rto)) %>%
ggplot()+
aes(tiempo, mean_rto,
color=tratamiento,
group=tratamiento)+
geom_point(size=5)+
geom_line(linewidth=3)
## `summarise()` has grouped output by 'tiempo'. You can override using the
## `.groups` argument.