Una vía: Solo el tiempo
Dos vías: El tiempo y un factor.
Tres vías: El tiempo, un factor y bloques o dos factores.
Factorial Simple Completamente al Azar.
Factorial Simple en Bloques al Azar.
Factorial Completa Completamente al Azar.
Factorial completa en Bloques al Azar.
\[\text{Tiempo}= \text{Factor - Intrasujeto} \\ \text{FSCA, FSBA, FCCA, FCBA}= \text{Factor - Entrasujeto}\]
\[H_0 = \mu_{t1} = \mu_{t2} = \mu_{t3}\]
# Solo hay tiempo y respuesta (Se desea saber qué es lo que sucede en ese cultivo a lo largo del tiempo).
# install.packages("datarium")
# id: Identificación de las parcelas.
library(datarium)
data("selfesteem", package = "datarium")
datos = selfesteem
head(datos, 3)
datos
boxplot(datos[,-1])
# Construcción de los datos en formato largo (gather), pocas columnas.
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)
#View(datos)
boxplot(datos)
# CV>20%: Los datos son normales, son buenos para analizar, homogeneidad.
# CV<20%: Heterogeneidad, causante d eproblemas para analizar, se pueden imputar.
datos %>%
group_by(tiempo) %>%
summarise(media = mean(rto),
desv = sd(rto),
n = n(),
cv = 100*desv/media)
boxplot(datos$rto ~ datos$tiempo)
library(rstatix)
##
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
##
## filter
datos %>%
group_by(tiempo) %>%
identify_outliers(rto)
status=boxplot(datos)
a = status$out
a
## numeric(0)
datos %>%
group_by(tiempo) %>%
shapiro_test(rto)
res.aov <- anova_test(data = datos,
dv = rto,
wid = id,
within = tiempo)
# Esfericidad: p-valor > 5%, no se rechaza la H_0, por lo tanto, hay esfericidad.
res.aov$`Mauchly's Test for Sphericity`
get_anova_table(res.aov)
Se compara los diferentes tiempos sucesivos entre si, para poder ver su variabilidad (t1 - t2, t1 - t3, t2 - t3).
Si es >5% se puede asumir que las varianzas son iguales, por lo que habria que probar otra metodología de análisis.
Se rechazó la H_0: el aceite producido en los 3 diferentews tiempos es diferentes, el tiempo de corte tiene efecto.
# Se usa el p-valor ajustado (p.adj)
datos %>%
pairwise_t_test(
rto ~ tiempo, paired = TRUE,
p.adjust.method = "bonferroni")
# P-valor ajustado
# P-valor < 5%: Se rechaza H_0, todos son diferentes.
Todos los tiempos son diferentes en rendimiento.
El mejor es el t3.
Los peores son el t1 y t2.
Medidas repetidas de dos vias: tiempo + otro factor.
f1: tiempo
f2: fertilidad
# Wide format
data("selfesteem2", package = "datarium")
datos2 = selfesteem2
#View(datos2)
datos2 = selfesteem2
datos2$treatment = gl(2,12,24, c('con fert', 'sin fert'))
datos2 = datos2 %>%
gather(key='tiempo', value = 'rto',
t1,t2,t3)
datos2
datos2 %>%
group_by(treatment, tiempo) %>%
summarise(media = mean(rto),
desv = sd(rto),
n = n(),
cv = 100*desv/media)
## `summarise()` has grouped output by 'treatment'. You can override using the
## `.groups` argument.
library(ggplot2)
ggplot(datos2)+
aes(tiempo, rto, fill=treatment)+
geom_boxplot()
datos2 %>%
group_by(treatment, tiempo) %>%
identify_outliers(rto)
datos2 %>%
group_by(treatment, tiempo) %>%
shapiro_test(rto)
res.aov <- anova_test(
data = datos2,
dv = rto,
wid = id,
within = c(treatment,
tiempo)
)
get_anova_table(res.aov)
datos2 %>%
group_by(treatment, tiempo) %>%
identify_outliers(rto)
datos2 %>%
group_by(treatment, tiempo) %>%
shapiro_test(rto)
interaction.plot(datos2$tiempo,
datos2$treatment,
datos2$rto)
datos2 %>%
group_by(tiempo, treatment) %>%
summarise(mean_rto = mean(rto)) %>%
ggplot()+
aes(tiempo, mean_rto,
color=treatment,
group=treatment)+
geom_point(size=5)+
geom_line(linewidth=3)
## `summarise()` has grouped output by 'tiempo'. You can override using the
## `.groups` argument.
set.seed(123)
data("weightloss", package = "datarium")
datos3 = weightloss %>%
rename(FQ = diet,
FO = exercises) %>%
pivot_longer(c(t1,t2,t3),
names_to = 'tiempo',
values_to = 'rto')
datos3
table(datos3$FQ, datos3$FO, datos3$tiempo)
## , , = t1
##
##
## no yes
## no 12 12
## yes 12 12
##
## , , = t2
##
##
## no yes
## no 12 12
## yes 12 12
##
## , , = t3
##
##
## no yes
## no 12 12
## yes 12 12
FQ: Fertilizante químico.
FO: Fertilizante orgánico.
pivot_longer: Para cambiar de formato ancho a formato largo.
datos3 %>%
group_by(FQ, FO, tiempo) %>%
get_summary_stats(rto, type = "mean_sd")
library(ggpubr)
ggboxplot(
datos3, x = "FQ", y = "rto",
color = "tiempo", palette = "jco",
facet.by = "FO", short.panel.labs = FALSE
)
datos3 %>%
group_by(FQ,FO, tiempo) %>%
identify_outliers(rto)
Dato extremo puede afectar el rendimiento del experimento, en este caso NO HAY.
En caso de hubiera extremos (columna “is.extreme” en “true”), solo hace falta una nota que mencione el dato con el extremo ya que ese dato puede afectar la estabilidad de todos los resultados.
datos3
datos3 %>%
group_by(FQ,FO,tiempo) %>%
shapiro_test(rto)
ggplot(datos3)+
aes(rto, fill=tiempo)+
geom_density(alpha=0.5)
# Global
ggplot(datos3)+
aes(rto)+
geom_density(alpha=0.5)
shapiro_test(datos3$rto)
library(nortest)
lillie.test(datos3$rto)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: datos3$rto
## D = 0.10013, p-value = 0.001229
cvm.test(datos3$rto)
##
## Cramer-von Mises normality test
##
## data: datos3$rto
## W = 0.23031, p-value = 0.002205
sf.test(datos3$rto)
##
## Shapiro-Francia normality test
##
## data: datos3$rto
## W = 0.96406, p-value = 0.001295
ad.test(datos3$rto)
##
## Anderson-Darling normality test
##
## data: datos3$rto
## A = 1.432, p-value = 0.001021
pearson.test((datos3$rto))
##
## Pearson chi-square normality test
##
## data: (datos3$rto)
## P = 28.5, p-value = 0.004672
library(lawstat)
symmetry.test(datos3$rto)
##
## m-out-of-n bootstrap symmetry test by Miao, Gel, and Gastwirth (2006)
##
## data: datos3$rto
## Test statistic = 2.2399, p-value = 0.032
## alternative hypothesis: the distribution is asymmetric.
## sample estimates:
## bootstrap optimal m
## 19
res.aov <- anova_test(
data = datos3, dv = rto, wid = id,
within = c(FQ, FO, tiempo)
)
get_anova_table(res.aov)
interaction.plot(datos3$tiempo,
datos3$FO,
datos3$rto)
interaction.plot(datos3$tiempo,
datos3$FQ,
datos3$rto)
tbl=tapply(datos3$rto, list(datos3$FQ,
datos3$FO,
datos3$tiempo),
mean)
addmargins(tbl, FUN=mean)
## Margins computed over dimensions
## in the following order:
## 1:
## 2:
## 3:
## , , t1
##
## no yes mean
## no 10.90917 10.79417 10.85167
## yes 11.74250 11.39333 11.56792
## mean 11.32583 11.09375 11.20979
##
## , , t2
##
## no yes mean
## no 11.56583 13.42083 12.49333
## yes 12.41583 13.22500 12.82042
## mean 11.99083 13.32292 12.65688
##
## , , t3
##
## no yes mean
## no 11.45000 16.81750 14.13375
## yes 13.78667 14.65500 14.22083
## mean 12.61833 15.73625 14.17729
##
## , , mean
##
## no yes mean
## no 11.30833 13.67750 12.49292
## yes 12.64833 13.09111 12.86972
## mean 11.97833 13.38431 12.68132