7.5: Uso de R para pruebas de significancia y análisis de varianza
- Page ID
- 69332
La instalación base de R tiene funciones para la mayoría de las pruebas de significación cubiertas en el Capítulo 7.2 - Capítulo 7.4.
Uso de R para comparar varianzas
La función R para comparar varianzas es var.test ()
que toma la siguiente forma
var.test (x, y, ratio = 1, alternativa = c (“dos.sided”, “menos”, “mayor”), conf.level = 0.95,...)
donde x
e y
son vectores numéricos que contienen las dos muestras, ratio
es la relación esperada para la hipótesis nula (que por defecto es 1), alternativa
es una cadena de caracteres que establece la hipótesis alternativa (que por defecto es de dos caras
o dos colas), y un nivel conf.level
que da el tamaño del intervalo de confianza, que por defecto es 0.95, o 95%, o\(\alpha = 0.05\). Podemos usar esta función para comparar las varianzas de dos muestras,\(s_1^2\) vs\(s_2^2\), pero no la varianza de una muestra y la varianza para una población\(s^2\) vs\(\sigma^2\).
Usemos R en los datos del Ejemplo 7.2.3, que considera dos juegos de centavos de Estados Unidos.
# crear vectores para almacenar los datos
muestra1 = c (3.080, 3.094, 3.107, 3.056, 3.112, 3.174, 3.198)
muestra2 = c (3.052, 3.141, 3.083, 3.083, 3.048)
# ejecutar prueba de varianza de dos lados con alfa = 0.05 y nula hipótesis de que las varianzas son iguales
var.test (x = muestra1, y = muestra2, relación = 1, alternativa = “dos.caras”, conf.nivel = 0.95)
El código anterior produce la siguiente salida
Prueba F para comparar dos varianzas
datos: muestra1 y muestra2
F = 1.8726, num df = 6, denom df = 4, valor p = 0.5661
hipótesis alternativa: la relación verdadera de varianzas no es igual a 1
Intervalo de confianza del 95 por ciento:
0.2036028 11.6609726
estimaciones muestrales: relación de varianzas
1.872598
Dos partes de esta salida nos llevan a retener la hipótesis nula de varianzas iguales. Primero, el valor p reportado de 0.5661 es mayor que nuestro valor crítico para\(\alpha\) de 0.05, y segundo, el intervalo de confianza del 95% para la relación de las varianzas, que va de 0.204 a 11.7 incluye la hipótesis nula de que es 1.
R no incluye una función\(s^2\) para comparar con\(\sigma^2\).
Uso de R para comparar medias
La función R para comparar medias es t.test ()
y toma la siguiente forma
t.test (x, y = NULL, alternativa = c (“dos.sided”, “menos”, “mayor”), mu = 0,
pareado = FALSO, var.igual = FALSO, conf.level = 0.95,...)
donde x
es un vector numérico que contiene los datos de una muestra e y
es un vector opcional que contiene datos para una segunda muestra, alternativa
es una cadena de caracteres que establece la hipótesis alternativa (que por defecto es de dos colas), mu
es el la media esperada de la población o la diferencia esperada en las medias de las dos muestras, emparejado
es un valor lógico que indica si los datos están emparejados, var.equal
es un valor lógico que indica si las varianzas para dos muestras se tratan como iguales o desiguales (basado en un prior var.test ()
), y conf.level
da el tamaño del intervalo de confianza (que por defecto es 0.95, o 95%, o\(\alpha = 0.05\)).
Uso de R para comparar\(\overline{X}\) con\(\mu\)
Usemos R en los datos del Ejemplo 7.2.1, que considera la determinación del\(\% \text{Na}_2 \text{CO}_3\) en una muestra estándar que se sabe que es 98.76% w/w\(\text{Na}_2 \text{CO}_3\).
# crear vector para almacenar los datos
Na2co3 = c (98.71, 98.59, 98.62, 98.44, 98.58)
# ejecutar una prueba t de dos caras, usando mu para definir la media esperada; porque los valores predeterminados
# para emparejados y var.equal son FALSOS, podemos omitirlos aquí
t.test (x = Na2CO3, alternativa = “dos lados”, mu = 98.76, conf.nivel = 0.95)
El código anterior produce la siguiente salida
Prueba t de una muestra
datos: Na2CO3
t = -3.9522, df = 4, valor p = 0.01679
hipótesis alternativa: la media verdadera no es igual a 98.76
Intervalo de confianza del 95 por ciento:
98.46717 98.70883
estimaciones de la muestra:
media de x
98.588
Dos partes de esta salida nos llevan a rechazar la hipótesis nula de varianzas iguales. Primero, el valor p reportado de 0.01679 es menor que nuestro valor crítico para\(\alpha\) de 0.05, y segundo, el intervalo de confianza de 95% para la media experimental de 98.588, que va de 98.467 a 98.709, no incluye la hipótesis nula de que es 98.76.
Uso de R para comparar medias para dos muestras
Al comparar las medias para dos muestras, tenemos que tener cuidado de considerar si los datos están desapareados o emparejados, y para los datos no emparejados debemos determinar si podemos juntar las varianzas para las dos muestras.
Datos no emparejados
Usemos R en los datos del Ejemplo 7.2.4, que considera dos juegos de centavos de Estados Unidos. Estos datos están desapareados y, como mostramos anteriormente, no hay evidencia que sugiera que las varianzas de las dos muestras sean diferentes.
# crear vectores para almacenar los datos
muestra1 = c (3.080, 3.094, 3.107, 3.056, 3.112, 3.174, 3.198)
muestra2 = c (3.052, 3.141, 3.083, 3.083, 3.048)
# ejecutar una prueba t de dos lados, estableciendo mu en 0 como la hipótesis nula es que las medias son las mismas, y estableciendo var.equal a TRUE
t.test (x = muestra1, y = muestra2, alternativa = “dos.caras”, mu = 0, var.igual = VERDADERO, conf.level = 0.95)
El código anterior produce la siguiente salida
Prueba t de dos muestras
datos: muestra1 y muestra2
t = 1.3345, df = 10, valor p = 0.2116
hipótesis alternativa: la verdadera diferencia en medias no es igual a 0
Intervalo de confianza del 95 por ciento:
-0.02403040 0.09580182
estimaciones de la muestra:
media de x media de y
3.117286 3.081400
Dos partes de esta salida nos llevan a retener la hipótesis nula de medias iguales. Primero, el valor p reportado de 0.2116 es mayor que nuestro valor crítico para\(\alpha\) de 0.05, y segundo, el intervalo de confianza del 95% para la diferencia en las medias experimentales, que va de -0.0240 a 0.0958, incluye la hipótesis nula de que es 0.
Datos emparejados
Usemos R en los datos del Ejemplo 7.2.1, que compara dos métodos para determinar la concentración del antibiótico monensina en cubas de fermentación.
# crear vectores para almacenar los datos
microbiológico = c (129.5, 89.6, 76.6, 52.2, 110.8, 50.4, 72.4, 141.4, 75.0, 34.1, 60.3)
electroquímico = c (132.3, 91.0, 73.6, 58.2, 104.2, 49.9, 82.1, 154.1, 73.4, 38.1, 60.1)
# ejecutar una prueba t de dos colas, estableciendo mu en 0 ya que la hipótesis nula es que las medias son las mismas, y estableciendo emparejado a TRUE
t.test (x = microbiológico, y = electroquímico, alternativa = “de dos lados”, mu = 0, emparejado = VERDADERO, conf.nivel = 0.95)
El código anterior produce la siguiente salida
Prueba t pareada
datos: microbiológicos y electroquímicos
t = -1.3225, df = 10, valor p = 0.2155
hipótesis alternativa: la verdadera diferencia en medias no es igual a 0
Intervalo de confianza del 95 por ciento:
-6.028684 1.537775
estimaciones de la muestra:
media de las diferencias
-2.245455
Dos partes de esta salida nos llevan a retener la hipótesis nula de medias iguales. Primero, el valor p reportado de 0.2155 es mayor que nuestro valor crítico para\(\alpha\) de 0.05, y segundo, el intervalo de confianza del 95% para la diferencia en la media experimental, que va de -6.03 a 1.54, incluye la hipótesis nula de que es 0.
Uso de R para detectar valores atípicos
La instalación base de R no incluye pruebas de valores atípicos, pero el paquete de valores atípicos
proporcionó funciones para la prueba Q de Dixon y la prueba de Grubb. Para instalar el paquete, utilice las siguientes líneas de código
install.packages (“valores atípicos”)
biblioteca (valores atípicos)
Solo necesitas instalar el paquete una vez, pero debes usar library ()
para que el paquete esté disponible cuando comiences una nueva sesión R.
Prueba Q de Dixon
La función R para la prueba Q de Dixon es dixon.test ()
y toma la siguiente forma
dixon.test (x, tipo, dos.sided)
donde x
es un vector numérico con los datos que estamos considerando, type
define el (los) valor (s) específico (es) que estamos probando (usaremos type = 10
, que prueba para un único valor atípico en cualquiera de los extremos de los datos clasificados), y dos.sided
, lo que indica si usamos un prueba de una o dos colas (usaremos dos.sided = FALSO
ya que nos interesa si el valor más pequeño es demasiado pequeño o el valor más grande es demasiado grande).
Usemos R en los datos del Ejemplo 7.2.7, que considera las masas de un conjunto de centavos de Estados Unidos.
penique = c (3.067, 2.514, 3.094, 3.049, 3.048, 3.109, 3.039, 3.079, 3.102)
dixon.test (x = centavo, dos.caras = FALSO, tipo = 10)
El código anterior produce la siguiente salida
Prueba de Dixon para valores atípicos
data: penique Q = 0.88235, valor p < 2.2e-16
hipótesis alternativa: el valor más bajo 2.514 es un valor atípico
El valor p reportado menor que\(2.2 \times 10^{-16}\) es menor que nuestro valor crítico para\(\alpha\) de 0.05, lo que sugiere que el centavo con una masa de 2.514 g se extrae de una población diferente a la de los otros centavos.
Prueba de Grubb
La función R para la prueba de Grubb es grubbs.test ()
y toma la siguiente forma
gurbbs.test (x, tipo, dos.caras)
donde x
es un vector numérico con los datos que estamos considerando, type
define el (los) valor (s) específico (es) que estamos probando (usaremos type = 10
, que prueba para un único valor atípico en cualquiera de los extremos de los datos clasificados), y dos.sided
, que indicaba si usamos un prueba de una o dos colas (usaremos dos.sided = FALSO
ya que nos interesa si el valor más pequeño es demasiado pequeño o el valor más grande es demasiado grande).
Usemos R en los datos del Ejemplo 7.2.7, que considera las masas de un conjunto de centavos de Estados Unidos.
penique = c (3.067, 2.514, 3.094, 3.049, 3.048, 3.109, 3.039, 3.079, 3.102)
grubbs.test (x = centavo, dos.caras = FALSO, tipo = 10)
El código anterior produce la siguiente salida
Prueba de Grubbs para un valor atípico
datos: penny
G = 2.64300, U = 0.01768, valor p = 9.69e-07
hipótesis alternativa: el valor más bajo 2.514 es un valor atípico
El valor p reportado de\(9.69 \times 10^{-7}\) es menor que nuestro valor crítico para\(\alpha\) de 0.05, lo que sugiere que el centavo con una masa de 2.514 g se extrae de una población diferente a la de los otros centavos.
Uso de R para completar pruebas de significancia no paramétricas
La función R para completar la prueba de rango firmado de Wilcoxson y la prueba de suma de rangos de Wilcoxson es wilcox.test ()
, que toma la siguiente forma
wilcox.test (x, y = NULL, alternativa = c (“dos.sided”, “menos”, “mayor”), mu = 0,
pareado = FALSO, conf.nivel = 0.95,...)
donde x
es un vector numérico que contiene los datos de una muestra e y
es un vector opcional que contiene datos para una segunda muestra, alternativa
es una cadena de caracteres que establece la hipótesis alternativa (que por defecto es de dos colas), mu
es el la media esperada de la población o la diferencia esperada en las medias de las dos muestras, emparejado
es un valor lógico que indica si los datos están emparejados, y conf.level
da el tamaño del intervalo de confianza (que por defecto es 0.95, o 95%, o\(\alpha = 0.05\)).
Uso de R para completar una prueba de rango firmado de Wilcoxson
Usemos R en los datos del Ejemplo 7.3.1, que compara dos métodos para determinar la concentración del antibiótico monensina en cubas de fermentación.
# crear vectores para almacenar los datos
microbiológico = c (129.5, 89.6, 76.6, 52.2, 110.8, 50.4, 72.4, 141.4, 75.0, 34.1, 60.3)
electroquímico = c (132.3, 91.0, 73.6, 58.2, 104.2, 49.9, 82.1, 154.1, 73.4, 38.1, 60.1)
# ejecutar una prueba de rango firmado de wilcoxson de dos colas, estableciendo mu en 0 ya que la hipótesis nula es que
# las medias son las mismas y la configuración emparejada a VERDADERO
wilcox.test (x = microbiológico, y = electroquímico, alternativa = “dos.caras”, mu = 0, pareado = VERDADERO, conf.nivel = 0.95)
El código anterior produce la siguiente salida
Wilcoxon firmó prueba de rango
datos: microbiológicos y electroquímicos
V = 22, valor p = 0.3652
hipótesis alternativa: el verdadero desplazamiento de ubicación no es igual a 0
donde el valor V es el menor de los dos rangos firmados. El valor p reportado de 0.3652 es mayor que nuestro valor crítico para\(\alpha\) de 0.05, lo que significa que no tenemos evidencia que sugiera que existe una diferencia entre los valores medios para los dos métodos.
Uso de R para completar una prueba de suma de rangos de Wilcoxson
Usemos R en los datos del Ejemplo 7.3.2, que compara dos métodos para determinar la cantidad de aspirina en tabletas de dos lotes de producción.
# crear vectores para almacenar los datos
lot1 = c (256, 248, 245, 244, 248, 261)
lot2= c (241, 258, 241, 256, 254)
# ejecutar una prueba de rango firmado de wilcoxson de dos colas, estableciendo mu en 0 ya que la hipótesis nula es
# que las medias son las mismas, y estableciendo emparejado a TRUE
wilcox.test (x = lot1, y = lot2, alternativa = “dos.sided”, mu = 0, pareado = FALSO, conf.level = 0.95)
El código anterior produce la siguiente salida
Prueba de suma de rangos de Wilcoxon con corrección de continuidad
datos: lot1 y lot2
W = 16.5, valor p = 0.8541
hipótesis alternativa: el verdadero desplazamiento de ubicación no es igual a 0
Mensaje de advertencia:
En wilcox.test.default (x = lot1, y = lot2, alternative = “dos.sided”,: no se puede calcular el valor p exacto con lazos
donde el valor W es la mayor de las dos sumas clasificadas. El valor p reportado de 0.8541 es mayor que nuestro valor crítico para\(\alpha\) de 0.05, lo que significa que no tenemos evidencia que sugiera que existe una diferencia entre los valores medios para los dos métodos. Nota: podemos ignorar el mensaje de advertencia aquí ya que nuestro valor calculado para p es muy grande en relación con un\(\alpha\) de 0.05.
Uso de R para completar un análisis de varianza
Usemos los datos del Ejemplo 7.3.1 para mostrar cómo completar un análisis de varianza en R. Primero, necesitamos crear vectores numéricos individuales para cada tratamiento y luego combinar estos vectores en un solo vector numérico, al que llamaremos recuperación, que contenga los resultados para cada tratamiento.
a = c (101, 101, 104)
b = c (100, 98, 102)
c = c (90, 92, 94)
recuperación = c (a, b, c)
También necesitamos crear un vector de cadenas de caracteres que identifique los tratamientos individuales para cada elemento en la recuperación del vector.
tratamiento = c (rep (“a”, 3), rep (“b”, 3), rep (“c”, 3))
La función R para completar un análisis de varianza es aov ()
, que toma la siguiente forma
aov (fórmula,...)
donde fórmula es una forma de decirle a R que “explique esta variable usando esa variable”. Examinaremos las fórmulas con más detalle en el Capítulo 8, pero en este caso la sintaxis es recuperación ~ tratamiento
, lo que significa modelar la recuperación con base en el tratamiento. En el siguiente código, asignamos la salida de la función aov ()
a una variable para que tengamos acceso a los resultados del análisis de varianza
aov_output = aov (recuperación ~ tratamiento)
a través de la función summary ()
summary (aov_output)
Df Suma Cuadrados Media Sq Valor F Pr (>F)
tratamiento 2 168 84.00 22.91 0.00155 **
Residuales 6 22 3.67
— Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 '' 1
Tenga en cuenta que lo que antes llamamos la varianza entre varianza se identifica aquí como la varianza debida a los tratamientos, y que antes llamamos la varianza interna se identifica como la varianza residual. Como vimos en el Ejemplo 7.3.1, el valor para F exp es significativamente mayor que el valor crítico para F at\(\alpha = 0.05\).
Habiendo encontrado evidencia de que existe una diferencia significativa entre los tratamientos, podemos usar la función TukeyHSD ()
de R para identificar la (s) fuente (es) de esa diferencia (HSD significa Diferencia Honesta Significativa), que toma la forma general
TukeyHSD (x, conf.nivel = 0.95,...)
donde x
es un objeto que contiene los resultados de un análisis de varianza.
TukeyHSD (salida aov_)
Tukey comparaciones múltiples de medias
95% de nivel de confianza familiar
Ajuste: aov (fórmula = recuperación ~ tratamiento)
$tratamiento
diff lwr upr p adj
b-a -2 -6.797161 2.797161 0.4554965
c-a -10 -14.797161 -5.202839 0.0016720
c-b -8 -12.797161 -3.202839 0.0052447
La tabla al final de la salida muestra, para cada par de tratamientos, la diferencia en sus valores medios, los valores inferior y superior para el intervalo de confianza sobre la media, y el valor para\(\alpha\), que en R se enumera como un valor p ajustado, para lo cual podemos rechazar el nulo hipótesis de que las medias son idénticas. En este caso, podemos ver que los resultados para el tratamiento C son significativamente diferentes de ambos tratamientos A y B.
También podemos ver los resultados del análisis de TukeyHSD visualmente pasándolo a la función plot ()
de R.
plot (TukeyHSD (aov_output))