Comparación de medias en programación R

Hay muchos casos en el análisis de datos en los que querrá comparar las medias de dos poblaciones o muestras y la técnica que debe usar depende del tipo de datos que tenga y cómo se agrupan esos datos. La comparación de pruebas de medios ayuda a determinar si sus grupos tienen medios similares. Por lo tanto, este artículo contiene pruebas estadísticas para usar en la comparación de medias en la programación R. Estas pruebas incluyen:

Comparación de medias en programación R

Entonces, como hemos discutido antes, se utilizan varias técnicas según el tipo de datos que tenemos y cómo se agrupan los datos. Entonces, analicemos las técnicas una por una según los diferentes tipos de datos.

Comparación de las medias de los datos de una muestra

Existen principalmente dos técnicas que se utilizan para comparar la media de una muestra con una media estándar conocida. Estas dos técnicas son:

  • Prueba T de una muestra
  • Prueba de Wilcoxon de una muestra

Prueba T de una muestra

La prueba T para una muestra se usa para probar la diferencia estadística entre la media de una muestra y un valor conocido o supuesto/hipotetizado de la media en la población.

Implementación en R:

Para realizar una prueba t de una muestra en R, use la función t.test(). La sintaxis de la función se da a continuación:

Sintaxis: t.test(x, mu = 0)

Parámetros:

  • x: el nombre de la variable de interés
  • mu: conjunto igual a la media especificada por la hipótesis nula

Ejemplo:

R

# R program to illustrate
# One sample t-test
 
set.seed(0)
sweetSold <- c(rnorm(50, mean = 140, sd = 5))
 
# Ho: mu = 150
# Using the t.test()
result = t.test(sweetSold, mu = 150)
 
# Print the result
print(result)

 Producción:

One Sample t-test

data:  sweetSold
t = -15.249, df = 49, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 150
95 percent confidence interval:
 138.8176 141.4217
sample estimates:
mean of x 
 140.1197 

Prueba de Wilcoxon de una muestra

La prueba de rango con signo de Wilcoxon de una muestra es una alternativa no paramétrica a una prueba t de una muestra cuando no se puede suponer que los datos se distribuyen normalmente. Se utiliza para determinar si la mediana de la muestra es igual a un valor estándar conocido, es decir, un valor teórico.

Implementación en R:

Para realizar una prueba de Wilcoxon de una muestra, R proporciona una función wilcox.test() que se puede usar de la siguiente manera:

Sintaxis: wilcox.test(x, mu = 0, alternativa = “dos.lados”)

Parámetros :

  • x: un vector numérico que contiene sus valores de datos
  • mu: valor medio/mediano teórico. El valor predeterminado es 0, pero puede cambiarlo.
  • alternativa: la hipótesis alternativa. El valor permitido es uno de «dos lados» (predeterminado), «mayor» o «menor».

Ejemplo: aquí, usemos un conjunto de datos de ejemplo que contiene el peso de 10 conejos. ¿Sabemos si el peso medio del conejo difiere de 25 g?

R

# R program to illustrate
# one-sample Wilcoxon signed-rank test
 
# The data set
set.seed(1234)
myData = data.frame(
name = paste0(rep("R_", 10), 1:10),
weight = round(rnorm(10, 30, 2), 1)
)
 
# Print the data
print(myData)
 
# One-sample wilcoxon test
result = wilcox.test(myData$weight, mu = 25)
 
# Printing the results
print(result)

Producción:

    name weight
1   R_1   27.6
2   R_2   30.6
3   R_3   32.2
4   R_4   25.3
5   R_5   30.9
6   R_6   31.0
7   R_7   28.9
8   R_8   28.9
9   R_9   28.9
10 R_10   28.2

    Wilcoxon signed rank test with continuity correction

data:  myData$weight
V = 55, p-value = 0.005793
alternative hypothesis: true location is not equal to 25

