Apuntes de R

Apunte 06: Prueba t para una muestra

Author

David Torres Irribarra, Michelle Castillo Sotomayor e Isidora Naranjo López

Published

March 20, 2025

Inferencias usando pruebas t

La prueba t sigue una lógica similar a la prueba Z. La diferencia principal es que ya no utilizamos la distribución normal para determinar la probabilidad de observar ciertos promedios muestrales, sino que utilizamos la distribución t. La distribución t es simétrica en torno a 0, es continua y varía según los grados de libertad, los que se determinan en base al número de casos que incluimos en nuestro análisis.

Recordemos que el estadígrafo t, al igual que el estadígrafo Z, cuantifica la distancia entre el promedio muestral y el promedio poblacional definido en la hipótesis nula. Esta distancia se expresa en unidades de error estándar, lo que nos permite evaluar si la diferencia observada es significativa o podría deberse al azar:

\[ t = \frac{\text{Diferencia de medias}}{\text{Error estándar}} = \frac{\overline{x} - \mu }{E.E.} \]

El numerador representa la diferencia (resta) entre el promedio muestral (x̄) y el promedio poblacional (μ). Luego, esta diferencia se divide por el error estándar.

Prueba t para una muestra

Prueba t para una muestra (“a mano”)

La prueba t para una muestra se usa cuando quiero ver si existe evidencia de que una sola muestra pequeña no proviene de una población con una media determinada y una desviación estándar desconocida.

Usando R, solo necesito 2 cosas para poder llevar a cabo una prueba t de una sola muestra:

  • El promedio poblacional contra el cual realizaré la prueba t (usualmente definido como parte del problema o pregunta que se quiere responder).
  • Los datos de la muestra. En base a estos, R determinará el tamaño de la muestra, los grados de libertad y el promedio de la muestra.

Por ejemplo, si tengo una muestra de 5 mujeres con sus alturas en centímetros: 150, 156, 163, 143, 174; y quiero saber si hay suficiente evidencia para considerar que estas personas provienen de una población distinta a la chilena, en la cual las mujeres tienen una altura promedio de 165.6 centímetros, puedo usar una prueba t.

La prueba t entonces se construye de la siguiente manera:

  1. Elegimos un nivel de confianza para realizar nuestra prueba. En este ejemplo vamos a usar un 90% de confianza, equivalente a un alfa de 0.1.

  2. Construimos la hipótesis nula asumiendo que la media poblacional \(\mu\) de la cual provienen nuestros cinco casos es igual a la media poblacional chilena \(\mu_0\) (el cero que usamos de subíndice se usa para indicar que corresponde a la media de la hipótesis nula) y escribimos esto indicando:

\[ H_o: \mu = \mu_0 \]

o también podemos escribir:

\[ H_o: \mu - \mu_0 = 0 \]

  1. Construimos la hipótesis alternativa, la cual indica lo contrario a la hipótesis nula:

\[ H_a: \mu \neq \mu_0 \]

o también podemos escribir:

\[ H_a: \mu - \mu_0 \neq 0 \]

  1. Calculamos el estadígrafo t, basado en el promedio de nuestros datos:
muestra <- c(150, 156, 163, 143, 174)

# el promedio muestral es nuestro estimador del promedio poblacional mu
mu <- mean(muestra) 

# estamos contrastando con la altura de la población de mujeres en Chile
# esto define la media de nuestra hipótesis nula
mu_0 <- 165.6

# calculado en base a la desviación estándar de la muestra
error_est <- sd(muestra)/sqrt(5)

estad_t <- (mu - mu_0)/error_est

round(estad_t,2)
[1] -1.57
  1. Determinamos la probabilidad de obtener una muestra con un promedio tan extremo o más que el observado, asumiendo que la hipótesis nula es cierta. A esta probabilidad la llamamos valor p (p-value), y en el caso de la prueba t, se calcula utilizando una distribución t con los grados de libertad apropiados (en este caso, 4). Recuerden que, en la prueba t para una muestra, los grados de libertad se obtienen restando 1 al número de casos (n - 1).

  1. Decidimos en base a nuestro nivel de confianza y el valor p: nuestro alfa de 0.1 indicaba que solo rechazaríamos la hipótesis nula si la distancia entre la media muestral y el promedio poblacional se observaba con una probabilidad menor a .1. En este caso podemos ver que la probabilidad de observar una diferencia de |-8.4| o mayor (157.2-165.6) ocurre con una probabilidad de .19 o un 19% de las veces. Por ende, no rechazamos la hipótesis nula.

Prueba t para una muestra (con R)

