Ayudantía 6: Estimación e Intervalo de Confianza

Entendiendo el Intervalo de confianza

Recordemos por milésima vez la fórmula del error estándar:

\[ E.E. = \frac{σ}{ \sqrt{n}} \]

Dada la distribución normal de la distribución muestral y el conocimiento de las proporciones bajo la curva en toda distribución normal podemos entonces predecir qué proporción de las muestras incluirá al promedio poblacional cuando se construye un intervalo basado en un grado de confianza.

\[ x̅-z*\frac{σ}{ \sqrt{n}} \]

\[ x̅+z*\frac{σ}{ \sqrt{n}} \]

Veamos esto para comprenderlo más. Para ello, instalemos el paquete “Teaching Demos”:

install.packages(“TeachingDemos”) library(TeachingDemos) library(psych) library(summarytools)

Con la función ci.examp podremos crear simulaciones para ver muestras azarosas y ver si estas contienen o no al parámetro poblacional. Generaremos una semilla, para que a todos nos salga el mismo gráfico!!

set.seed(2024) ci.examp(reps = 20, n = 25, conf.level = 0.95) #el argumento es el siguiente: #reps: numero de muestras a visualizar #n: tamaño muestral #conf.level: grado de confianza

Al ver el gráfico anterior, se puede ilustrar cómo en un grado de 95% de confianza, 19 de las muestras capturan el promedio poblacional y solo 1, la número 20, no lo captura.

Veamos qué ocurre con un nivel de confianza inferior:

set.seed(2024) ci.examp(reps = 20, n = 25, conf.level = 0.5)

Ahora, veamos qué ocurre con un 99% de confianza…

set.seed(2024) ci.examp(reps = 100, n = 25, conf.level = 0.99)

Solo 1 de las 100 muestras no es capturado en el promedio poblacional. Sin embargo, podemos ver que nuestros intervalos de confianza son bastante grandes, abarcando un rango de aproximadamente 10 puntos.

¿Cómo lo reducimos?

Para poder hacerlo, recordemos nuestra fórmula de error estándar

\[ \frac{σ}{ \sqrt{n}}\]

Si queremos disminuir dicho valor, debemos aumentar nuestro tamaño muestral.

set.seed(2024) ci.examp(reps = 100, n = 100, conf.level = 0.99)

La desviación estándar poblacional se divide por la raíz cuadrada del tamaño muestral, necesitamos un aumento de 4 veces el tamaño muestral para reducir a la mitad el error estándar. ¿qué tamaño muestral necesitaríamos si queremos llegar a un intervalo de confianza de 2.5 puntos?

Calculando el Intervalo de confianza

Como vimos anteriormente, el intervalo de confianza se estima identificando un margen de error en torno a un estimador puntual. Es decir:

Limites = Estimador puntual ± Valor Z para un grado de confianza × Error Estándar

Probemos en un ejercicios

Si se nos dice que a partir de una población tiene un promedio μ = 300 y una desviación estándar σ=20 se obtiene una muestra de 25 personas con una media x̅=250 y una desviación estándar s=18… ¿Cómo se calcularía un intervalo de confianza al 95% del promedio poblacional?

#Guardemos los datos que utilizaremos
desv.p = 20
n = 25
media.m <- 100

#Calculemos el valor Z para un 95%. Para ello hay dos formas: 
Z <- abs( qnorm((1 - .95)/2) )
Z.v2 <- qnorm(1-0.025)

#Ahora, calculemos el error estándar
error_est <- desv.p/sqrt(n)

#Finalmente, los límites de confianza

lim_inferior <- media.m - ( Z * error_est )
lim_superior <- media.m + ( Z * error_est )

round(c(lim_inferior, lim_superior),2)
## [1]  92.16 107.84

Borremos el enviroment, para que no se vuelva engorroso!

Desde una base de datos.

Trabajemos con la base de Iris:

data(iris)
View(iris)

Veamos cual es el intervalo de confianza para la longitud del petalo. Para ello, encontremos los datos que necesitamos:

#Tamaño muestral
n.pet <-nrow(iris) 

media.pet <- mean(iris$Petal.Length)
desv.pet <- sd(iris$Petal.Length)
Z <- abs( qnorm((1 - .95)/2) )#Redordemos que ya calculamos nuestro valor crítico asociado 

#Ahora, calculemos el error estándar para la media de la longitud del pétalo
error_est.pet <- desv.pet/sqrt(n.pet)

#Finalmente, los límites de confianza para la media de la longitud del pétalo:

