Cargando paquete requerido: gridExtra
Adjuntando el paquete: 'gridExtra'
The following object is masked from 'package:dplyr':
combine
Adjuntando el paquete: 'egg'
The following object is masked from 'package:ggpubr':
ggarrange
Cargando paquete requerido: ggpp
Registered S3 methods overwritten by 'ggpp':
method from
heightDetails.titleGrob ggplot2
widthDetails.titleGrob ggplot2
Adjuntando el paquete: 'ggpp'
The following objects are masked from 'package:ggpubr':
as_npc, as_npcx, as_npcy
The following object is masked from 'package:ggplot2':
annotate
library(dplyr)# Especifica el tamaño del subconjunto balanceadotamaño_subconjunto <-10000# Realiza el muestreo aleatorio y balanceadosubset_balanceado <- anxiety %>%group_by(Class) %>%sample_n(tamaño_subconjunto, replace = T) %>%ungroup()# Verifica el tamaño del subconjunto balanceadonrow(subset_balanceado)
[1] 90000
anxiety=subset_balanceado# Ahora `subset_balanceado` contiene un subconjunto aleatorio y balanceado de tus datos.
Comprobar supuestos Supuesto de linealidad
Comprobar supuestos
Supuesto de linealidad
Cree un diagrama de dispersión entre la covariable (es decir, ) y la variable de resultado (es decir, frecuencia). Agregue líneas de regresión, muestre las ecuaciones correspondientes y el R2 por grupos.
ggscatter( anxiety, x ="Frecuencia", y ="Sv",color ="Class", add ="reg.line",size =0.5, alpha=0.5 )+stat_regline_equation(aes(label =paste(..eq.label.., ..rr.label.., sep ="~~~~"), color = Class) )+theme_bw()
Warning: The dot-dot notation (`..eq.label..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(eq.label)` instead.
ℹ The deprecated feature was likely used in the ggpubr package.
Please report the issue at <https://github.com/kassambara/ggpubr/issues>.
library(ggpubr) # Para ggscatter y stat_regline_equationlibrary(dplyr) # Para manipulación de datos# Suponiendo que 'anxiety' es tu data frame y ya contiene las variables 'Frecuencia', 'Sv' y 'Class'# Aplicar la transformación logarítmica al eje Yanxiety <- anxiety %>%mutate(Log_Sv =10*log10(Sv))# Crear el gráfico ggscatter con la transformación en el eje Yggscatter( anxiety, x ="Frecuencia", y ="Log_Sv", # Utilizamos Log_Sv en lugar de Svcolor ="Class", add ="reg.line", size =0.5, alpha =0.5) +stat_regline_equation(aes(label =paste(..eq.label.., ..rr.label.., sep ="~~~~"), color = Class) ) +theme_bw()
Hubo una relación lineal entre la puntuación de ansiedad antes y después de la prueba para cada grupo de entrenamiento, según se evaluó mediante la inspección visual de un diagrama de dispersión.
Homogeneidad de las pendientes de regresión
Esta suposición verifica que no haya interacción significativa entre la covariable y la variable de agrupación. Esto se puede evaluar de la siguiente manera:
anxiety %>%anova_test(Sv ~ Class*Frecuencia)
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Class 8 89982 2283.109 0.0e+00 * 0.169
2 Frecuencia 1 89982 1228.202 2.9e-267 * 0.013
3 Class:Frecuencia 8 89982 478.533 0.0e+00 * 0.041
Hubo homogeneidad de pendientes de regresión ya que el término de interacción no fue estadísticamente significativo, F(4, 4990) = 76.544, p = *…..en realidad fue significativa
Normalidad de los residuos
En primer lugar, debe calcular el modelo mediante . En R, puede aumentar fácilmente sus datos para agregar valores ajustados y residuales mediante la función [paquete de escobas]. Llamemos a la salida porque contiene varias métricas útiles para el diagnóstico de regresión.lm()augment(model)model.metrics
Normality of residuals You first need to compute the model using lm(). In R, you can easily augment your data to add fitted values and residuals by using the function augment(model) [broom package]. Let’s call the output model.metrics because it contains several metrics useful for regression diagnostics.
# Fit the model, the covariate goes firstmodel <-lm(Sv ~ Frecuencia + Class, data = anxiety)model
#Assess normality of residuals using shapiro wilk test#shapiro_test(model.metrics$.resid)
La prueba de Shapiro Wilk no fue significativa (p > 0,05), por lo que podemos suponer normalidad de los residuos
Homogeneidad de las varianzas
Homogeneidad de las varianzas ANCOVA asume que la varianza de los residuos es igual para todos los grupos. Esto se puede comprobar mediante el test de Levene:
Homogeneity of variances ANCOVA assumes that the variance of the residuals is equal for all groups. This can be checked using the Levene’s test:
model.metrics %>%levene_test(.resid ~ Class)
# A tibble: 1 × 4
df1 df2 statistic p
<int> <int> <dbl> <dbl>
1 8 89991 1219. 0
La prueba de Levene no fue significativa (p > 0,05), por lo que podemos suponer homogeneidad de las varianzas residuales para todos los grupos.
The Levene’s test was not significant (p > 0.05), so we can assume homogeneity of the residual variances for all groups.
Outliers
An outlier is a point that has an extreme outcome variable value. The presence of outliers may affect the interpretation of the model.
Outliers can be identified by examining the standardized residual (or studentized residual), which is the residual divided by its estimated standard error. Standardized residuals can be interpreted as the number of standard errors away from the regression line.
Las observaciones cuyos residuos estandarizados son mayores que 3 en valor absoluto son posibles valores atípicos
El orden de las variables es importante a la hora de calcular ANCOVA. Primero desea eliminar el efecto de la covariable, es decir, desea controlarla, antes de ingresar su variable o interés principal.
¡La covariable va primero (y no hay interacción)! Si no lo haces en orden, obtendrás resultados diferentes.
ANOVA Table (type II tests)
Effect DFn DFd F p p<.05 ges
1 Frecuencia 1 89990 1178.185 1.55e-256 * 0.013
2 Class 8 89990 2190.134 0.00e+00 * 0.163
Después del ajuste por la puntuación de ansiedad previa a la prueba, hubo una diferencia estadísticamente significativa en la puntuación de ansiedad posterior a la prueba entre los grupos, F(4, 4994) = 580.579, p < 0,0001 *.
POST HOC TEST
Se pueden realizar comparaciones por pares para identificar qué grupos son diferentes. Se aplica la corrección de pruebas múltiples de Bonferroni. Esto se puede hacer fácilmente usando la función [paquete rstatix], un envoltorio alrededor del paquete, que debe instalarse. Emmeans significa medias marginales estimadas (también conocidas como medias mínimas cuadráticas o medias ajustadas).emmeans_test()emmeans
#POST HOC TEST# Pairwise comparisons# Pairwise comparisonslibrary(emmeans)
Welcome to emmeans.
Caution: You lose important information if you filter this package's results.
See '? untidy'
Los datos se ajustan a la media +/- error estándar. La puntuación media de ansiedad fue estadísticamente significativa mayor en el grp1 (16,4 +/- 0,15) en comparación con el grp2 (15,8 +/- 0,12) y el grp3 (13,5 +/_ 0,11), p < 0,001.
Informe
Se realizó un ANCOVA para determinar el efecto de los ejercicios en la puntuación de ansiedad después de controlar la puntuación de ansiedad basal de los participantes.
Después del ajuste por la puntuación de ansiedad previa a la prueba, hubo una diferencia estadísticamente significativa en la puntuación de ansiedad posterior a la prueba entre los grupos, F(4, 4994) = 580.579, p < 0,0001 *.
El análisis post hoc se realizó con un ajuste de Bonferroni. La puntuación media de ansiedad fue estadísticamente significativa mayor en el grp1 (16,4 +/- 0,15) en comparación con el grp2 (15,8 +/- 0,12) y el grp3 (13,5 +/_ 0,11), p < 0,001.
# Visualization: line plots with p-values# Función para transformación personalizada (log10 y multiplicación por 10)pwc <- pwc %>%add_xy_position(x ="Class", fun ="mean_se")ggline(get_emmeans(pwc), x ="Class", y ="emmean") +geom_errorbar(aes(ymin = conf.low, ymax = conf.high, color=Class), width =1) +stat_pvalue_manual(pwc, hide.ns =TRUE, tip.length = F) +labs(subtitle =get_test_label(res.aov, detailed =TRUE),caption =get_pwc_label(pwc) )+theme_presentation(base_size =11)+scale_color_manual(name="Longitud (cm)",values =c("#5f5f5f","#0000ff","#000080","#00bf00","#ffff00","#ff8000","#ff00bf","#ff0000","#a6533c"))+#scale_color_viridis_d(option = "C")+# Modificación para rotar las etiquetas del eje xtheme(axis.text.x =element_text(angle =0, vjust =0.5, hjust=1),legend.position ="none")+labs(x="Longitud (cm)",y="Emmean (Sv,dB)")
Referencias para buscar en la web: ANCOVA
1-s2.0-S0022191021001335-mmc1.docx (live.com)
Acclimation, duration and intensity of cold exposure determine the rate of cold stress accumulation and mortality in Drosophila suzukii - ScienceDirect
library(ggplot2)# Graficar los puntos y las barras de errorAncova01=ggplot(data=emm2) +geom_point(alpha=0.5,size =4, aes(x = Class, y = sv, fill=Class, color=Class))+labs(subtitle =get_test_label(res.aov, detailed =TRUE),caption =get_pwc_label(pwc) )+geom_errorbar(aes(x =as.factor(Class),ymin = low.res, ymax = hig.res, color=Class), width =0.5) +theme_presentation(base_size =11)+# scale_y_continuous(limits = c(-60,150))+scale_fill_manual(name="Longitud (cm)",values =c("#5f5f5f","#0000ff","#000080","#00bf00","#ffff00","#ff8000","#ff00bf","#ff0000","#a6533c"))+scale_color_manual(name="Longitud (cm)",values =c("#5f5f5f","#0000ff","#000080","#00bf00","#ffff00","#ff8000","#ff00bf","#ff0000","#a6533c"))+theme(axis.text.x =element_text(angle =0, vjust =0.5, hjust=1),legend.position ="none")+labs(x="Longitud (cm)",y="Emmean (Sv,dB)") Ancova01
ggsave(filename ="Ancova_modal.png",plot = Ancova01, height =4, # Specifies the height of the plot in incheswidth =4.25, # Specifies the width of the plot in inchesdpi =1000, # Specifies the resolution in dots per inchpath ="F:/Tesis abordo/Tesis abordo/Figuras/Objetivo02/",device ="png")