En el resultado anterior, el valor p de la prueba es 0,005793, que es menor que el nivel de significación alfa = 0,05. Entonces podemos rechazar la hipótesis nula y concluir que el peso promedio del conejo es significativamente diferente de 25 g con un valor de p = 0.005793.

Comparación de las medias de muestras pareadas

Existen principalmente dos técnicas que se utilizan para comparar las medias de muestras pareadas. Estas dos técnicas son:

  • Prueba T de muestra pareada
  • Prueba de Wilcoxon para muestras pareadas

Prueba T de muestra pareada

Este es un procedimiento estadístico que se utiliza para determinar si la diferencia media entre dos conjuntos de observaciones es cero. En una prueba t de muestra pareada, cada sujeto se mide dos veces, lo que da como resultado pares de observaciones.

Implementación en R:

Para realizar una prueba t de una muestra en R, use la función t.test(). La sintaxis de la función se proporciona a continuación.

Sintaxis: t.test(x, y, emparejado =VERDADERO)

Parámetros:

  • x, y: vectores numéricos
  • emparejado: un valor lógico que especifica que queremos calcular una prueba t emparejada

Ejemplo:

R

# R program to illustrate
# Paired sample t-test
 
set.seed(0)
 
# Taking two numeric vectors
shopOne <- rnorm(50, mean = 140, sd = 4.5)
shopTwo <- rnorm(50, mean = 150, sd = 4)
 
# Using t.tset()
result = t.test(shopOne, shopTwo,
                var.equal = TRUE)
 
# Print the result
print(result)

 Producción:

Prueba t de dos muestras

datos: tienda uno y tienda dos

t = -13,158, gl = 98, valor p < 2,2e-16

hipótesis alternativa: la verdadera diferencia de medias no es igual a 0

Intervalo de confianza del 95 por ciento:

 -11.482807 -8.473061

estimaciones de muestra:

media de x media de y 

 140.1077 150.0856 

Prueba de Wilcoxon para muestras pareadas

La prueba de Wilcoxon para muestras pareadas es una alternativa no paramétrica a la prueba t pareada utilizada para comparar datos pareados. Se utiliza cuando los datos no se distribuyen normalmente.

Implementación en R:

Para realizar la prueba de Wilcoxon de muestras emparejadas, R proporciona una función wilcox.test() que se puede usar de la siguiente manera:

Sintaxis: wilcox.test(x, y, emparejado = VERDADERO, alternativo = “dos lados”)

Parámetros:

  • x, y: vectores numéricos
  • emparejado: un valor lógico que especifica que queremos calcular una prueba de Wilcoxon emparejada
  • alternativa: la hipótesis alternativa. El valor permitido es uno de «dos lados» (predeterminado), «mayor» o «menor».

Ejemplo: Aquí, usemos un conjunto de datos de ejemplo, que contiene el peso de 10 conejos antes y después del tratamiento. Queremos saber si hay alguna diferencia significativa en los pesos medianos antes y después del tratamiento.

R

# R program to illustrate
# Paired Samples Wilcoxon Test
 
# The data set
# Weight of the rabbit before treatment
before <-c(190.1, 190.9, 172.7, 213, 231.4,
        196.9, 172.2, 285.5, 225.2, 113.7)
 
# Weight of the rabbit after treatment
after <-c(392.9, 313.2, 345.1, 393, 434,
        227.9, 422, 383.9, 392.3, 352.2)
 
# Create a data frame
myData <- data.frame(
group = rep(c("before", "after"), each = 10),
weight = c(before, after)
)
 
# Print all data
print(myData)
 
# Paired Samples Wilcoxon Test
result = wilcox.test(before, after, paired = TRUE)
 
# Printing the results
print(result)

Producción:

   group weight
