Teoría

1

Inferencia Estadística: Fundamentos y Aplicaciones con Simulación en R

2

Valor Esperado Condicional en Ciencia de Datos

3

Poblaciones y Muestras: Conceptos y Generalización Estadística

4

Muestreo Probabilístico y No Probabilístico: Métodos y Aplicaciones

5

Estimadores y Parámetros en Ciencia de Datos

6

Estimación Paramétrica y No Paramétrica en Ciencia de Datos

7

Gráficos y Espacio de Parámetros en Modelos Estadísticos

8

Estimadores Puntuales y su Comportamiento Aleatorio

9

Intervalos de Confianza: Cálculo y Significado en Estadística

10

Tamaño Muestral y su Impacto en la Precisión Estadística

11

Sesgo y Varianza en Ciencia de Datos: Precisión y Exactitud

12

Teoría No Paramétrica: Estimación y Modelos Aplicados

13

Estimación Funcional: Kernel y Funciones de Densidad Acumulada

14

Estimación Funcional del Valor Esperado Condicional

15

Inferencia Estadística con Bootstrapping para Modelos Paramétricos

16

Validación Cruzada y Generalización de Modelos Estadísticos

17

Pruebas de Hipótesis: Conceptos y Aplicaciones Estadísticas

18

Pruebas de Hipótesis: P Valor y Significancia Estadística

Simulación

19

Simulación de Datos con R: Teoría a la Práctica

20

Instalación de R y RStudio en Windows, macOS y Ubuntu

21

Simulación de Datos en R: Distribuciones y Modelos Lineales

22

Simulación de Estimación de Parámetros usando R

23

Simulación de Intervalos de Confianza para Poblaciones Normales

24

Simulación de Convergencia de Estimadores con Diferentes Tamaños Muestrales

25

Estimación Kernel y Distribución Acumulada Empírica

26

Estimación Condicional con Redes Neuronales en R

27

Estimación Kernel: Aplicación en Distribución Uniforme y Normal

28

Boostrapping en R para Regresión Lineal: Implementación y Análisis

29

Validación cruzada en redes neuronales usando R

30

Simulación de Potencia en Pruebas de Hipótesis con R

Proyecto

31

Análisis Estadístico del Examen Saber Once con R

32

Estimación de Intervalos de Confianza para Comparar Poblaciones con y sin Internet

33

Pronóstico de Puntaje en Matemáticas con Redes Neuronales

34

Generalización de Redes Neuronales a Poblaciones Completas

35

Análisis de Tamaño Muestral Óptimo para Redes Neuronales

36

Interpretación de Redes Neuronales en Predicción Educativa

Conclusiones

37

Programación Dinámica y Estocástica en Simulación

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Simulación de Convergencia de Estimadores con Diferentes Tamaños Muestrales

24/37
Recursos

¿Cómo afecta el tamaño muestral a la convergencia de los estimadores en R?

Explorar el impacto del tamaño muestral en la convergencia de estimadores hacia parámetros poblacionales es una parte esencial de la estadística y la ciencia de datos. Este enfoque nos permite evaluar la precisión y la eficacia de nuestras estimaciones. En este contenido, te llevaré paso a paso por el proceso de simulación y análisis, utilizando software estadístico R, para visualizar cómo los estimadores se comportan a medida que cambia el tamaño de la muestra.

¿Cómo configuramos la simulación en R?

Para comenzar con la simulación, es crucial establecer ciertos parámetros iniciales:

  1. Tamaño Muestral Máximo: Determina el número máximo de datos en cada muestra (por ejemplo, 500).
  2. Número de Iteraciones: Un parámetro clave que decide cuántas veces se realizarán los cálculos para asegurar resultados consistentes (habitualmente 100 iteraciones).
  3. Media y Desviación Estándar Poblacional: Estos valores (por ejemplo, media = 5, desviación estándar = 3) sirven para definir la distribución de nuestros datos simulados.
  4. Vector de Tamaños Muestrales: Una secuencia que irá desde un tamaño muestral mínimo, por ejemplo, 10, hasta el tamaño muestral máximo. La longitud del vector será igual al número de iteraciones.
tamaño_muestral_maximo <- 500
numero_iteraciones <- 100
media_poblacional <- 5
desviacion_estandar_poblacional <- 3
tamaños_muestrales <- seq(10, tamaño_muestral_maximo, length.out = numero_iteraciones) %>% floor()

Estos elementos iniciales permiten establecer una base sólida para la simulación, asegurando que todos los pasos siguientes se puedan realizar de manera efectiva y sin complicaciones.

¿Cómo inicializamos vectores para el análisis?