Afortunadamente, no es necesario hacer estos pasos por separado si usamos R, ya que contamos con el comando t.test que nos permitirá automatizarlos:

muestra <- c(150, 156, 163, 143, 174)

t.test(muestra, mu = 165.6, conf.level = 0.9)

    One Sample t-test

data:  muestra
t = -1.5724, df = 4, p-value = 0.191
alternative hypothesis: true mean is not equal to 165.6
90 percent confidence interval:
 145.8111 168.5889
sample estimates:
mean of x 
    157.2 
# El primer argumento de t.test recibe los datos de la muestra que queremos analizar
# El segundo argumento que usamos, llamado mu, define el promedio poblacional que usamos para definir nuestra hipótesis nula.
# El tercer argumento que usamos, llamado conf.level, define el grado de confianza

En los resultados que arroja R podemos ver todas las piezas de información relevantes:

  1. data: muestra — Nos indica qué datos usamos para hacer el análisis
  2. t = -1.5724 — Nos indica el valor del estadígrafo t que calculamos
  3. df = 4 — Nos indica el número de grados de libertad
  4. p-value = 0.191 — Nos indica la probabilidad de observar una diferencia de media del tamaño observado o mayor asumiendo la hipótesis nula.
  5. alternative hypothesis: true mean is not equal to 165.6 — Declara la hipótesis alternativa nombrando el promedio poblacional que usamos para definir la hipótesis nula.
  6. 90 percent confidence interval: 145.8111 168.5889 — Nos muestra el intervalo de confianza en torno al promedio muestral construido con el nivel de confianza definido al ejecutar la prueba. Podemos ver que este intervalo de confianza incluye el promedio poblacional “165.6”.
  7. mean of x 157.2 — Nos muestra el promedio observado en la muestra.

Ejemplo de prueba t con una muestra: Autoestima

Vamos a estar trabajando con la base de polivictimización, específicamente con la variable de autoestima que está nombrada como “au” (au1, au2, …, au10) en esta base.

Comenzamos con la carga de los datos.

# Cargamos la base de datos
poli <- read.csv("https://david-ti.github.io/introstats/data/datos_poli_2017.csv")

#Visualizamos los primeros valores
head(poli)
   id_i curso sexo edad v01 v02 v03 v04 v05 v06 v07 au1 au2 au3 au4 au5 au6 au7
1 47601     1    1    1   2   2   1   2   2   2   1   5   5   1   5   1   5   5
2 47602     1    1    1   2   2   1   2   2   2   2   5   5   1   5   2   4   4
3 47603     1    2    1   2   2   1   2   2   1   2   4   5   1   5   1   5   5
4 47604     1    1    2   1  NA   2   2   2   1   2   3   2   3   2   2   2   1
5 47605     1    1    1   2   2   2   2   2   2   2   4   4   1   5   2   5   4
6 47606     1    2    1   2   2   2   2   2   1   1   4   4   2   3   4   4   3
  au8 au9 au10 d01 d02 d03 d04 d05 d06 d07 d08 d09 d10 d11 d12 d13 d14 d15 d16
1   1   1    1   3   2   1   1   2   3   2   3   2   1   3   3   2   1   1   2
2   2   2    1   2   2   1   2   2   1   2   3   3   1   2   3   3   1   1   3
3   2   1    1   2   2   1   2   2   3   3   3   3   1   3   3   3   2   1   3
4   5   4    4   2   2   2   1   1   2   1   3   1   1   2   2   2   1   2   2
5   4   2    1   2   2   1   1   3   2   2   3   2   1   2   2   3   2   1   2
6   3   2    3   3   1   1   1   2   2   2   3   3   1   2   2   2   1   1   3
  d17 d18 self dep adm zona      prio comu poli
1   1   2   50   7   1    4 0.1644245  115    2
2   1   2   45   9   1    4 0.1644245  115    2
3   1   2   48   6   1    4 0.1644245  115    2
4   2   3   22  18   1    4 0.1644245  115    2
5   1   2   42  10   1    4 0.1644245  115    2
6   1   2   34   7   1    4 0.1644245  115    2

Autoestima incluye 10 preguntas:

  • AU1 Siento que soy una persona valiosa, al menos igual que los demás

  • AU2 Siento que tengo cualidades positivas

  • AU3 En general, tiendo a sentir que soy un fracaso

  • AU4 Soy capaz de hacer las cosas tan bien como la mayoría de las otras personas

  • AU5 Siento que no tengo mucho de lo que sentirme orgulloso

  • AU6 Tengo una actitud positiva hacia mí mismo

  • AU7 Considerando todas las cosas, estoy satisfecho conmigo mismo

  • AU8 Me gustaría tener más respeto conmigo mismo

  • AU9 Me siento inútil a veces

  • AU10 Algunas veces pienso que no soy bueno en absoluto

