library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── 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)
library(reshape2)
##
## Attaching package: 'reshape2'
##
## The following object is masked from 'package:tidyr':
##
## smiths
library(afex)
## Loading required package: lme4
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
##
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
##
## ************
## Welcome to afex. For support visit: http://afex.singmann.science/
## - Functions for ANOVAs: aov_car(), aov_ez(), and aov_4()
## - Methods for calculating p-values with mixed(): 'S', 'KR', 'LRT', and 'PB'
## - 'afex_aov' and 'mixed' objects can be passed to emmeans() for follow-up tests
## - Get and set global package options with: afex_options()
## - Set sum-to-zero contrasts globally: set_sum_contrasts()
## - For example analyses see: browseVignettes("afex")
## ************
##
## Attaching package: 'afex'
##
## The following object is masked from 'package:lme4':
##
## lmer
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
excel_sheets("aceite.xlsx")
## [1] "una_via" "dos_vias" "tres_vias"
data_una_via=read_excel("aceite.xlsx", sheet = "una_via")
head(data_una_via, 3)
## # A tibble: 3 × 3
## aceite_I aceite_II aceite_III
## <dbl> <dbl> <dbl>
## 1 2.79 2.41 2.01
## 2 2.81 2.02 1.96
## 3 2.69 2.08 1.85
data_una_via$ID=1:nrow(data_una_via)
data_una_via= data_una_via %>%
gather(key = "tiempo", value = "score", aceite_I,aceite_II, aceite_III) %>%
convert_as_factor(ID, tiempo)
head(data_una_via, 3)
## # A tibble: 3 × 3
## ID tiempo score
## <fct> <fct> <dbl>
## 1 1 aceite_I 2.79
## 2 2 aceite_I 2.81
## 3 3 aceite_I 2.69
La creación del ID se usa para identificar cada planta de limonaria (Cymbopogon citratus), indicando que los valores de score en diferentes niveles de tiempo provienen de las mismas unidades experimentales
data_una_via %>%
group_by(tiempo) %>%
get_summary_stats(score, type = "mean_sd")
## # A tibble: 3 × 5
## tiempo variable n mean sd
## <fct> <fct> <dbl> <dbl> <dbl>
## 1 aceite_I score 120 2.80 0.095
## 2 aceite_II score 120 2.20 0.12
## 3 aceite_III score 120 2.00 0.095
#Visualización gráfica
bxp = ggboxplot(data_una_via, x = "tiempo", y = "score", add = "point")
bxp
En el gráfico se puede evidenciar una disminución progresiva respecto a los valores medios de aceite I a aceite III. Donde el aceite I presenta la menor dispersión y menos valores atípicos, por lo que hay mayor estabilidad en los datos; mientras que los aceites II y III presentan mayor variablidad y más valores atípicos. La tendencia descendente en los puntajes indica que el factor tiempo influye en la cantidad de aceite esencial.
data_una_via %>%
group_by(tiempo) %>%
identify_outliers(score)
## # A tibble: 5 × 5
## tiempo ID score is.outlier is.extreme
## <fct> <fct> <dbl> <lgl> <lgl>
## 1 aceite_II 56 1.90 TRUE FALSE
## 2 aceite_II 60 1.89 TRUE FALSE
## 3 aceite_II 61 2.54 TRUE FALSE
## 4 aceite_III 26 1.75 TRUE FALSE
## 5 aceite_III 29 2.28 TRUE FALSE
Según la tabla anterior se puede evidenciar que aunque hay datos atípicos estos no son extremos
data_una_via %>%
group_by(tiempo) %>%
shapiro_test(score)
## # A tibble: 3 × 4
## tiempo variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 aceite_I score 0.987 0.331
## 2 aceite_II score 0.996 0.976
## 3 aceite_III score 0.994 0.901
Según la evaluacion del test de shapiro-Wilk. Los valores p fueron > 0.05, por lo cual no se rechaza la hipotesis nula, lo que significa que los datos no presentan desviaciones significativas respecto a la normalidad.
Visualizaciòn Gráfica
ggqqplot(data_una_via, "score", facet.by = "tiempo")
Este gráfico de normalidad permite verificar visualmente que en los tres tiempos los puntos se alinean mayormente con la diagonal, lo que sugiere que la distribución de los datos no presenta fuertes desviaciones de la normalidad. Afirmando los resultados de la prueba Shapiro-Wilk.
res.aov= anova_test(data = data_una_via, dv = score, wid = ID, within = tiempo)
summary(res.aov)
## Length Class Mode
## ANOVA 7 data.frame list
## Mauchly's Test for Sphericity 4 data.frame list
## Sphericity Corrections 9 data.frame list
res.aov$`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 1 tiempo 0.794 1.25e-06 *
res.aov$`Sphericity Corrections`
## Effect GGe DF[GG] p[GG] p[GG]<.05 HFe DF[HF] p[HF]
## 1 tiempo 0.829 1.66, 197.38 8.55e-166 * 0.84 1.68, 199.83 8.25e-168
## p[HF]<.05
## 1 *
get_anova_table(res.aov, correction="GG")#Greenhouse-Geissser
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 tiempo 1.66 197.38 5429.055 8.55e-166 * 0.914
En este caso el valor p fue < 0.05, indicando que la esfericidad no se cumple. Por lo cual, se deben aplicar correciones (greenhouse-Geissser o Huynh-Feldt) para ajustar los grados de libertad y evitar errores en la inferencia estadística. Ádemas la estimación ges indica un efecto muy grande del factor tiempo sobre la variable respuesta.
pwc= data_una_via %>%
pairwise_t_test(
score ~ tiempo, paired = TRUE,
p.adjust.method = "bonferroni"
)
pwc
## # A tibble: 3 × 10
## .y. group1 group2 n1 n2 statistic df p p.adj
## * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl>
## 1 score aceite_I aceite_II 120 120 71.6 119 1.11e- 99 3.33e- 99
## 2 score aceite_I aceite_III 120 120 133. 119 2.95e-131 8.85e-131
## 3 score aceite_II aceite_III 120 120 21.8 119 2.72e- 43 8.16e- 43
## # ℹ 1 more variable: p.adj.signif <chr>
Basandonos en la tabla anterior se rechaza la hipótesis nula, ya que todos los p- value = < 0.05. Por ende hay diferencias significativas por pares, lo que confirma que almenos un aceite tiene un efecto diferente en el score.
pwc= pwc %>% add_xy_position(x = "tiempo")
bxp + stat_pvalue_manual(pwc) +labs(subtitle = get_test_label(res.aov, detailed = TRUE),
caption = get_pwc_label(pwc)
)
Esta gráfica final representa los resultados del ANOVA de medidas repetidas para el factor tiempo, comparando el efecto de los diferentes aceites en el score, con resultados altamente significativos (p < 0.0001) entre los diferentes niveles de tiempo. El valor de n²g indica una variabilidad total de 91%, adicionalmente el valor F indica una alta variabilidad explicada por el factor tiempo.
En este diseño se quiere saber si existe una interacción significativa entre la extracción y el tiempo en la cantidad de aceite esencial recolectado.
set.seed(123)
data_dos_vias=read_excel("aceite.xlsx", sheet = "dos_vias")
data_dos_vias$ID=1:nrow(data_dos_vias)
data_dos_vias %>% sample_n_by(Extracción, size = 1)
## # A tibble: 2 × 5
## aceite_I aceite_II aceite_III Extracción ID
## <dbl> <dbl> <dbl> <chr> <int>
## 1 2.87 2.35 1.88 CO2 91
## 2 2.77 2.09 2.03 vapor 15
data_dos_vias = data_dos_vias %>%
gather(key = "tiempo", value = "score", aceite_I, aceite_II, aceite_III) %>%
convert_as_factor(ID, tiempo)
set.seed(123)
data_dos_vias %>% sample_n_by(Extracción, tiempo, size = 1)
## # A tibble: 6 × 4
## Extracción ID tiempo score
## <chr> <fct> <fct> <dbl>
## 1 CO2 91 aceite_I 2.87
## 2 CO2 75 aceite_II 2.35
## 3 CO2 111 aceite_III 1.97
## 4 vapor 14 aceite_I 2.86
## 5 vapor 3 aceite_II 2.08
## 6 vapor 42 aceite_III 2.09
En este ejemplo, el efecto del “tiempo” es la variable focal, ya que se cree que el efecto sera diferente si se realiza la extracción en CO2 o en Vapor
data_dos_vias %>%
group_by(Extracción, tiempo) %>%
get_summary_stats(score, type = "mean_sd")
## # A tibble: 6 × 6
## Extracción tiempo variable n mean sd
## <chr> <fct> <fct> <dbl> <dbl> <dbl>
## 1 CO2 aceite_I score 60 2.77 0.103
## 2 CO2 aceite_II score 60 2.19 0.13
## 3 CO2 aceite_III score 60 1.94 0.068
## 4 vapor aceite_I score 60 2.83 0.077
## 5 vapor aceite_II score 60 2.21 0.11
## 6 vapor aceite_III score 60 2.06 0.074
#Visualización gráfica
bxp=ggboxplot(data_dos_vias, x = "tiempo", y = "score",
color = "Extracción", palette = "jco")
bxp
El analisis presentado comprara los valores de s de dos metodos de extraccion “CO2” y “Vapor” aplicados a tres tipos de aceites, la tabla de medias y desviaciones estandar indica que en general el aceite I tiene los valores de score mas altos en ambos metodos de extraccion, mientras que el aceite III presenta los valores mas bajos, ademas se observa que la extracción de Vapor tiende a generar mas valores ligeramente superiores, en comparacion por la extraccion CO2 para todos los aceites. Confirmando estos resultados con la gráfica anterior
data_dos_vias %>%
group_by(Extracción, tiempo) %>%
identify_outliers(score)
## # A tibble: 9 × 6
## Extracción tiempo ID score is.outlier is.extreme
## <chr> <fct> <fct> <dbl> <lgl> <lgl>
## 1 CO2 aceite_II 61 1.90 TRUE FALSE
## 2 CO2 aceite_II 63 1.89 TRUE FALSE
## 3 CO2 aceite_III 68 1.75 TRUE FALSE
## 4 CO2 aceite_III 114 2.12 TRUE FALSE
## 5 vapor aceite_I 22 3.05 TRUE FALSE
## 6 vapor aceite_II 54 2.54 TRUE FALSE
## 7 vapor aceite_III 9 1.88 TRUE FALSE
## 8 vapor aceite_III 11 1.82 TRUE FALSE
## 9 vapor aceite_III 16 2.28 TRUE FALSE
Según la tabla anterior se puede evidenciar que aunque hay datos atípicos estos no son extremos
data_dos_vias %>%
group_by(Extracción, tiempo) %>%
shapiro_test(score)
## # A tibble: 6 × 5
## Extracción tiempo variable statistic p
## <chr> <fct> <chr> <dbl> <dbl>
## 1 CO2 aceite_I score 0.966 0.0930
## 2 CO2 aceite_II score 0.979 0.383
## 3 CO2 aceite_III score 0.957 0.0330
## 4 vapor aceite_I score 0.976 0.284
## 5 vapor aceite_II score 0.977 0.324
## 6 vapor aceite_III score 0.945 0.00887
Este análisis se evaluo mediante la prueba de Shapiro- Wilk y se visualizo con gráficos para tener una mejor claridad al respecto. Los valores de p indican que en la mayoria de los casos, se acepta la hipotesis nula de normalidad (p > 0,05), excepto en el caso del aceite III extraido tanto por CO2 como por Vapor, lo que sugiere que la distribución de los datos en estos casos podria no ajustarse completamente a una distribución normal.
Visualización gráfica
ggqqplot(data_dos_vias, "score", ggtheme = theme_bw()) +
facet_grid(tiempo ~ Extracción, labeller = "label_both")
A partir del gráfico anterior, como todos los puntos caen aproximadamente a lo largo de la línea de referencia, podemos suponer normalidad incluso en los casos que se afirmaban que no podian ajustarse a una distribución normal.
res.aov2= anova_test(data = data_dos_vias, dv = score, wid = ID, within = tiempo)
summary(res.aov2)
## Length Class Mode
## ANOVA 7 data.frame list
## Mauchly's Test for Sphericity 4 data.frame list
## Sphericity Corrections 9 data.frame list
res.aov2$`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 1 tiempo 0.916 0.006 *
res.aov2$`Sphericity Corrections`
## Effect GGe DF[GG] p[GG] p[GG]<.05 HFe DF[HF] p[HF]
## 1 tiempo 0.922 1.84, 219.53 1.47e-146 * 0.936 1.87, 222.83 1.03e-148
## p[HF]<.05
## 1 *
get_anova_table(res.aov2, correction="GG")#Greenhouse-Geissser
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 tiempo 1.84 219.53 2407.499 1.47e-146 * 0.914
En este caso el valor p fue < 0.05, indicando que la esfericidad no se cumple. Por lo cual, se deben aplicar correciones (greenhouse-Geissser o Huynh-Feldt) para ajustar los grados de libertad y evitar errores en la inferencia estadística. Ádemas la estimación ges indica un efecto muy grande del factor tiempo sobre la variable respuesta.
Efectos
res.aov2= anova_test(data = data_dos_vias, dv = score, wid = ID,
within = "tiempo", between = "Extracción")
get_anova_table(res.aov2)
## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 Extracción 1.00 118.00 37.932 1.05e-08 * 0.120
## 2 tiempo 1.85 218.64 2582.532 1.60e-149 * 0.926
## 3 Extracción:tiempo 1.85 218.64 9.652 1.50e-04 * 0.045
# Visualización gráfica
ggplot(data_dos_vias, aes(x = tiempo, y = score, color = Extracción, group = Extracción)) +
stat_summary(fun = mean, geom = "line") +
stat_summary(fun = mean, geom = "point") +
labs(title = "Interacción entre Tiempo y Método de Extracción")
Se observa que tanto el factor extracción como el factor tiempo tienen efectos significativos en la variable respuesta. Además la interacción entre extracción y tiempo también es significativa lo que indica que la relación entre el tiempo y el score depende del método de extracción utilizado. Apreciando estos resultados mediante la gráfica de interacción donde el score disminuye con el tiempo en ambos métodos de extracción.
one.way = data_dos_vias %>%
group_by(tiempo) %>%
anova_test(dv = score, wid = ID, between = "Extracción") %>%
get_anova_table() %>%
adjust_pvalue(method = "bonferroni")
one.way
## # A tibble: 3 × 9
## tiempo Effect DFn DFd F p `p<.05` ges p.adj
## <fct> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
## 1 aceite_I Extracción 1 118 12.6 5.52e- 4 "*" 0.097 1.66e- 3
## 2 aceite_II Extracción 1 118 1.46 2.29e- 1 "" 0.012 6.87e- 1
## 3 aceite_III Extracción 1 118 93.9 1.08e-16 "*" 0.443 3.24e-16
pwc <- data_dos_vias %>%
group_by(tiempo) %>%
pairwise_t_test(
score ~ Extracción, paired = TRUE,
p.adjust.method = "bonferroni")
pwc
## # A tibble: 3 × 11
## tiempo .y. group1 group2 n1 n2 statistic df p p.adj
## * <fct> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl>
## 1 aceite_I score CO2 vapor 60 60 -3.57 59 7.13e- 4 7.13e- 4
## 2 aceite_II score CO2 vapor 60 60 -1.24 59 2.22e- 1 2.22e- 1
## 3 aceite_III score CO2 vapor 60 60 -10.7 59 1.76e-15 1.76e-15
## # ℹ 1 more variable: p.adj.signif <chr>
Considerando el valor p ajustado de Bonferroni (p.adj), se puede observar que el efecto principal simple de la extracción no fue significativo en el caso del tiempo aceite II (p = 0,687 ) débido a que no hay suficiente evidencia estadistíca para rechazar la hipotesis nula. Se vuelve significativo en el aceite I (p = 0,00166) y aceite III (p = 0,000000000000000324), por lo que se puede concluir que la extracción tiene un impacto real sobre la variable score en ese tiempo.
pwc = pwc %>% add_xy_position(x = "tiempo")
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))
El análisis de ANOVA revela que la extracción tiene un efecto altamente significativo (p < 0.0001) sobre el score, ádemas cuenta con una variabilidad de n²g = 91 %. Los resultados muestran que el método de extracción con vapor genera valores de score mayores en comparación con CO2 en los tiempos aceite I y aceite III.
En este diseño se quiere saber si existe una interacción significativa entre la extracción, la variedad y el tiempo en la cantidad de aceite esencial recolectado.
set.seed(123)
data_tres_vias=read_excel("aceite.xlsx",
sheet = "tres_vias")
data_tres_vias$ID=1:nrow(data_tres_vias)
head(data_tres_vias)
## # A tibble: 6 × 6
## aceite_I aceite_II aceite_III Extracción Variedad ID
## <dbl> <dbl> <dbl> <chr> <chr> <int>
## 1 3.05 2.41 2.01 vapor Cundinamarca 1
## 2 2.97 2.02 2.03 vapor Cundinamarca 2
## 3 2.96 2.08 2.11 vapor Cundinamarca 3
## 4 2.96 2.01 2.08 vapor Cundinamarca 4
## 5 2.95 2.24 2.11 vapor Cundinamarca 5
## 6 2.95 2.22 1.92 vapor Cundinamarca 6
data_tres_vias = data_tres_vias %>%
gather(key = "tiempo", value = "score", aceite_I, aceite_II, aceite_III) %>%
convert_as_factor(ID, tiempo)
set.seed(123)
data_tres_vias %>% sample_n_by(Extracción, Variedad, tiempo, size = 1)
## # A tibble: 12 × 5
## Extracción Variedad ID tiempo score
## <chr> <chr> <fct> <fct> <dbl>
## 1 CO2 Antioquia 105 aceite_I 2.67
## 2 CO2 Antioquia 109 aceite_II 2.15
## 3 CO2 Antioquia 104 aceite_III 1.96
## 4 CO2 Cundinamarca 33 aceite_I 2.82
## 5 CO2 Cundinamarca 40 aceite_II 2.09
## 6 CO2 Cundinamarca 48 aceite_III 1.86
## 7 vapor Antioquia 82 aceite_I 2.81
## 8 vapor Antioquia 71 aceite_II 2.46
## 9 vapor Antioquia 65 aceite_III 2.02
## 10 vapor Cundinamarca 20 aceite_I 2.86
## 11 vapor Cundinamarca 14 aceite_II 2.23
## 12 vapor Cundinamarca 22 aceite_III 2.12
data_tres_vias %>%
group_by(Extracción, Variedad, tiempo) %>%
get_summary_stats(score, type = "mean_sd")
## # A tibble: 12 × 7
## Extracción Variedad tiempo variable n mean sd
## <chr> <chr> <fct> <fct> <dbl> <dbl> <dbl>
## 1 CO2 Antioquia aceite_I score 30 2.69 0.053
## 2 CO2 Antioquia aceite_II score 30 2.19 0.1
## 3 CO2 Antioquia aceite_III score 30 1.96 0.063
## 4 CO2 Cundinamarca aceite_I score 30 2.77 0.041
## 5 CO2 Cundinamarca aceite_II score 30 2.07 0.139
## 6 CO2 Cundinamarca aceite_III score 30 1.91 0.064
## 7 vapor Antioquia aceite_I score 30 2.85 0.068
## 8 vapor Antioquia aceite_II score 30 2.50 0.127
## 9 vapor Antioquia aceite_III score 30 2.09 0.058
## 10 vapor Cundinamarca aceite_I score 30 2.89 0.054
## 11 vapor Cundinamarca aceite_II score 30 2.22 0.116
## 12 vapor Cundinamarca aceite_III score 30 2.04 0.082
# Visualización gráfica
bxp = ggboxplot(
data_tres_vias, x = "tiempo", y = "score",
color = "Extracción", palette = "jco",
facet.by = "Variedad", short.panel.labs = FALSE)
bxp
En ambas variedades, se observa que la extracción con vapor tiende a generar valores de score mayores en comparación con CO2 en todos los tiempos. Sin embargo, el score disminuye progresivamente a lo largo del tiempo para ambos métodos. Además, los valores de score iniciales en Cundinamarca son ligeramente mayores que en Antioquia, lo que podría indicar una diferencia de calidad entre variedades desde el inicio del proceso.
data_tres_vias %>%
group_by(Variedad,Extracción, tiempo) %>%
identify_outliers(score)
## # A tibble: 18 × 7
## Extracción Variedad tiempo ID score is.outlier is.extreme
## <chr> <chr> <fct> <fct> <dbl> <lgl> <lgl>
## 1 CO2 Antioquia aceite_II 91 2.35 TRUE FALSE
## 2 CO2 Antioquia aceite_II 103 2.37 TRUE FALSE
## 3 CO2 Antioquia aceite_II 114 2.40 TRUE FALSE
## 4 CO2 Antioquia aceite_II 117 2.44 TRUE FALSE
## 5 CO2 Antioquia aceite_III 91 1.88 TRUE FALSE
## 6 CO2 Antioquia aceite_III 107 1.85 TRUE FALSE
## 7 CO2 Antioquia aceite_III 108 1.82 TRUE TRUE
## 8 CO2 Antioquia aceite_III 114 2.12 TRUE TRUE
## 9 CO2 Antioquia aceite_III 116 2.07 TRUE FALSE
## 10 CO2 Antioquia aceite_III 117 2.09 TRUE FALSE
## 11 vapor Antioquia aceite_I 61 2.64 TRUE FALSE
## 12 vapor Antioquia aceite_II 83 2.84 TRUE FALSE
## 13 CO2 Cundinamarca aceite_II 58 2.44 TRUE FALSE
## 14 vapor Cundinamarca aceite_I 1 3.05 TRUE FALSE
## 15 vapor Cundinamarca aceite_III 6 1.92 TRUE FALSE
## 16 vapor Cundinamarca aceite_III 9 1.88 TRUE FALSE
## 17 vapor Cundinamarca aceite_III 11 1.82 TRUE FALSE
## 18 vapor Cundinamarca aceite_III 16 2.28 TRUE TRUE
Como se puede apreciar en la tabla, en el aceite III de la variedad Antioquia existen valores atípicos extremos, indicando que se encuentran muy alejados del resto de las observaciones y podrian representar mediciones inusuales.
data_tres_vias%>%
group_by(Variedad, Extracción, tiempo) %>%
shapiro_test(score)
## # A tibble: 12 × 6
## Extracción Variedad tiempo variable statistic p
## <chr> <chr> <fct> <chr> <dbl> <dbl>
## 1 CO2 Antioquia aceite_I score 0.938 0.0827
## 2 CO2 Antioquia aceite_II score 0.921 0.0292
## 3 CO2 Antioquia aceite_III score 0.943 0.108
## 4 vapor Antioquia aceite_I score 0.943 0.110
## 5 vapor Antioquia aceite_II score 0.957 0.266
## 6 vapor Antioquia aceite_III score 0.936 0.0719
## 7 CO2 Cundinamarca aceite_I score 0.936 0.0707
## 8 CO2 Cundinamarca aceite_II score 0.956 0.250
## 9 CO2 Cundinamarca aceite_III score 0.930 0.0500
## 10 vapor Cundinamarca aceite_I score 0.864 0.00126
## 11 vapor Cundinamarca aceite_II score 0.972 0.605
## 12 vapor Cundinamarca aceite_III score 0.916 0.0207
Este análisis se evalúo mediante la prueba de Shapiro- Wilk y se visualizó con gráficos para tener una mejor claridad al respecto. Los valores de p indican que en la mayoria de los casos, se acepta la hipotesis nula de normalidad (p > 0,05), excepto en algunos casos que sugiere que la distribución de los datos en estos podria no ajustarse completamente a una distribución normal.
ggqqplot(data_tres_vias, "score", ggtheme = theme_bw()) + facet_grid(Extracción + Variedad ~ tiempo, labeller = "label_both")
A partir del gráfico anterior, como todos los puntos caen aproximadamente a lo largo de la línea de referencia, podemos suponer normalidad incluso en los casos que se afirmaban que no podian ajustarse a una distribución normal.
res.aov2= anova_test(data = data_tres_vias, dv = score, wid = ID, within = tiempo)
summary(res.aov2)
## Length Class Mode
## ANOVA 7 data.frame list
## Mauchly's Test for Sphericity 4 data.frame list
## Sphericity Corrections 9 data.frame list
res.aov2$`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 1 tiempo 0.589 2.73e-14 *
res.aov2$`Sphericity Corrections`
## Effect GGe DF[GG] p[GG] p[GG]<.05 HFe DF[HF] p[HF]
## 1 tiempo 0.709 1.42, 168.67 1.53e-97 * 0.715 1.43, 170.12 2.37e-98
## p[HF]<.05
## 1 *
get_anova_table(res.aov2, correction="GG")#Greenhouse-Geissser
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 tiempo 1.42 168.67 1524.149 1.53e-97 * 0.852
En este caso el valor p fue < 0.05, indicando que la esfericidad no se cumple. Por lo cual, se deben aplicar correciones (greenhouse-Geissser o Huynh-Feldt) para ajustar los grados de libertad y evitar errores en la inferencia estadística. Ádemas la estimación ges indica un efecto muy grande del factor tiempo sobre la variable respuesta.
res.aov3 = anova_test(data = data_tres_vias, dv = score, wid = ID,
within =tiempo, between=c(Extracción, Variedad))
get_anova_table(res.aov3)
## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 Extracción 1.00 116.00 341.263 2.40e-36 * 0.490
## 2 Variedad 1.00 116.00 53.704 3.37e-11 * 0.131
## 3 tiempo 1.63 189.18 2661.265 1.34e-131 * 0.939
## 4 Extracción:Variedad 1.00 116.00 13.958 2.92e-04 * 0.038
## 5 Extracción:tiempo 1.63 189.18 12.746 2.96e-05 * 0.069
## 6 Variedad:tiempo 1.63 189.18 71.232 9.64e-21 * 0.293
## 7 Extracción:Variedad:tiempo 1.63 189.18 7.804 1.00e-03 * 0.043
# Gráfico combinado: Tiempo y Variedad
ggplot(data_tres_vias, aes(x = tiempo, y = score,
color = Variedad, group = Variedad)) +
stat_summary(fun = mean, geom = "line") +
stat_summary(fun = mean, geom = "point") +
labs(title = "Interacción entre Tiempo y Variedad") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
strip.text = element_text(size = 12, face = "bold") )
# Gráfico combinado: Tiempo y Extracción
ggplot(data_tres_vias, aes(x = tiempo, y = score,
color = Extracción, group = Extracción)) +
stat_summary(fun = mean, geom = "line") +
stat_summary(fun = mean, geom = "point") +
labs(title = "Interacción entre Tiempo y Método de Extracción") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
strip.text = element_text(size = 12, face = "bold") )
# Gráfico combinado: Extracción y Variedad
ggplot(data_tres_vias, aes(x = Extracción, y = score,
color = Variedad, group = Variedad)) +
stat_summary(fun = mean, geom = "line") +
stat_summary(fun = mean, geom = "point") +
labs(title = "Interacción entre Variedad y Método de Extracción") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
strip.text = element_text(size = 12, face = "bold") )
# Gráfico combinado: Tiempo, Extracción y Variedad
ggplot(data_tres_vias, aes(x = tiempo, y = score,
color = Extracción, group = Extracción)) +
stat_summary(fun = mean, geom = "line", size = 1) +
stat_summary(fun = mean, geom = "point", size = 3) +
facet_wrap(~ Variedad) +
labs(
title = "Interacción entre Tiempo, Extracción y Variedad",
x = "Tiempo",
y = "Score",
color = "Extracción"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
strip.text = element_text(size = 12, face = "bold") )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
A partir de los resultados anteriores, se puede ver que hay una interacción tridireccional estadísticamente significativa entre la dieta, los ejercicios y el tiempo, p = 0,001, indicando que estas variables influyen de manera notoria en la variable respuesta; no obstante los demás efectos tambien son significativos pues tienen un valor de (p < 0.05).
two.way = data_tres_vias %>%
group_by(Extracción) %>%
anova_test(dv = score, wid = ID, within = tiempo, between= Variedad)
two.way
## # A tibble: 2 × 2
## Extracción anova
## * <chr> <list>
## 1 CO2 <anov_tst [3]>
## 2 vapor <anov_tst [3]>
get_anova_table(two.way)
## # A tibble: 6 × 8
## Extracción Effect DFn DFd F p `p<.05` ges
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 CO2 Variedad 1 58 7.02 1 e- 2 * 0.037
## 2 CO2 tiempo 1.52 88.3 1420. 2.67e-63 * 0.943
## 3 CO2 Variedad:tiempo 1.52 88.3 22.8 1.99e- 7 * 0.211
## 4 vapor Variedad 1 58 56.6 3.83e-10 * 0.245
## 5 vapor tiempo 1.72 99.7 1262. 1.15e-68 * 0.936
## 6 vapor Variedad:tiempo 1.72 99.7 54.7 2.35e-15 * 0.386
El análisis de varianza (ANOVA) de dos vías para cada método de extracción mostró efectos significativos tanto del tiempo como de la variedad en el score del aceite. En el método de extracción con CO₂, la variedad presentó un efecto significativo (p = 0.01), mientras que en el método de extracción con vapor, este efecto fue aún más pronunciado (p = 3.83e-10). Asimismo, el tiempo de extracción influyó de manera contundente en ambos métodos, con valores de p extremadamente bajos (p < 0.0001), indicando que la duración de la extracción impacta significativamente en la calidad del aceite. La interacción entre la variedad y el tiempo también resultó significativa en ambos métodos, lo que sugiere que el efecto del tiempo varía dependiendo de la variedad utilizada.
tiempo.efecto =data_tres_vias %>%
group_by(Extracción, Variedad) %>%
anova_test(dv = score, wid = ID, within = tiempo)
tiempo.efecto
## # A tibble: 4 × 3
## Extracción Variedad anova
## * <chr> <chr> <list>
## 1 CO2 Antioquia <anov_tst [3]>
## 2 CO2 Cundinamarca <anov_tst [3]>
## 3 vapor Antioquia <anov_tst [3]>
## 4 vapor Cundinamarca <anov_tst [3]>
#Tabla ANOVA
get_anova_table(tiempo.efecto) %>%
filter(Extracción == c("vapor","CO2"))
## # A tibble: 2 × 9
## Extracción Variedad Effect DFn DFd F p `p<.05` ges
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 CO2 Cundinamarca tiempo 1.26 36.6 691. 6.64e-27 * 0.945
## 2 vapor Antioquia tiempo 1.57 45.4 580. 4.24e-31 * 0.927
Al analizar el efecto del tiempo dentro de cada combinación de extracción y variedad, se observó que en la variedad Cundinamarca con extracción por CO₂, el tiempo tuvo un impacto altamente significativo (p = 6.64e-27). De manera similar, en la variedad Antioquia con extracción por vapor, el tiempo también tuvo un efecto estadísticamente relevante (p = 4.24e-31). Estos resultados confirman que la duración del proceso de extracción es un factor clave en la determinación del score del aceite, independientemente de la variedad y el método de extracción utilizado
Comparaciones Simples y Sencillas
pwc = data_tres_vias%>%
group_by(Extracción, Variedad) %>%
pairwise_t_test(score ~ tiempo, paired = TRUE, p.adjust.method = "bonferroni") %>%
select(-df, -statistic) # Remove details
pwc %>% filter(Extracción == c("vapor","CO2"),
Variedad == c("Antioquia","Cundinamarca")) %>%
select(-p) # remove p columns
## # A tibble: 4 × 9
## Extracción Variedad .y. group1 group2 n1 n2 p.adj p.adj.signif
## <chr> <chr> <chr> <chr> <chr> <int> <int> <dbl> <chr>
## 1 CO2 Cundinamarca score aceite… aceit… 30 30 1.04e-19 ****
## 2 CO2 Cundinamarca score aceite… aceit… 30 30 8.16e- 6 ****
## 3 vapor Antioquia score aceite… aceit… 30 30 3.36e-13 ****
## 4 vapor Antioquia score aceite… aceit… 30 30 1.56e-16 ****
Las pruebas de comparaciones en pares con ajuste de Bonferroni evidenciaron diferencias significativas entre los distintos niveles de tiempo dentro de cada combinación de extracción y variedad. En la extracción con CO₂ para la variedad Cundinamarca, se encontraron diferencias significativas entre el score del aceite en diferentes tiempos de extracción. De manera similar, en la extracción con vapor para la variedad Antioquia, las comparaciones en pares también mostraron diferencias altamente significativas . Estos resultados sugieren que el rendimiento del aceite varía significativamente en función del tiempo de extracción y que estos cambios son distintos en cada combinación de variedad y método de extracción.
pwc = pwc %>% add_xy_position(x = "Variedad")
pwc.filtered =pwc %>%
filter(Extracción == "no", Variedad == "yes")
bxp +
stat_pvalue_manual(pwc.filtered, tip.length = 0, hide.ns = TRUE) +
labs(
subtitle = get_test_label(res.aov, detailed = TRUE),
caption = get_pwc_label(pwc))
Este análisis final muestra diferencias significativas en el score del aceite según el método de extracción, la variedad y el tiempo. La extracción con vapor genera un score mayor que CO₂, especialmente en la variedad Antioquia. En CO₂, el score disminuye con el tiempo, mientras que en vapor se mantiene o aumenta. Las pruebas post-hoc confirman que estas diferencias son estadísticamente significativas, indicando que la variedad influye en la eficiencia del método de extracción.