Calculo tamaño de muestra

Author

Dr. Juan Fidel Osuna-Ramos

Published

December 2, 2024

Introducción

El cálculo del tamaño de muestra es una etapa crucial en el diseño de estudios. Cuando deseamos estimar una proporción, debemos considerar:

  1. Nivel de confianza (Zα): Representa la probabilidad de que el intervalo de confianza contenga el valor verdadero. Ejemplo: 95% (( Z = 1.96 )).

  2. Precisión deseada (( e )): Diferencia máxima aceptable entre la proporción estimada y la real.

  3. Proporción esperada (( p )): Estimación inicial basada en literatura o estudios previos.


Ejercicio

En estos ejercicio1, utilizaremos el paquete pwr para calcular el tamaño de muestra necesario para conocer la prevalencia de diabetes en una población, suponiendo que: - Nivel de confianza: 95% - Precisión deseada: 5% - Proporción esperada: 50% (0.5).

Instalación y Configuración de Paquetes

Primero, asegurémonos de instalar y cargar los paquetes necesarios.

pwr

#install.packages("pwr")
library(pwr)


Fórmula para Estimar el Tamaño de Muestra

El cálculo del tamaño de muestra para estimar una proporción se realiza con la fórmula:

Donde:

  • Z: Valor correspondiente al nivel de confianza (e.g., Z=1.96Z = 1.96Z=1.96 para 95%).

  • p: Proporción esperada.

  • e: Precisión deseada.

Aunque el paquete pwr simplifica este cálculo, también lo podemos hacer manualmente paso a paso cómo hacerlo con R.

Cálculo del Tamaño de Muestra

Método 1: Cálculo Manual

Utilizando directamente la fórmula.

# Parámetros
Z <- 1.96  # Nivel de confianza para 95%
p <- 0.5   # Proporción esperada
e <- 0.05  # Precisión deseada (5%)

# Cálculo del tamaño de muestra
n_manual <- (Z^2 * p * (1 - p)) / (e^2)

cat("Tamaño de muestra necesario (método manual):", ceiling(n_manual), "\n")
Tamaño de muestra necesario (método manual): 385 

Método 2: Usar el Paquete pwr

El paquete pwr proporciona una manera intuitiva para calcular el tamaño de muestra utilizando funciones predefinidas.

# Parámetros
h <- 1 * asin(sqrt(p))  # Transformación para la función pwr.p.test

# Usar pwr.p.test para calcular el tamaño de muestra
resultado <- pwr.p.test(h = h, sig.level = 0.05, power = 0.8)

# Tamaño de muestra
n_pwr <- ceiling(resultado$n)

cat("Tamaño de muestra necesario (pwr.p.test):", n_pwr, "\n")
Tamaño de muestra necesario (pwr.p.test): 13 

Paso del paquete pwr

Uso del paquete:

El paquete pwr utiliza una metodología basada en el cálculo del tamaño del efecto (h), definido por:

La función arcsin es una transformación matemática conocida como la transformación angular de Freeman-Tukey o transformación del arco seno. Se utiliza comúnmente en estadísticas para manejar proporciones o probabilidades (p) y mejorar ciertas propiedades de análisis, especialmente en pruebas de hipótesis para proporciones.