Pero, se puede observar que hay preguntas invertidas respecto al resto de la escala. Por lo que, antes de continuar, debemos invertir esas preguntas

#Invertimos los puntajes de aquellas preguntas en donde corresponde
poli$au3i <- (5 + 1)-poli$au3
poli$au5i <- (5 + 1)-poli$au5
poli$au8i <- (5 + 1)-poli$au8
poli$au9i <- (5 + 1)-poli$au9
poli$au10i <- (5 + 1)-poli$au10

Ahora vamos a crear un nuevo objeto que almacene todas las preguntas sobre autoestima (considerando las invertidas).

# Creamos un objeto para almacenar las 10 preguntas
poli$au <- NA
poli$au <- poli[,c("au1","au2","au3i","au4","au5i","au6","au7","au8i","au9i","au10i")]

# Visualizamos el objeto
str(poli$au)
'data.frame':   19684 obs. of  10 variables:
 $ au1  : int  5 5 4 3 4 4 5 5 5 5 ...
 $ au2  : int  5 5 5 2 4 4 5 5 5 5 ...
 $ au3i : num  5 5 5 3 5 4 4 4 3 4 ...
 $ au4  : int  5 5 5 2 5 3 4 5 5 4 ...
 $ au5i : num  5 4 5 4 4 2 5 5 5 5 ...
 $ au6  : int  5 4 5 2 5 4 5 5 5 5 ...
 $ au7  : int  5 4 5 1 4 3 5 5 5 5 ...
 $ au8i : num  5 4 4 1 2 3 1 4 5 2 ...
 $ au9i : num  5 4 5 2 4 4 4 4 5 2 ...
 $ au10i: num  5 5 5 2 5 3 4 3 5 2 ...

El paso siguiente es conseguir la media poblacional “μ” para poder realizar el t test. En este ejemplo, se va a tomar la media del total de los casos como μ para efectos prácticos, ya que, se desconoce la media nacional.

# Calculamos el puntaje de autoestima para cada persona de la base de datos
poli$puntaje_au <- rowSums(poli$au)

# Visualizamos los resultados de la variable
table(poli$puntaje_au)

 10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29 
 16  16  28  26  61  67  69  80 100 103 156 185 227 238 289 362 459 497 560 651 
 30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49 
836 814 853 809 900 865 902 919 868 814 783 636 686 582 517 505 530 280 237 137 
 50 
278 
# Calculos el promedio de todas las personas de la base de datos en la variable autoestima
mu_au <- mean(poli$puntaje_au, na.rm = TRUE)

Hasta ahora estuvimos trabajando con todos los casos de la base. A continuación, vamos a crear una muestra de 500 casos y la vamos a guardar en un objeto llamado ‘poli500’. También se creará la suma de puntajes para la muestra

# Fijamos una semilla para generar simpre la misma submuestra
set.seed(123456789)

# Generamos la submuestra
poli500 <- poli[sample(nrow(poli), 500), ]

# Visualizamos que se almacenaron 500 observaciones
str(poli500)
'data.frame':   500 obs. of  53 variables:
 $ id_i      : int  74330 31427 56728 49822 47702 72011 15014 59619 33426 51306 ...
 $ curso     : int  1 1 5 2 2 3 2 2 3 1 ...
 $ sexo      : int  2 1 2 1 2 1 1 1 2 1 ...
 $ edad      : int  1 2 5 4 3 3 3 2 3 1 ...
 $ v01       : int  2 2 2 2 1 2 2 1 2 1 ...
 $ v02       : int  2 2 2 2 1 2 2 2 2 2 ...
 $ v03       : int  2 2 1 2 NA 1 2 1 2 1 ...
 $ v04       : int  2 2 1 2 NA 2 2 2 2 2 ...
 $ v05       : int  2 2 2 2 NA 2 2 2 2 2 ...
 $ v06       : int  2 2 1 2 NA 2 2 2 1 2 ...
 $ v07       : int  2 2 2 2 2 2 2 2 2 2 ...
 $ au1       : int  NA 5 5 4 4 5 4 2 5 5 ...
 $ au2       : int  NA 3 5 4 4 5 4 2 5 5 ...
 $ au3       : int  NA 3 3 3 4 2 3 3 2 1 ...
 $ au4       : int  NA 4 5 4 4 5 3 2 5 5 ...
 $ au5       : int  NA 2 2 3 4 NA 4 4 2 1 ...
 $ au6       : int  NA 3 4 3 4 5 3 3 5 4 ...
 $ au7       : int  NA 3 4 4 4 5 3 3 5 5 ...
 $ au8       : int  NA 3 3 NA 3 4 4 4 2 1 ...
 $ au9       : int  NA 3 4 4 2 3 4 2 3 1 ...
 $ au10      : int  NA 3 2 4 3 2 4 2 2 1 ...
 $ d01       : int  1 2 1 2 2 2 2 2 2 2 ...
 $ d02       : int  1 2 1 1 2 2 2 1 1 1 ...
 $ d03       : int  1 2 1 1 2 1 2 2 1 1 ...
 $ d04       : int  1 2 1 2 2 1 2 2 1 1 ...
 $ d05       : int  1 1 2 1 2 2 2 1 3 2 ...
 $ d06       : int  2 2 3 3 2 3 2 2 2 3 ...
 $ d07       : int  2 2 3 2 2 2 2 2 2 2 ...
 $ d08       : int  1 3 2 3 2 3 2 3 2 3 ...
 $ d09       : int  1 2 2 3 2 3 2 3 3 3 ...
 $ d10       : int  1 1 1 2 1 1 1 1 1 1 ...
 $ d11       : int  1 2 2 2 2 2 2 2 2 2 ...
 $ d12       : int  1 2 2 2 2 3 3 2 2 3 ...
 $ d13       : int  3 3 3 3 1 3 2 2 3 3 ...
 $ d14       : int  1 2 1 1 1 2 2 1 2 2 ...
 $ d15       : int  1 2 1 2 2 1 2 1 2 1 ...
 $ d16       : int  1 2 2 1 2 1 1 3 3 3 ...
 $ d17       : int  1 2 1 1 2 1 1 1 1 1 ...
 $ d18       : int  1 2 1 2 2 2 2 2 2 1 ...
 $ self      : int  NA 34 39 NA 34 NA 28 27 44 49 ...
 $ dep       : int  16 16 8 12 17 9 16 11 9 5 ...
 $ adm       : int  2 1 1 2 1 2 2 2 1 1 ...
 $ zona      : int  4 3 4 3 2 2 1 4 3 3 ...
 $ prio      : num  0.647 0.54 0.523 0.2 0.746 ...
 $ comu      : int  126 92 149 30 162 163 44 73 116 84 ...
 $ poli      : int  2 2 2 2 NA 2 2 2 2 2 ...
 $ au3i      : num  NA 3 3 3 2 4 3 3 4 5 ...
 $ au5i      : num  NA 4 4 3 2 NA 2 2 4 5 ...
 $ au8i      : num  NA 3 3 NA 3 2 2 2 4 5 ...
 $ au9i      : num  NA 3 2 2 4 3 2 4 3 5 ...
 $ au10i     : num  NA 3 4 2 3 4 2 4 4 5 ...
 $ au        :'data.frame': 500 obs. of  10 variables:
  ..$ au1  : int  NA 5 5 4 4 5 4 2 5 5 ...
  ..$ au2  : int  NA 3 5 4 4 5 4 2 5 5 ...
  ..$ au3i : num  NA 3 3 3 2 4 3 3 4 5 ...
  ..$ au4  : int  NA 4 5 4 4 5 3 2 5 5 ...
  ..$ au5i : num  NA 4 4 3 2 NA 2 2 4 5 ...
  ..$ au6  : int  NA 3 4 3 4 5 3 3 5 4 ...
  ..$ au7  : int  NA 3 4 4 4 5 3 3 5 5 ...
  ..$ au8i : num  NA 3 3 NA 3 2 2 2 4 5 ...
  ..$ au9i : num  NA 3 2 2 4 3 2 4 3 5 ...
  ..$ au10i: num  NA 3 4 2 3 4 2 4 4 5 ...
 $ puntaje_au: num  NA 34 39 NA 34 NA 28 27 44 49 ...

Finalmente realizamos nuestra prueba t con μ = 34.84:

#prueba t para comparar el promedio de la muestra con un promedio que yo le digo
t.test(poli500$puntaje_au, mu = 34.84, conf.level = .95)

    One Sample t-test

data:  poli500$puntaje_au
t = 0.21419, df = 453, p-value = 0.8305
alternative hypothesis: true mean is not equal to 34.84
95 percent confidence interval:
 34.21625 35.61635
sample estimates:
mean of x 
  34.9163 

Y vemos en este caso que no se rechaza la hipótesis nula, por lo que concluiríamos que no existen diferencias estadísticamente significativas entre los puntajes promedio de autoestima de la muestra y los puntajes promedio de autoestima de la población.