lim_inferior.pet <- media.pet - ( Z * error_est.pet )
lim_superior.pet <- media.pet + ( Z * error_est.pet )

round(c(lim_inferior.pet, lim_superior.pet),2)
## [1] 3.48 4.04
c(lim_inferior.pet,lim_superior.pet)
## [1] 3.475499 4.040501

Recuerden que incluso pueden hacerlo con un intervalo de confianza a un 99%, trabajando con el valor crítico de Z asociado a ese porcentaje.

###Comprobemos la información Una forma de comprobar los intervalos de confianza, es mediante la función z.test, del paquete BSDA

install.packages(“BSDA”) library(BSDA) z.test(iris\(Petal.Length, sigma.x = desv.pet, conf.level = 0.95)\)conf.int

Listo!!! Pudimos comprobar nuestros intervalos de confianza!!

Muestras pequeñas

Recordemos que para muestras menores a 30, lo que debemos hacer cambia. Para ello, en vez de la distribución z, utilizamos la distribución t para poder controlar el error. Con esto, recordemos la fórmula del intervalo de confianza para este tipo de muestras:

\[x̅±tdf∗\frac{s}{ \sqrt{n}}\]

y, recordemos que para calcular el valor a t, debemos saber los grados de libertad:

\[ df=n−1 \]

Intentemoslo generando una submuestra de 15 casos!

library(splitstackshape)
submuestra_peque <- stratified(iris, group="Species",size=.10)

Yap, ahora generemos los datos a utilizar para un intervalo de confianza de un 95% de la variable que hemos estado utilizando (longitud del pétalo).

#El primer elemento que necesitamos guardar, es la media:
media.subm <- mean(submuestra_peque$Petal.Length)
#Veamos los datos que necesitamos para el error estándar
desv.subm <- sd(submuestra_peque$Petal.Length)
n_subm <- nrow(submuestra_peque)
#Error estándar asociado:
e.e.subm <- desv.subm/sqrt(n_subm)

#Ahora, lleguemos al valor de t asociado con dicho nivel de confianza
df.subm <- nrow(submuestra_peque) -1
t.95 <- qt(1-0.025, df = df.subm) 
t.95 #El valor t asociado es 2.14
## [1] 2.144787

Listo! hemos calculado todos los valores que necesitamos. Ahora, veamos nuestro intervalo de confianza!

lim_inf.subm <- media.subm - t.95*e.e.subm
lim_sup.subm <- media.subm + t.95*e.e.subm

round(c(lim_inf.subm, lim_sup.subm),2)
## [1] 2.73 4.68

Comprobémslo con la función t.test!!

t.test(submuestra_peque$Petal.Length, conf.level = 0.95)$conf.int
## [1] 2.728389 4.684944
## attr(,"conf.level")
## [1] 0.95

Podemos ver que los valores coinciden!!!!

Proporciones

Si en vez de un promedio de valores, queremos calcular el promedio de una proporción, la formula que usamos varía solo en la forma en la que calculamos el error estándar. Tanto en el calculo anterior, como en el que veremos a continuación, la estructura del intervalo de confianza es igual (Estimador de punto ± margen de error).

Veamos la nueva fórmula del error estándar :

\[ E.E. proporción = \sqrt{\frac{p*(1-p)}{n}} \]

Consideremos entonces, la nueva fórmula del error estándar!!

Limites = Proporción ± Valor Z para un grado de confianza × Error Estándar de una proporción

Apliquémoslo a ejemplos:

De la población de estudiantes universitarios en la PUC, se obtiene una muestra de 300 personas, de las cuales 210 dicen ser swifties ¿Cómo se calcularía un intervalo de confianza al 95% de la proporción poblacional?

# Datos relevantes
n_puc = 300
n_swifties = 210
p_swifties <- 210/300

# Calcular el valor Z para un 95%, que ya lo hemos hecho anteriormente...

Z <- abs( qnorm((1 - .95)/2) )

# Calcular error estándar basado en la proporción de personas swifties
error_swiftie <- sqrt( (p_swifties * (1 - p_swifties)) / n_puc)

lim_in_swiftie <- p_swifties - ( Z * error_swiftie )
lim_sup_swiftie <- p_swifties + ( Z * error_swiftie )

# Intervalo de confianza al 95% redondeado
round(c(lim_in_swiftie, lim_sup_swiftie),2)
## [1] 0.65 0.75
## 0.65 0.75