1  before  190.1
2  before  190.9
3  before  172.7
4  before  213.0
5  before  231.4
6  before  196.9
7  before  172.2
8  before  285.5
9  before  225.2
10 before  113.7
11  after  392.9
12  after  313.2
13  after  345.1
14  after  393.0
15  after  434.0
16  after  227.9
17  after  422.0
18  after  383.9
19  after  392.3
20  after  352.2

    Wilcoxon signed rank test

data:  before and after
V = 0, p-value = 0.001953
alternative hypothesis: true location shift is not equal to 0

En el resultado anterior, el valor p de la prueba es 0,001953, que es menor que el nivel de significación alfa = 0,05. Podemos concluir que la mediana del peso de los ratones antes del tratamiento es significativamente diferente de la mediana del peso después del tratamiento con un valor de p = 0,001953.

Comparación de las medias de más de dos grupos

Existen principalmente dos técnicas que se utilizan para comparar la media de una muestra con una media estándar conocida. Estas dos técnicas son:

  • Análisis de Varianza (ANOVA)
    • ANOVA de una vía
    • ANOVA de dos vías
    • Prueba MANOVA
  • Prueba de Kruskal-Wallis

ANOVA de una vía

El análisis de varianza unidireccional (ANOVA), también conocido como ANOVA de un factor, es una extensión de la prueba t de dos muestras independientes para comparar medias en una situación en la que hay más de dos grupos. En ANOVA unidireccional, los datos se organizan en varios grupos basados ​​en una única variable de agrupación.

Implementación en R:

Para realizar el análisis de varianza unidireccional (ANOVA) en R, utilice la función aov(). La función summary.aov() se utiliza para resumir el análisis del modelo de varianza. La sintaxis de la función se proporciona a continuación.

Sintaxis: aov(fórmula, datos = NULL)

Parámetros:

  • fórmula: una fórmula que especifica el modelo.
  • datos: Un marco de datos en el que se encontrarán las variables especificadas en la fórmula

Ejemplo:

La prueba ANOVA de una vía se realiza utilizando el conjunto de datos mtcars que viene preinstalado con el paquete dplyr entre el atributo disp, un atributo continuo, y el atributo gear, un atributo categórico.

R

# R program to illustrate
# one way ANOVA test
 
# Loading the package
library(dplyr)
 
# Calculate test statistics using aov function
mtcars_aov <- aov(mtcars $ disp ~ factor(mtcars $ gear))
print(summary(mtcars_aov))

Producción:

Valor Df Sum Sq Media Sq F Pr(>F)    

factor(mtcars$gear) 2 280221 140110 20.73 2.56e-06 ***

Residuales 29 195964 6757                     

signif. códigos: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ‘ 1

El resumen muestra que el atributo de engranaje es muy importante para el desplazamiento (tres estrellas lo indican). Además, el valor de P es inferior a 0,05, por lo que prueba que el engranaje es importante para el desplazamiento, es decir, está relacionado entre sí, y rechazamos la hipótesis nula.

ANOVA de dos vías

La prueba ANOVA de dos vías se usa para evaluar simultáneamente el efecto de dos variables de agrupación (A y B) en una variable de respuesta. Toma en consideración dos grupos categóricos.

Implementación en R:

Para realizar el análisis de varianza bidireccional (ANOVA) en R, utilice también la función aov(). La función summary.aov() se utiliza para resumir el modelo de análisis de varianza. La sintaxis de la función se proporciona a continuación.

Sintaxis: aov(fórmula, datos = NULL)

Parámetros:

  • fórmula: una fórmula que especifica el modelo.
  • datos: Un marco de datos en el que se encontrarán las variables especificadas en la fórmula

Ejemplo: la prueba ANOVA bidireccional se realiza utilizando el conjunto de datos mtcars que viene preinstalado con el paquete dplyr entre el atributo disp, un atributo continuo y el atributo gear, un atributo categórico, un atributo am, un atributo categórico.

R

# R program to illustrate
# two way ANOVA test
 
# Loading the package
library(dplyr)
 