Una vez que se establece la estructura de la simulación, necesitamos vectores para guardar los resultados del análisis, incluyendo:

  • Desviación estándar estimada.
  • Media estimada.
  • Diferencia cuadrática de la media.
  • Diferencia cuadrática de la desviación estándar.
desviacion_estimada <- vector("numeric", numero_iteraciones)
media_estimada <- vector("numeric", numero_iteraciones)
diferencia_cuadratica_media <- vector("numeric", numero_iteraciones)
diferencia_cuadratica_desviacion <- vector("numeric", numero_iteraciones)

Estos vectores actuarán como receptores de los valores calculados durante cada iteración. De este modo, podemos almacenar y analizar los datos fácilmente.

¿Cómo implementamos el cálculo iterativo en un bucle for?

A continuación, pasamos al cálculo iterativo. Utilizamos un bucle for para recorrer el número de iteraciones y calcular los estimadores para cada tamaño de muestra:

for (i in 1:numero_iteraciones) {
    muestra <- rnorm(tamaños_muestrales[i], mean = media_poblacional, sd = desviacion_estandar_poblacional)
    media_estimada[i] <- mean(muestra)
    desviacion_estimada[i] <- sd(muestra)
    
    diferencia_cuadratica_media[i] <- (media_poblacional - media_estimada[i])^2
    diferencia_cuadratica_desviacion[i] <- (desviacion_estandar_poblacional - desviacion_estimada[i])^2
}

Este bucle es crucial, ya que permite que las simulaciones se realicen automáticamente, lo cual es eficiente y evita errores manuales. La estimación de la media y desviación estándar para cada muestra, así como el cálculo de sus diferencias cuadráticas, son pasos fundamentales para analizar la convergencia.

¿Qué revelan los gráficos sobre la convergencia?

El siguiente paso es utilizar gráficos para visualizar los resultados, lo cual ofrece una perspectiva clara de cómo los estimadores convergen hacia los valores reales a medida que el tamaño muestral aumenta.

  1. Gráfico de Media Estimada vs Tamaño Muestral:

    • Se observa que la media estimada se aproxima al valor real a medida que aumentamos el tamaño muestral.
    • Utilizamos una línea horizontal para indicar la media poblacional y resaltar la convergencia visualmente.
  2. Gráfico de Diferencia Cuadrática de la Media:

    • La diferencia cuadrática disminuye, demostrando que la precisión del estimador mejora con muestras más grandes.
  3. Comportamiento de la Desviación Estándar:

    • Observamos patrones similares para la desviación estándar, confirmando la tendencia de convergencia.

Cuando aumentamos el tamaño muestral a valores mayores, como 5000, notamos que la convergencia es más clara y las diferencias cuadráticas se estabilizan, lo que indica que un tamaño muestral de alrededor de 3000 podría ser suficiente para ciertas estimaciones.

Construir y analizar estos gráficos nos ayuda a comprender mejor cómo el tamaño muestral afecta a la efectividad de nuestras estimaciones en estadística y análisis de datos mediante R. Adentrarse en estas prácticas añade un valor significativo a la intuición estadística, fundamental en cualquier análisis de datos avanzado.

Aportes 6

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

# Podemos ver que el tamaño muestral presenta rendimientos decreci --------


# Distribución normal -----------------------------------------------------

tamano_muestral_max <- 500
iteraciones <- 100
media_poblacional <- 5
desv_est_poblacional <- 3
tamano_muestral <- floor(seq(10, tamano_muestral_max, length.out = iteraciones))

desv_est_estimada <- media_estimada <- dif_cuad_media <- dif_cuad_desv_est <- vector()

for (i in seq_len(iteraciones)) {
  muestra <- rnorm(tamano_muestral[i], media_poblacional, desv_est_poblacional)
  media_estimada[i] <- mean(muestra)
  desv_est_estimada[i] <- sd(muestra)
  dif_cuad_media[i] <- (media_estimada[i] - media_poblacional)^2
  dif_cuad_desv_est[i] <- (desv_est_estimada[i] - desv_est_poblacional)^2
}


plot(media_estimada ~ tamano_muestral)
abline(h = media_poblacional, col = 2, lwd = 2)

plot(dif_cuad_media ~ tamano_muestral, type = "l")


plot(desv_est_estimada ~ tamano_muestral)
abline(h = desv_est_poblacional, col = 2, lwd = 2)

plot(dif_cuad_desv_est ~ tamano_muestral, type = "l")




# Distribución uniforme ---------------------------------------------------


tamano_muestral_max <- 500
iteraciones <- 100
maximo_poblacional <- 8
minimo_poblacional <- 3
tamano_muestral <- floor(seq(10, tamano_muestral_max, length.out = iteraciones))

