1) Investigar sobre los loop en R, cómo se realizan y para qué sirven.

Un Loop es una estructura de control de flujo fundamental que permite a un programa ejecutar un bloque de código repetidamente mientras se cumpla una determinada condición. Es la herramienta clave para automatizar tareas y manejar colecciones de datos. La función principal del loop es lograr la eficiencia y la automatización del código

for: Se utiliza cuando se sabe la cantidad de repeticiones

#ejemplo del loop

set.seed(1)
x <- round(rnorm(1000, 20, 2), 1)
error <- round(rnorm(1000, 0, 0.2), 1)
y <- 50 - (2 * x) + error
datos <- data.frame(y, x)
 
# Crear vector para guardar los betas (pendientes)
betas <- numeric(100)
 
# Bucle: cambia la semilla de 1 a 100
for (i in 1:100) {
  set.seed(i)
  muestra <- datos[sample(nrow(datos), 20), ] # toma muestra aleatoria
  modelo <- lm(y ~ x, data = muestra)
  betas[i] <- coef(modelo)[2]  # guarda la pendiente (beta1)
}
# Calcular el valor esperado (promedio de betas)
media_betas<-mean(betas)
media_betas
## [1] -1.999236
# Calcular la varianza (eficiencia)
varianza_betas<- var(betas)
varianza_betas
## [1] 0.0006047676
# Gráfico de dispersión de los betas
hist(betas, main = "Distribución de los Betas", xlab = "Beta estimado", col = "lightblue", border = "white")
abline(v = mean(betas), col = "red", lwd = 2)
 
# Línea del promedio
abline(v = media_betas, col = "red", lwd = 2)

analisis de mi ejemplo

mirando los resultados puedo conlcuir que es insesgado y eficiente por que la varianza esta cercana al cero eso quiere decir que no hay mucha diferencia entre le beta real y el beta estimado, como no hay mucha varianza es eficiente; y es insesgado porque el promedio de las 100 semillas esta cerca al beta real osea -2 a medida que el tamaño de la muestra aumenta el valor del beta tiende a ser mas real, es consistencia es mejor para el modelo