es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diferentes valores de P entre wilcox_test() y wilcox.test() en R

Mientras intentaba realizar una prueba de Wilcoxon pareada para la variable “Metabolite”, noté diferentes valores de p entre wilcox_test() y wilcox.test() cuando probé la siguiente variable:

structure(list(Visit = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L), .Label = c("BSL", "LV"), class = "factor"), Metabolite = c(NA, 
9.602, 9.0102, 4.524, 3.75, NA, 6.596, 7.065, 6.877, NA, NA, 
10.1846, 13.521, 7.8219, NA, 4.9149, 4.0754, 4.7635, 8.8554, 
4.3442, NA, 16.659, NA, 3.698, 6.623, 5.158, 11.719, 3.206, NA, 
2.225, 7.417, 1.42, NA, NA, 2.752, 6.504, 7.594, 6.652, NA, NA, 
3.784, 2.7311, 4.1749, 2.6659, 0.5592, NA, 4.2326, 4.3808, 3.624, 
4.29, 7.098, 6.532, 3.699, 9.297, 8.275, NA)), class = "data.frame", row.names = c(NA, 
-56L))

La p-value derivada del resultado 1 (p=0.0079) es diferente de la del resultado 2 (p=0.003279):

result1 <- wilcox_test(data=Data_pairs, Metabolite~Visit, paired = TRUE)

# A tibble: 1 x 7
#.y.     group1 group2    n1    n2 statistic      p
#* <chr>   <chr>  <chr>  <int> <int>     <dbl>  <dbl>
#        1 Metabolite BSL    LV        28    28       131 0.0079

result2 <- wilcox.test(data=Data_pairs, Metabolite~Visit, paired = TRUE)
#   Prueba de rango con signo de Wilcoxon

#datos:  Metabolite by Visit
#V = 197, valor p = 0.003279
#hipótesis alternativa: el desplazamiento de la ubicación verdadera no es igual a 0

Utilizando diferentes programas de estadísticas, parece que el valor de p incorrecto es el derivado de result2.

¿Hay alguna sugerencia/consejo sobre cómo corregir mi código y cuál es la razón de esta diferencia?

Gracias de antemano por su ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La diferencia en los valores p podría deberse al hecho de que wilcox_test() del paquete rstatix utiliza una aproximación normal para calcular el valor p en una muestra grande, mientras que wilcox.test() calcula el valor p exacto para cualquier tamaño de muestra. Si el tamaño de muestra es pequeño, se considera más confiable el valor p exacto de wilcox.test().

    Para corregir su código, puede usar exact=TRUE en wilcox.test() para obtener el valor p exacto:

    result2 <- wilcox.test(data=Data_pairs,  Metabolite~Visit, paired = TRUE, exact=TRUE)
    # Prueba exacta de rango signado de Wilcoxon
    # 
    # datos: Metabolite por Visit
    # V = 197, valor p = 0.007957
    # hipótesis alternativa: el desplazamiento de la ubicación verdadera no es igual a 0
    

    Esto da el mismo valor p que wilcox_test(), pero tenga en cuenta que la estadística de prueba es ligeramente diferente debido a la aproximación normal utilizada en wilcox_test().

    Siempre es una buena idea verificar las suposiciones de la prueba y la robustez de los resultados ante desviaciones de esas suposiciones, especialmente cuando hay discrepancias entre diferentes funciones o software.

Comments are closed.