maximo_estimado <- minimo_estimado <- dif_cuad_maximo <- dif_cuad_minimo <- vector()

for (i in seq_len(iteraciones)) {
  muestra <- runif(tamano_muestral[i], minimo_poblacional, maximo_poblacional)
  maximo_estimado[i] <- max(muestra)
  minimo_estimado[i] <- min(muestra)
  dif_cuad_maximo[i] <- (maximo_estimado[i] - maximo_poblacional)^2
  dif_cuad_minimo[i] <- (minimo_estimado[i] - minimo_poblacional)^2
}


plot(maximo_estimado ~ tamano_muestral)
abline(h = maximo_poblacional, col = 2, lwd = 2)

plot(dif_cuad_media ~ tamano_muestral, type = "l")


plot(minimo_estimado ~ tamano_muestral)
abline(h = minimo_poblacional, col = 2, lwd = 2)

plot(dif_cuad_desv_est ~ tamano_muestral, type = "l")


# Regresión lineal --------------------------------------------------------

tamano_muestral_max <- 500
iteraciones <- 100
beta_0 <- 1
beta_1 <- -0.3
minimo_poblacional <- 3
tamano_muestral <- floor(seq(10, tamano_muestral_max, length.out = iteraciones))

genera_x <- function(n) seq(-3, 3, length.out = n)

genera_y <- function(x, beta_0, beta_1){
  beta_1*x + beta_0 + rnorm(length(x), 0, 0.5)
}

beta_0_estimado <- beta_1_estimado <- dif_cuad_beta_0 <- dif_cuad_beta_1 <- vector()

for (i in seq_len(iteraciones)) {
  X <- genera_x(tamano_muestral[i])
  Y <- genera_y(X, beta_0, beta_1)
  betas <- coef(lm(Y ~ X))
  beta_0_estimado[i] <- betas[1]
  beta_1_estimado[i] <- betas[2]
  dif_cuad_beta_0[i] = (beta_0_estimado[i] - beta_0)^2
  dif_cuad_beta_1[i] = (beta_1_estimado[i] - beta_1)^2
}


plot(beta_0_estimado ~ tamano_muestral)
abline(h = beta_0, col = 2, lwd = 2)

plot(dif_cuad_beta_0 ~ tamano_muestral, type = "l")


plot(beta_1_estimado ~ tamano_muestral)
abline(h = beta_1, col = 2, lwd = 2)

plot(dif_cuad_beta_1 ~ tamano_muestral, type = "l")



# tidy approach -----------------------------------------------------------


# Paquetes ----------------------------------------------------------------


library("dplyr")
library("purrr")
library("ggplot2")
library("magrittr")

colores_platzi <- c("#78D92A", "#002E4E", "#058ECD", "#ED2B05", "#F4F7F4")


# Distribución normal -----------------------------------------------------



tamano_muestral_max <- 500
iteraciones <- 100
media_poblacional <- 5
desv_est_poblacional <- 3


tibble(
  media = media_poblacional,
  desv_est = desv_est_poblacional,
  tamano_muestral = floor(seq(10, tamano_muestral_max, length.out = iteraciones)),
  muestras = map(tamano_muestral, rnorm, media, desv_est),
  media_estimada = map_dbl(muestras, mean),
  desv_est_estimada = map_dbl(muestras, sd),
  dif_cuad_medias = (media - media_estimada)^2,
  dif_cuad_sd = (desv_est_estimada - desv_est)^2
) -> simulaciones

qplot(tamano_muestral, media_estimada, data = simulaciones) +
  geom_hline(yintercept = simulaciones$media, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, dif_cuad_medias, data = simulaciones) +
  geom_smooth(size = 1, se = FALSE, colour = colores_platzi[4]) +
  theme_minimal()


qplot(tamano_muestral, desv_est_estimada, data = simulaciones) +
  geom_hline(yintercept = simulaciones$desv_est, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, dif_cuad_sd, data = simulaciones) +
  geom_smooth(size = 1, se = FALSE, colour = colores_platzi[4]) +
  theme_minimal()


# Distribución uniforme ---------------------------------------------------


tamano_muestral_max <- 500
iteraciones <- 100

tibble(
  tamano_muestral = floor(seq(10, tamano_muestral_max, length.out = iteraciones)),
  maximo_poblacional = 8,
  minimo_poblacional = 3,
  muestras = map(tamano_muestral, runif, minimo_poblacional, maximo_poblacional),
  maximo_estimado = map_dbl(muestras, max),
  minimo_estimado = map_dbl(muestras, min),
  dif_cuad_maximo = (maximo_poblacional - maximo_estimado)^2,
  dif_cuad_minimo = (minimo_poblacional - minimo_estimado)^2
) -> simulaciones