Propósito de la transformación arcsin

  1. Normalizar proporciones:

    • Proporciones (p) están restringidas al rango [0, 1], lo que significa que no son simétricas ni normales. Esta transformación convierte las proporciones en un valor que puede aproximarse mejor a una distribución normal, lo cual es útil para cálculos estadísticos.

  1. Estabilizar la varianza:

    • En análisis de proporciones, la varianza tiende a cambiar dependiendo de (es más alta cuando está cerca de 0.5 y más baja cerca de 0 o 1). La transformación arcsin(raizcuadrada de p​) estabiliza la varianza, haciendo que los cálculos sean más consistentes.

    En pruebas de hipótesis para proporciones, como en el cálculo del tamaño de muestra usando pwr.p.test, necesitamos definir el tamaño del efecto hhh para comparar proporciones observadas y esperadas. La transformación arcsin⁡(raizcuadrada de p):

    • Permite comparar proporciones en un espacio donde las diferencias tienen un impacto constante, independientemente de si p está cerca de 0 o de 1.

    • Esto simplifica el cálculo del tamaño de muestra, porque el tamaño del efecto (h) se interpreta como una distancia entre dos proporciones en este espacio transformado.


  1. Tamaño del efecto en pruebas estadísticas:

    • En el contexto de pruebas de hipótesis y cálculos de poder estadístico (como en el paquete pwr), esta transformación es utilizada para definir el tamaño del efecto (h) de una proporción en un marco que considera valores más manejables y simétricos.

  1. Prueba de hipótesis en pwr.p.test:

    • En lugar de simplemente calcular un tamaño de muestra para estimar p, pwr.p.test incluye:

      • El nivel de significancia α, como 0.05 para un 95% de confianza).

      • El poder estadístico (1−β), normalmente 0.8 o 80%).

    • Esto significa que el cálculo considera la probabilidad de detectar un efecto real dado un nivel de confianza y un poder.


Diferencia en resultados:

El cálculo usando pwr.p.test genera un tamaño de muestra más conservador porque incluye:

  • Poder estadístico (1−β1): La capacidad de detectar el efecto real.

  • Tamaño del efecto h: Un enfoque más general que transforma proporciones.


Diferencia de Resultados

  • Cálculo manual:

    • Asume una población infinita y se enfoca únicamente en estimar una proporción con una precisión deseada (eee).

    • No considera poder estadístico.

  • pwr.p.test:

    • Incluye el marco de pruebas de hipótesis y poder estadístico, lo que lleva a un tamaño de muestra más conservador.

    • Este enfoque es más robusto si el estudio requiere pruebas de hipótesis específicas (por ejemplo, comparar proporciones observadas con valores esperados).


Cuándo usar cada método

  1. Método manual:

    • Es adecuado cuando el objetivo es simplemente estimar una proporción dentro de un margen de error específico.

    • Útil para encuestas y estudios descriptivos.

  2. Método con pwr.p.test:

    • Útil para estudios analíticos o experimentales que requieran pruebas de hipótesis.

    • Incluye poder estadístico, asegurando mayor confianza en los resultados.


Introducción

Cuando conocemos el tamaño total de la población, necesitamos ajustar el cálculo del tamaño de muestra. La fórmula para calcular el tamaño de muestra en poblaciones finitas es:

Donde:

  • ( N ): Tamaño de la población.
  • ( Z^2 ): Valor correspondiente al nivel de confianza (e.g., ( Z = 1.96 ) para 95%).
  • ( p ): Proporción esperada.
  • ( q = 1 - p ): Complemento de la proporción.
  • ( d ): Precisión deseada.

En este ejercicio, calcularemos el tamaño de muestra para una población finita con:

  • ( N = 10,000 )
  • Nivel de confianza: 95% (( Z = 1.96 ))
  • Proporción esperada: ( p = 0.05 ) (5%)
  • Precisión deseada: ( d = 0.03 ) (3%).

Cálculo del Tamaño de Muestra

Paso 1: Parámetros Iniciales

Definimos los valores dados en el problema.

# Parámetros
N <- 10000  # Tamaño de la población
Z <- 1.96   # Nivel de confianza para 95%
p <- 0.05   # Proporción esperada (5%)
q <- 1 - p  # Complemento de la proporción
d <- 0.03   # Precisión deseada (3%)

Paso 2: Implementar la Fórmula

Utilizamos la fórmula para calcular el tamaño de la muestra.

# Calcular tamaño de muestra
n <- (N * Z^2 * p * q) / ((d^2 * (N - 1)) + (Z^2 * p * q))

cat("Tamaño de muestra necesario:", ceiling(n), "\n")
Tamaño de muestra necesario: 199 

Visualización de los Resultados

Cómo Varía el Tamaño de Muestra con Diferentes Niveles de Precisión

Creamos un gráfico que muestre cómo el tamaño de muestra cambia con diferentes valores de d (precisión).

# Variar precisión
precisiones <- seq(0.01, 0.1, by = 0.01)
tamaños_muestra <- sapply(precisiones, function(d) {
  (N * Z^2 * p * q) / ((d^2 * (N - 1)) + (Z^2 * p * q))
})