#comrpobemos!!!
prop.test(c(n_swifties,0), c(n_puc,n_puc), conf.level = 0.95, correct = FALSE)$conf.int
## [1] 0.6481442 0.7518558
## attr(,"conf.level")
## [1] 0.95

Desde una base de datos

Veamos ahora con la proporción de flores que son de la especie setosa. Busquemos el IC del largo del pétalo con un 97% de confianza

#Calculemos los n que necesitamos para calcular proporciones:
n_setosa <- nrow(subset(iris, Species == "setosa")) 
#recordemos utilizar el codigo subset si es que queremos seleccionar parte de la muesta
n_iris <- nrow(iris)
p_setosa<- n_setosa/n_iris

#Ahora, analicemos el error estándar de esta proporción

e.e_setosa <- sqrt(p_setosa*(1-p_setosa)/n_iris)

#Valor Z asociado al 97%
z.97 <- qnorm(1-0.015)

Una vez con todos nuestros valores, calculemos los intervalos de confianza:

li_setosa <- p_setosa - z.97*e.e_setosa
ls_setosa <- p_setosa+ z.97*e.e_setosa

round(c(li_setosa, ls_setosa),2)
## [1] 0.25 0.42
#0.25 a 0.42

#y comprobemos
prop.test(c(n_setosa,0), c(n_iris,n_iris), conf.level = 0.97, correct = FALSE)$conf.int
## [1] 0.2498065 0.4168602
## attr(,"conf.level")
## [1] 0.97

PARÉNTESIS DE COMPRENSIÓN DE LA FÓRMULA

Veamos si con todo lo que han visto, podemos entender la fórmula. Probemos lo que pasa con los intervalos que sacamos de la longitud del pétalo

#Tamaño muestral
n.pet #150
## [1] 150
media.pet # 3.758
## [1] 3.758
desv.pet # 1.765298
## [1] 1.765298
Z #Redordemos que ya calculamos nuestro valor crítico asociado 
## [1] 1.959964
#Ahora, calculemos el error estándar para la media de la longitud del pétalo
error_est.pet # 0.144136
## [1] 0.144136
#los límites de confianza para la media de la longitud del pétalo:

round(c(lim_inferior.pet, lim_superior.pet),2)
## [1] 3.48 4.04
#El intervalo de confianza de un 95%, para la media de la longitud del pétalo corresponde de 3.48 a 4.04. 

Al ver este intervalo, modifiquemos los diferentes componentes, para ver cómo este varía:

Cambiando el valor crítico

#Con un intervalo de un 99%
z.99 <- abs( qnorm((1 - .99)/2) ) #2.58

lim_inferior_a <- media.pet - ( z.99 * error_est.pet )
lim_superior_a <- media.pet + ( z.99 * error_est.pet)

round(c(lim_inferior_a, lim_superior_a),2)
## [1] 3.39 4.13
#El nuevo intervalo es 3.39 a 4.13. Más grande!

#Con un intervalo de un 85%
z.85 <- abs( qnorm((1 - .85)/2) ) #1.44

lim_inferior_b <- media.pet - ( z.85 * error_est.pet )
lim_superior_b <- media.pet + ( z.85 * error_est.pet)

round(c(lim_inferior_b, lim_superior_b),2)
## [1] 3.55 3.97
#Mucho más acotado: 3.55 a 3.97

Valor de n

#Primero, hagamos un n más pequeño
iris_peque <- stratified(iris, group="Species",size=.50)

#Tamaño muestral
n.pet1 <-nrow(iris_peque) # 75


media.pet1 <- mean(iris_peque$Petal.Length) #3.77
desv.pet1 <- sd(iris_peque$Petal.Length) #1.76
Z #Redordemos que ya calculamos nuestro valor crítico asociado 
## [1] 1.959964
#Ahora, calculemos el error estándar para la media de la longitud del pétalo 

error_est.pet1<- desv.pet1/sqrt(n.pet1) # 0.20

#Finalmente, los límites de confianza para la media de la longitud del pétalo:

lim_inferior_c <- media.pet1 - ( Z * error_est.pet1 )
lim_superior_c <- media.pet1 + ( Z * error_est.pet1 )

round(c(lim_inferior_c, lim_superior_c),2)
## [1] 3.34 4.12
#Error estándar más grande, intervalo más ancho 3.38 a 4.17

Recuerden que con el aumento de la desviación estándar, también aumenta!!!!

Eso! ahora eliminemos el enviroment que se los dejé lleno, y terminamos <3333