# Calculate test statistics using aov function
mtcars_aov2 = aov(mtcars $ disp ~ factor(mtcars $ gear) *
                  factor(mtcars $ am))
print(summary(mtcars_aov2))

 Producción:

    Valor Df Sum Sq Media Sq F Pr(>F)    

factor(mtcars$gear) 2 280221 140110 20.695 3.03e-06 ***

factor(mtcars$am) 1 6399 6399 0.945 0.339    

Residuales 28 189565 6770                     

signif. códigos: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ‘ 1

El resumen muestra que el atributo del arte es muy significativo para el desplazamiento (tres estrellas lo indican) y el atributo am no es muy significativo para el desplazamiento. El valor P del engranaje es inferior a 0,05, por lo que demuestra que el engranaje es importante para el desplazamiento, es decir, está relacionado entre sí. El valor P de am es mayor que 0,05, am no es significativo para el desplazamiento, es decir, no está relacionado entre sí.

Prueba MANOVA

El análisis de varianza multivariado (MANOVA) es simplemente un ANOVA (Análisis de varianza) con varias variables dependientes. Es una continuación del ANOVA. En un ANOVA, probamos las diferencias estadísticas en una variable dependiente continua por una variable de agrupación independiente. El MANOVA continúa este análisis tomando múltiples variables dependientes continuas y las agrupa colectivamente en una variable compuesta lineal ponderada. El MANOVA compara si la combinación recién creada varía o no según los diferentes niveles, o grupos, de la variable independiente. 

Implementación en R:

R proporciona un método manova() para realizar la prueba MANOVA. La clase “manova” difiere de la clase “aov” en la selección de un método de resumen diferente. La función manova() llama a aov y luego agrega la clase «manova» al objeto de resultado para cada estrato.

Sintaxis: manova(fórmula, datos = NULL, proyecciones = FALSO, qr = VERDADERO, contrastes = NULL, …)

Parámetros: 

  • fórmula: una fórmula que especifica el modelo.
  • datos: Un marco de datos en el que se encontrarán las variables especificadas en la fórmula. Si faltan, las variables se buscan de la manera estándar.
  • proyecciones: bandera lógica
  • qr: bandera lógica
  • contrastes: una lista de contrastes que se utilizará para algunos de los factores de la fórmula. 
    …: Argumentos que se pasarán a lm, como subconjunto o na.action

Ejemplo: Para realizar la prueba MANOVA en R, tomemos el conjunto de datos del iris. 

R

# R program to illustrate
# MANOVA test
 
# Import required library
library(dplyr)
 
# Taking iris data set
myData = iris
 
# Show a random sample
set.seed(1234)
dplyr::sample_n(myData, 10)

 Producción:

   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1           5.5         2.5          4.0         1.3 versicolor
2           5.6         2.5          3.9         1.1 versicolor
3           6.0         2.9          4.5         1.5 versicolor
4           6.4         3.2          5.3         2.3  virginica
5           4.3         3.0          1.1         0.1     setosa
6           7.2         3.2          6.0         1.8  virginica
7           5.9         3.0          4.2         1.5 versicolor
8           4.6         3.1          1.5         0.2     setosa
9           7.9         3.8          6.4         2.0  virginica
10          5.1         3.4          1.5         0.2     setosa

Para saber si hay alguna diferencia importante, en la longitud de sépalos y pétalos, entre las diferentes especies, realice la prueba MANOVA. Por lo tanto, la función manova() se puede usar de la siguiente manera. 

R

# Taking two dependent variable
sepal = iris$Sepal.Length
petal = iris$Petal.Length
 
# MANOVA test
result = manova(cbind(Sepal.Length, Petal.Length) ~ Species,
                      data = iris)
summary(result)

 Producción:

   Df Pillai aprox F num Df den Df Pr(>F)    

Especie 2 0,9885 71,829 4 294 < 2,2e-16 ***

Residuos 147                                            

signif. códigos: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ‘ 1

