0. INTRODUCCIÓN

En esta práctica se repasan algunos contrastes de hipótesis no paramétricos de una y dos poblaciones

  1. Bondad de ajuste: chi2 de Pearson, KS y KSL
  2. Aleatoriedad: rachas
  3. Cuantiles: signos
  4. Homogeneidad: chi2 de Pearson y KS
  5. Comparación de medianas con datos emparejados: signos y Wilcoxon (rangos con signo)
  6. Comparación de medianas con datos independientes: Wilcoxon-Mann-Whitney

Recuerda que para tener un nivel de significación a lo sumo \(\alpha\), se debe definir el procedimiento: RECHAZAR \(H_0\) si \(p\)-valor MENOR QUE \(\alpha\).

1. CONTRASTES DE BONDAD DE AJUSTE

Son contrastes para decidir entre:

1.1. CONTRASTE DE BONDAD DE AJUSTE CHI-CUADRADO DE PEARSON

  • MUESTRA: datos categóricos o numéricos, siempre que se puedan resumir como tabla de frecuencias del tipo:

\[ \begin{array}{|c||c|c|c|} \hline x_i & x_1 & \cdots & x_k \\ \hline n_i & n_1 & \cdots & n_k \\ \hline \end{array} \]

  • OBSERVACIÓN: dicha tabla de frecuencias se puede obtener de variables numéricas, discreta o continua, convirtiendo intervalos de números en categorías de dicha tabla.
  • CONTRASTE: verificar si el proceso se ajusta o no a un modelo concreto, expresado en forma de tabla de probabilidades