# Crear data frame para el gráfico
datos_grafico <- data.frame(
  Precision = precisiones,
  Tamaño_Muestra = ceiling(tamaños_muestra)
)

# Graficar
library(ggplot2)
ggplot(datos_grafico, aes(x = Precision, y = Tamaño_Muestra)) +
  geom_line(color = "blue", size = 1) +
  geom_point(color = "red") +
  labs(
    title = "Relación entre Precisión y Tamaño de Muestra en Poblaciones Finitas",
    x = "Precisión Deseada (d)",
    y = "Tamaño de Muestra"
  ) +
  theme_minimal()
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.


Reflexión

Puntos Clave

  1. Relación Precisión-Tamaño: El tamaño de muestra crece rápidamente cuando la precisión deseada d es más pequeña.

  2. Impacto del Tamaño Poblacional: A medida que n aumenta, el ajuste por población finita es menos significativo, y el tamaño de muestra se aproxima al cálculo para poblaciones infinitas.


Parámetros Iniciales

Definimos los valores necesarios para el cálculo. En este ejercicio, calcularemos el tamaño de muestra necesario para estudiar la prevalencia de diabetes en una población finita de 15,000 habitantes, con:

  • Seguridad: ( 95 % )

  • Precisión: ( 3% ) (( d = 0.03 ))

  • Proporción esperada: ( p = 0.05 ) (5%)

  • Fórmula:

Donde:

- ( N ): Tamaño de la población (15,000).

- ( Z ): Valor Z para un nivel de confianza del 95% (( Z = 1.96 )).

- ( p ): Proporción esperada. -

( q ): Complemento de ( p ) (( q = 1 - p )). -

( d ): Precisión deseada.

Definimos los valores necesarios para el cálculo.

# Parámetros
N <- 15000  # Tamaño de la población
Z <- 1.96   # Nivel de confianza para 95%
p <- 0.05   # Proporción esperada (5%)
q <- 1 - p  # Complemento de la proporción
d <- 0.03   # Precisión deseada (3%)

# Calcular tamaño de muestra para población finita
n <- (N * Z^2 * p * q) / ((d^2 * (N - 1)) + (Z^2 * p * q))

cat("Tamaño de muestra necesario:", ceiling(n), "\n")
Tamaño de muestra necesario: 201 

Interpretación:

El cálculo muestra que necesitamos estudiar aproximadamente 200 personas para estimar la prevalencia de diabetes en una población de 15,000 habitantes, con un nivel de confianza del 95% y una precisión del 3%.


# Variar precisión
precisiones <- seq(0.01, 0.1, by = 0.01)
tamaños_muestra <- sapply(precisiones, function(d) {
  (N * Z^2 * p * q) / ((d^2 * (N - 1)) + (Z^2 * p * q))
})

# Crear data frame para el gráfico
datos_grafico <- data.frame(
  Precision = precisiones,
  Tamaño_Muestra = ceiling(tamaños_muestra)
)

# Graficar
library(ggplot2)
ggplot(datos_grafico, aes(x = Precision, y = Tamaño_Muestra)) +
  geom_line(color = "blue", size = 1) +
  geom_point(color = "red") +
  labs(
    title = "Relación entre Precisión y Tamaño de Muestra",
    x = "Precisión Deseada (d)",
    y = "Tamaño de Muestra"
  ) +
  theme_minimal()


Tamaño de muestra para estimar una media

Fórmula:

# Parámetros
Z <- 1.96  # Nivel de confianza (95%)
S2 <- 250  # Varianza
d <- 3     # Precisión deseada

# Cálculo del tamaño de muestra
n_manual <- (Z^2 * S2) / (d^2)

cat("Tamaño de muestra (manual):", ceiling(n_manual), "\n")
Tamaño de muestra (manual): 107 

Comparación de dos proporciones

Fórmula:

# Parámetros
Z_alpha <- 1.645  # Nivel de confianza (95%)
Z_beta <- 0.842   # Poder estadístico (80%)
p1 <- 0.7         # Proporción 1
p2 <- 0.9         # Proporción 2
p <- (p1 + p2) / 2  # Promedio de proporciones