Del resultado anterior, se puede ver que las dos variables son significativamente diferentes entre las especies.

Prueba de Kruskal-Wallis 

La prueba de Kruskal-Wallis es una prueba basada en rangos que es similar a la prueba U de Mann-Whitney pero se puede aplicar a datos unidireccionales con más de dos grupos. Es una alternativa no paramétrica a la prueba ANOVA unidireccional , que amplía la prueba de Wilcoxon de dos muestras. Un grupo de muestras de datos es independiente si provienen de poblaciones no relacionadas y las muestras no se afectan entre sí. Usando la prueba de Kruskal-Wallis, se puede decidir si las distribuciones de la población son similares sin asumir que siguen la distribución normal

Implementación en R:

R proporciona un método kruskal.test() que está disponible en el paquete de estadísticas para realizar una prueba de suma de rangos de Kruskal-Wallis.

Sintaxis: kruskal.test(x, g, formula, data, subset, na.action, …)

Parámetros:

  • x: un vector numérico de valores de datos, o una lista de vectores de datos numéricos.
  • g: un objeto vectorial o factor que proporciona el grupo para los elementos correspondientes de x
  • fórmula: una fórmula de la forma respuesta ~ grupo donde respuesta da los valores de datos y grupo un vector o factor de los grupos correspondientes.
  • datos: una array o marco de datos opcional que contiene las variables en la fórmula.
  • subconjunto: un vector opcional que especifica un subconjunto de observaciones a utilizar.
  • na.action: una función que indica lo que debería suceder cuando los datos contienen NA
  • …: más argumentos que se pasarán a los métodos o desde ellos.

Ejemplo: Usemos el conjunto de datos de R incorporado llamado PlantGrowth. Contiene el peso de las plantas obtenidas bajo control y dos condiciones de tratamiento diferentes. 

R

# Preparing the data set
# to perform Kruskal-Wallis Test
 
# Taking the PlantGrowth data set
myData = PlantGrowth
print(myData)
 
# Show the group levels
print(levels(myData$group))

Producción:

   weight group
1    4.17  ctrl
2    5.58  ctrl
3    5.18  ctrl
4    6.11  ctrl
5    4.50  ctrl
6    4.61  ctrl
7    5.17  ctrl
8    4.53  ctrl
9    5.33  ctrl
10   5.14  ctrl
11   4.81  trt1
12   4.17  trt1
13   4.41  trt1
14   3.59  trt1
15   5.87  trt1
16   3.83  trt1
17   6.03  trt1
18   4.89  trt1
19   4.32  trt1
20   4.69  trt1
21   6.31  trt2
22   5.12  trt2
23   5.54  trt2
24   5.50  trt2
25   5.37  trt2
26   5.29  trt2
27   4.92  trt2
28   6.15  trt2
29   5.80  trt2
30   5.26  trt2
[1] "ctrl" "trt1" "trt2"

Aquí la columna “grupo” se denomina factor y las diferentes categorías (“ctr”, “trt1”, “trt2”) se denominan niveles de factor. Los niveles están ordenados alfabéticamente. El enunciado del problema es que queremos saber si existe alguna diferencia significativa entre los pesos promedio de las plantas en las 3 condiciones experimentales. Y la prueba se puede realizar usando la función kruskal.test() como se indica a continuación.

R

# R program to illustrate
# Kruskal-Wallis Test
 
# Taking the PlantGrowth data set
myData = PlantGrowth
 
# Performing Kruskal-Wallis test
result = kruskal.test(weight ~ group,
                      data = myData)
print(result)

 Producción:

  Prueba de suma de rangos de Kruskal-Wallis

datos: peso por grupo

Kruskal-Wallis chi-cuadrado = 7,9882, gl = 2, valor p = 0,01842

Como el valor de p es menor que el nivel de significación de 0,05, se puede concluir que existen diferencias significativas entre los grupos de tratamiento.

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *