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.
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:
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.
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 \]
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 \]
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 mumu <-mean(muestra) # estamos contrastando con la altura de la población de mujeres en Chile# esto define la media de nuestra hipótesis nulamu_0 <-165.6# calculado en base a la desviación estándar de la muestraerror_est <-sd(muestra)/sqrt(5)estad_t <- (mu - mu_0)/error_estround(estad_t,2)
[1] -1.57
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).
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:
data: muestra — Nos indica qué datos usamos para hacer el análisis
t = -1.5724 — Nos indica el valor del estadígrafo t que calculamos
df = 4 — Nos indica el número de grados de libertad
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.
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.
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”.
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 datospoli <-read.csv("https://david-ti.github.io/introstats/data/datos_poli_2017.csv")#Visualizamos los primeros valoreshead(poli)
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 correspondepoli$au3i <- (5+1)-poli$au3poli$au5i <- (5+1)-poli$au5poli$au8i <- (5+1)-poli$au8poli$au9i <- (5+1)-poli$au9poli$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 preguntaspoli$au <-NApoli$au <- poli[,c("au1","au2","au3i","au4","au5i","au6","au7","au8i","au9i","au10i")]# Visualizamos el objetostr(poli$au)
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 datospoli$puntaje_au <-rowSums(poli$au)# Visualizamos los resultados de la variabletable(poli$puntaje_au)
# Calculos el promedio de todas las personas de la base de datos en la variable autoestimamu_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 submuestraset.seed(123456789)# Generamos la submuestrapoli500 <- poli[sample(nrow(poli), 500), ]# Visualizamos que se almacenaron 500 observacionesstr(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 digot.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.