\[ \left\{ \begin{array}{ll} H_0: & X \sim \begin{array}{|c||c|c|c|} \hline x_i & x_1 & \cdots & x_k \\ \hline p_i & p_1 & \cdots & p_k \\ \hline \end{array} \\ H_1: & \text{no } H_0 \end{array} \right. \]

  • FUNCIÓN: chisq.test(x, p)
  • ARGUMENTOS:
    • x: vector con frecuencias de las categorías (tabla de frecuencias).
    • p: vector con probabilidades de las categorías (por defecto uniforme).
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

1.2. CONTRASTE DE BONDAD DE AJUSTE DE KOLMOGOROV-SMIRNOV

  • MUESTRA: datos numéricos, de variable continua (no se permite coincidencias en la muestra).
  • CONTRASTE: verificar si el proceso se ajusta o no a un presunto modelo concreto, expresado con su función de distribución acumulada \(F_0(x)\),

\[ \left\{ \begin{array}{ll} H_0: & F_X = F_0 \\ H_1: & F_X \neq F_0 \end{array} \right. \]

  • FUNCIÓN: ks.test(x, y)
  • ARGUMENTOS:
    • x: vector con datos de la muestra.
    • y: nombre (entrecomillado) de la función \(F_0\) (según esté programada en R).
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

1.3. CONTRASTE DE NORMALIDAD DE LILLIEFORS

  • MUESTRA: datos numéricos , de variable continua.
  • CONTRASTE: verificar si el proceso se ajusta o no a un modelo normal (sin importar los parámetros).

\[ \left\{ \begin{array}{ll} H_0: & X \text{ sigue un modelo normal} \\ H_1: & X \text{ no sigue ningún modelo normal} \end{array} \right. \]

  • FUNCIÓN: lillie.test(x) del package nortest. Hay que (instalar y) cargar el paquete desde el menú.
  • ARGUMENTOS:
    • x: vector con datos de la muestra.
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

2. CONTRASTES DE ALEATORIEDAD

Asumimos que tenemos una variable aleatoria \(X\) de la que se ha extraído “secuencialmente” una muestra. Todos los datos se han obtenido de \(X\), pero no sabemos si esos datos son independientes entre sí.

Son contrastes para decidir entre:

2.1. CONTRASTE DE RACHAS

Una racha es algo que se puede definir de varias formas:

  • una serie de datos por encima (o por debajo) de la mediana,
  • una serie de datos en ascenso (o descenso), etc.

Cuando hay verdadera aleatoriedad, no es habitual que haya rachas muy largas, ni tampoco que haya muchas rachas muy cortas. El “número de rachas” es el estadístico “sensible” a que la muestra sea aleatoria.

Los datos numéricos se tranforman en signos (según el criterio elegido), y los signos permiten contar las rachas (cada cadena máxima de signos iguales es una racha).

  • MUESTRA: 1 variable, datos numéricos, que se transforman en signos
  • CONTRASTE: verificar si las rachas que se han formado son creíbles o no bajo la hipótesis de aleatoriedad (independencia)

\[ \left\{ \begin{array}{ll} H_0: & \text{datos aleatorios, independientes entre sí} \\ H_1: & \text{datos con cierta dependencia entre sí, no aleatorios} \end{array} \right. \]

  • FUNCIÓN: runs.test(x) del package ‘tseries’.
  • ARGUMENTOS:
    • x: vector con los “signos”.
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.
  • ¡ATENCIÓN!: usa aproximación normal incluso cuando no se debe (sólo conveniente para muestras con más de 20 signos de cada tipo)

3. CONTRASTE DE CUANTILES: signos

Si \(X\) expresa una variable aleatoria, su cuantil de orden \(p_0\) se representa por \(X_{p_0}\).

\[ \left\{ \begin{array}{ll} H_0: & X_{p_0} = x_0 \\ H_1: & X_{p_0} (\neq, <, >) x_0 \end{array} \right. \]

4. CONTRASTES DE HOMOGENEIDAD

Son contrastes para decidir si 2 ó mas poblaciones mantienen la misma distribución (variable aleatoria) o no.

4.1. CONTRASTE DE HOMOGENEIDAD CHI-CUADRADO DE PEARSON

Se aplica sobre las tablas de frecuencias de las muestras, por lo que deben ser cualitativas, o si no, agrUparse los datos en intervalos, para poder hacer las tablas de frecuencias.

  • MUESTRA: varias variables cualitativas, cada una en un vector, o resumidas en tablas de frecuencias.
  • CONTRASTE:

\[ \left\{ \begin{array}{ll} H_0: & \text{misma distribución para todas} \\ H_1: & \text{no } H_0 \end{array} \right. \]

  • FUNCIÓN: chisq.test(x, y).
  • ARGUMENTOS:
    • x: puede ser una matriz con las tablas de frecuencias pegadas, o un vector con los datos de la primera variable.
    • y: nada (por defecto), si ‘x’ lo tiene todo, o los datos de la segunda variable.
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

4.2. CONTRASTE DE HOMOGENEIDAD DE KOLMOGOROV-SMIRNOV

Se aplica sobre 2 poblaciones numéricas independientes.

  • MUESTRA: 2 variables, datos numéricos independientes.
  • CONTRASTE: decidir si ambas poblaciones siguen la misma ley de probabilidad

\[ \left\{ \begin{array}{ll} H_0: & F_X = F_Y \text{ (es decir, misma distribución)} \\ H_1: & \text{no } H_0 \end{array} \right. \]

  • FUNCIÓN: ks.test(x, y)
  • ARGUMENTOS:
    • x: vector con datos de una muestra.
    • y: vector con datos de la otra muestra.
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

5. COMPARACIÓN DE MEDIANAS CON DATOS EMPAREJADOS: signos y Wilcoxon (rangos con signo)

5.1. CONTRASTE COMPARACIÓN MEDIANAS DATOS EMPAREJADOS (SIGNOS)

  • MUESTRA: 2 variables, datos ordinales emparejados, o recuento de comparaciones (signos) entre los datos.
  • CONTRASTE:

\[ \left\{ \begin{array}{ll} H_0: & \text{Me}_X = \text{Me}_Y \\ H_1: & \text{Me}_X (\neq, <, >) \text{Me}_Y \end{array} \right. \]

  • FUNCIÓN: binom.test(x, n, p, alternative).
  • ARGUMENTOS:
    • x: recuento de comparaciones + (datos que de la primera a la segunda población aumentan).
    • n: número de parejas de datos.
    • p: dejar por defecto, \(0.5\).
    • alternative: dirección de \(H_1\) (two.sided por defecto para \(\neq\), y atención a less para \(>\) o greater para \(<\)).
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

5.2. CONTRASTE COMPARACIÓN MEDIANAS DATOS EMPAREJADOS (RANGOS CON SIGNO)

  • MUESTRA: 2 variables, datos numéricos emparejados, o diferencias numéricas calculadas entre los datos.
  • CONTRASTE:

\[ \left\{ \begin{array}{ll} H_0: & \text{Me}_X = \text{Me}_Y \\ H_1: & \text{Me}_X (\neq, <, >) \text{Me}_Y \end{array} \right. \]

  • FUNCIÓN: wilcox.test(x, y, alternative, paired).
  • ARGUMENTOS:
    • x: datos de 1 muestra, o ya las diferencias (si no se pone nada en y).
    • y: datos de la otra muestra (o nada si van las diferencias en x).
    • paired: poner a TRUE (ya que por defecto está a FALSE).
    • alternative: dirección de \(H_1\) (two.sided por defecto para \(\neq\), y atención a less para \(>\) o greater para \(<\)).
  • DEVUELVE: una lista con valores, entre los que destaca el p.value, base de la decisión del contraste.

6. CONTRASTE COMPARACIÓN MEDIANAS DATOS INDEPENDIENTES (RANGOS CON SIGNO)

\[ \left\{ \begin{array}{ll} H_0: & \text{Me}_X = \text{Me}_Y \\ H_1: & \text{Me}_X (\neq, <, >) \text{Me}_Y \end{array} \right. \]

7. EJERCICIOS EVALUABLES

Se deben contestar respondiendo a lo que se pregunta con palabras relativas al enunciado (prohibido mencionar \(H_0\) o \(H_1\) en las respuestas finales).

Carga el espacio de trabajo mt1021-1415-labo-s1-data.RData. En él están definidas ciertas variables para resolver los ejercicios

7.1. Simula 50 datos de un dado imperfecto definido por la tabla

  X        1    2    3    4    5    6
  f(X)  0.15 0.13 0.20 0.15 0.17 0.20

y luego contrasta si esa muestra es compatible con un dado perfecto, comentando el resultado, refiriendo al nivel de significación que se pueda utilizar. Usa alguna semilla para la simulación.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.2. Averigua si los datos de la variable ‘x72’ son compatibles con el modelo de Poisson de media 2.5, comentando el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.3. Simula 30 datos del modelo uniforme en el intervalo (0,1) y luego contrasta si esa muestra es compatible con el modelo normal de media 0.5 y varianza 0.25, comentando el resultado, refiriendo al nivel de significación que se pueda utilizar. Usa alguna semilla para la simulación.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.4. Contrasta si los datos de la variable ‘x74’ son compatibles con el modelo normal de media 5 y varianza 1, comentando el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.5. En caso de incompatibilidad en el ejercicio anterior, ¿se podría admitir al menos que los datos de la variable ‘x74’ son compatibles con el modelo normal? Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.6. Sospechando sobre la falta de independencia entre las observaciones sucesivas de una variable aleatoria, se compara cada dato con el anterior, dando lugar a la cadena de signos de la variable ‘x76’. Realiza un contraste que arroje luz sobre este asunto. Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.7. La mediana de la distribución de salarios en España se suponía de 650 EUR. Se sospecha que con la crisis ha disminuido. Se muestrea la población resultando los datos de la variable ‘x77’. Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.8. Contrasta si las distribuciones de usuarios de Windows, Linux y Mac son prácticamente la mismas en los grados A, B, C y D de la UJI. Los datos, para cada grado, vienen en la variables ‘x78A’, ‘x78B’, ‘x78C’ y ‘x78D’ respectivamente. Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.9. Contrasta si se puede asumir o no que los datos de dos grupos de población A y B, muestreados y almacenados en las variables ‘x79A’ y ‘x79B’, siguen la misma distribución de probabilidad o no. Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.10. Un grupo de personas prueba dos versiones de una pizza que la empresa fabricante quiere comercializar (A y B). Para determinar si hay alguna de las dos que es fuertemente preferida sobre la otra, pide que cada uno se pronuncie sobre la que le ha gustado más. Los resultados están en la variable ‘x710’. La pizza A es la que se comercializa actualmente, y la B es una variante para sustituir a la A, si es sensiblemente mejor para el público ¿Qué resulta de la prueba experimental? Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.11. Un grupo de personas prueba dos versiones de una pizza que la empresa fabricante quiere comercializar (A y B). Para determinar si hay alguna de las dos que es fuertemente preferida sobre la otra, pide que cada uno valore su calidad de 0 a 10. Los resultados están en la variable ‘x711’. La pizza A es la que se comercializa actualmente, y la B es una variante para sustituir a la A si es sensiblemente mejor para el público ¿Qué resulta de la prueba experimental? Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

7.12. Un grupo de personas se divide en dos subgrupos, cada uno de los cuales está destinado a probar una versión de pizza que la empresa fabricante quiere comercializar (A y B). Para determinar si hay alguna de las dos que es fuertemente preferida sobre la otra, pide que cada uno valore su calidad de 0 a 10. Los resultados están en las variables ‘x712A’ y ‘x712B’. La pizza A es la que se comercializa actualmente, y la B es una variante para sustituir a la A si es sensiblemente mejor para el público ¿Qué resulta de la prueba experimental? Comenta el resultado, refiriendo al nivel de significación que se pueda utilizar.

# Escribe aquí tu codigo y compila con RStudio CTRL+SHIFT+K
# verás la salida de R

8. EJERCICIO PARA “LUMBRERAS”

8.1. Implementa una función que realice el contraste de aleatoriedad (por rachas) para muestras pequeñas, según la estructura que se propone

runs.test = function(x, type='median') {
# Argumentos:
#   x: vector de datos numéricos o signos
#   type: forma de obtener los signos a partir de los datos
#         "median" por comparación con mediana (por defecto)
#         "trend" por comparación de cada dato con el anterior
#         si `x` son signos ya no hay que hacer caso a `type`
# Devuelve: el número de rachas y su p-valor

# bloque 1: comprobar si `x` son signos o números
# bloque 2: construir cadena de signos (si procede)
# bloque 3: calcular número de rachas
# bloque 4: calcular su p-valor. Si hay más de 20 signos de 
#           cada tipo, usar aprox. normal (busca fórmula en teoría)
#           y si no, la distribución exacta (busca fórmula en teoría)
# Al final:
#   return(list(R=, p.value=))
#     donde `R` es el valor del estadístico y
#     `p.value` su p-valor
}