# Cálculo del tamaño de muestra
n_manual <- ((Z_alpha * sqrt(2 * p * (1 - p)) + Z_beta * sqrt(p1 * (1 - p1) + p2 * (1 - p2)))^2) / (p1 - p2)^2

cat("Tamaño de muestra (manual):", ceiling(n_manual), "\n")
Tamaño de muestra (manual): 49 
# Instalar pwr si no está instalado
if (!requireNamespace("pwr", quietly = TRUE)) {
  install.packages("pwr")
}
library(pwr)

# Tamaño del efecto para proporciones
h <- ES.h(p1 = p1, p2 = p2)

# Calcular el tamaño de muestra
resultado <- pwr.2p.test(h = h, sig.level = 0.05, power = 0.8)

cat("Tamaño de muestra (con pwr):", ceiling(resultado$n), "\n")
Tamaño de muestra (con pwr): 60 

Usando un Paquete: pwr

# Instalar pwr si no está instalado
if (!requireNamespace("pwr", quietly = TRUE)) {
  install.packages("pwr")
}
library(pwr)

# Tamaño del efecto para proporciones
h <- ES.h(p1 = p1, p2 = p2)

# Calcular el tamaño de muestra
resultado <- pwr.2p.test(h = h, sig.level = 0.05, power = 0.8)

cat("Tamaño de muestra (con pwr):", ceiling(resultado$n), "\n")
Tamaño de muestra (con pwr): 60 

Comparación de dos medias

# Parámetros
Z_alpha <- 1.645  # Nivel de confianza (95%)
Z_beta <- 1.282   # Poder estadístico (90%)
S <- 16           # Desviación estándar
d <- 15           # Diferencia esperada

# Cálculo del tamaño de muestra
n_manual <- (2 * (Z_alpha + Z_beta)^2 * S^2) / (d^2)

cat("Tamaño de muestra (manual):", ceiling(n_manual), "\n")
Tamaño de muestra (manual): 20 

Usando un Paquete: pwr

# Calcular tamaño de muestra para comparación de medias
resultado <- pwr.t.test(d = d / S, sig.level = 0.05, power = 0.9, type = "two.sample")

cat("Tamaño de muestra (con pwr):", ceiling(resultado$n), "\n")
Tamaño de muestra (con pwr): 25 

El paquete pwr también incluye la función pwr.t.test para calcular tamaños de muestra para la comparación de dos medias.

  • Tamaño del efecto d:

# Parámetros
Diferencia <- 15  # Diferencia esperada entre medias
S <- 16           # Desviación estándar
d <- Diferencia / S  # Tamaño del efecto

# Calcular tamaño de muestra
resultado <- pwr.t.test(d = d, sig.level = 0.05, power = 0.9, type = "two.sample")

cat("Tamaño de muestra para comparar dos medias (pwr):", ceiling(resultado$n), "por grupo\n")
Tamaño de muestra para comparar dos medias (pwr): 25 por grupo

  • Los cálculos manuales siguen las fórmulas clásicas.

  • El uso de paquetes como epiDisplay o pwr simplifica el proceso y permite ajustar parámetros como el nivel de confianza y el poder estadístico de forma más flexible.

Resultados del Paquete pwr

  • Estimación de una media: Usamos pwr.t.test con d=e/Sd = e / Sd=e/S.

  • Comparación de dos proporciones: Usamos pwr.2p.test, que calcula directamente tamaños de muestra para pruebas de hipótesis con proporciones.

  • Comparación de dos medias: Usamos pwr.t.test con d=Diferencia esperada/Desviacioˊn estaˊndard = \{Diferencia esperada} / \{Desviación estándard=Diferencia esperada/Desviacioˊn estándar.


¿Qué no cubre pwr directamente?

  • Poblaciones finitas: Necesitamos ajustar manualmente el tamaño de muestra calculado para considerar tamaños de población finitos.

  • Estimación de una media sin prueba de hipótesis: Aunque podemos adaptar el cálculo con pwr.t.test, el paquete está diseñado para pruebas de hipótesis.