qplot(tamano_muestral, maximo_estimado, data = simulaciones) +
  geom_hline(yintercept = simulaciones$maximo_poblacional, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, dif_cuad_maximo, data = simulaciones) +
  geom_smooth(size = 1, se = FALSE, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, minimo_estimado, data = simulaciones) +
  geom_hline(yintercept = simulaciones$minimo_poblacional, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, dif_cuad_minimo, data = simulaciones) +
  geom_smooth(size = 1, se = FALSE, colour = colores_platzi[4]) +
  theme_minimal()



# Regresión lineal simple -------------------------------------------------


tamano_muestral_max <- 500
iteraciones <- 100
beta_0 <- 1
beta_1 <- -0.3
minimo_poblacional <- 3

genera_x <- function(n) seq(-3, 3, length.out = n)

genera_y <- function(x, beta_0, beta_1){
  beta_1*x + beta_0 + rnorm(length(x), 0, 0.5)
}

estima_betas <- function(x, y){
  coef(lm(y ~ x))
}

tibble(
  tamano_muestral = floor(seq(10, tamano_muestral_max, length.out = iteraciones)),
  datos_x = map(tamano_muestral, genera_x),
  datos_y = map(datos_x, genera_y, beta_0, beta_1),
  betas = map2(datos_x, datos_y, estima_betas),
  beta_0_estimado = map_dbl(betas, extract, 1),
  beta_1_estimado = map_dbl(betas, extract, 2),
  dif_cuad_beta_0 = (beta_0_estimado - beta_0)^2,
  dif_cuad_beta_1 = (beta_1_estimado - beta_1)^2
  # plot = map2(datos_x, datos_y, plot)
) -> simulaciones

qplot(tamano_muestral, beta_0_estimado, data = simulaciones) +
  geom_hline(yintercept = beta_0, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, dif_cuad_beta_0, data = simulaciones) +
  geom_smooth(size = 1, se = FALSE, colour = colores_platzi[4]) +
  theme_minimal()


qplot(tamano_muestral, beta_1_estimado, data = simulaciones) +
  geom_hline(yintercept = beta_1, colour = colores_platzi[4]) +
  theme_minimal()

qplot(tamano_muestral, dif_cuad_beta_1, data = simulaciones) +
  geom_smooth(size = 1, se = FALSE, colour = colores_platzi[4]) +
  theme_minimal()```


#Distribucion normal

tamano_muestral_max <- 5000
iteraciones <- 100
media_poblacional <- 5
desv_est_poblacional<- 3
tamano_muestral <- floor(seq(10, tamano_muestral_max, length.out = iteraciones))


desv_est_estimada <- media_estimada <- dif_cuad_media <- dif_cuad_desv_est <- vector()

for (i in seq_len(iteraciones)){
  muestra <- rnorm(tamano_muestral[i], media_poblacional, desv_est_poblacional)
  media_estimada[i] <- mean(muestra) 
  desv_est_estimada[i] <- sd(muestra)
  dif_cuad_media[i] <- (media_poblacional - media_estimada[i])^2
  dif_cuad_desv_est[i] <- (desv_est_poblacional - desv_est_estimada[i])^2
}

plot(media_estimada ~ tamano_muestral)
abline(h = media_poblacional, col = 2, lwd =2)

plot(dif_cuad_media ~ tamano_muestral)

plot(desv_est_estimada ~ tamano_muestral)
abline(h = desv_est_poblacional, col = 2, lwd =2)

plot(dif_cuad_desv_est ~ tamano_muestral)
![](https://static.platzi.com/media/user_upload/image-929330bb-8219-4d47-b8b2-56e7042668f3.jpg) ```js plot(maximo_estimado ~ tamano_muestral) abline(h = maximo_poblacional, col = 4, lwd = 4) plot(dif_cuad_media ~ tamano_muestral, type = "l") ```

Para pruebas de bondad de ajuste con Python recomiendo
Phitter Library

import phitter

data: list[int | float] = [...]

phitter_cont = phitter.PHITTER(
    data=data,
    fit_type="continuous",
    num_bins=15,
    confidence_level=0.95,
    minimum_sse=1e-2,
    distributions_to_fit=["beta", "normal", "fatigue_life", "triangular"],
)
phitter_cont.fit(n_workers=6)

Gracias!

Ejemplo de la clase + ejercicio con ggplot2 en Notebook:
https://colab.research.google.com/drive/1Kla_p2TL8Zxva-bpzyyPeBQpVrd1-t4v?usp=sharing