Un loop (o bucle) en R es una estructura que permite repetir una acción varias veces sin tener que escribir el mismo código una y otra vez.
Sirve, por ejemplo, para:
Repetir cálculos (como sumar valores o aplicar fórmulas a varios datos).
Procesar elementos de un vector, lista o tabla.
Automatizar tareas repetitivas (como limpiar datos o generar gráficos).
En este informe, se analiza la insesgadez en la estimación de un modelo de regresión lineal simple. Se genera una población y se extraen 100 muestras aleatorias de tamaño 100, cada una utilizada para estimar el modelo de regresión. Se analizan los coeficientes obtenidos y su distribución.
Establece la semilla aleatoria para garantizar que los resultados sean reproducibles.
set.seed(1)
Media (μ) = 20
Desviación estándar (σ) = 2
round(…, 1): Redondea los valores a una sola decimal.
x =round(rnorm(1000, 20, 2), 1)
error=round(rnorm(1000, 0, 0.2), 1)

50 es el intercepto.
1.3 es la pendiente.
error añade ruido aleatorio.
y= 50 + (1.3 * x) + error
Convierte las variables x y y en un
data frame, que servirá como la población de
estudio.
datos= data.frame(y, x)
Crea una lista vacía para guardar los modelos de regresión.
modelos=list()
Inicia un bucle for que repetirá el
proceso 100 veces.
for (i in 1:100) {
Fija una semilla distinta en cada iteración para garantizar diferentes muestras.
set.seed(i + 1)
Toma una muestra aleatoria de 100
observaciones de datos.
muestra = datos[sample(nrow(datos), 100), ]
Ajustar el modelo de regresión
modelos[[i]] <- lm(y ~ x, data = muestra)
xCalcula el promedio de las pendientes de los 100 investigadores, para verificar la insesgadez del beta
beta1_values <- sapply(modelos, function(mod) mod$coefficients[["x"]])
beta1_promedio <- mean(beta1_values)
hist(beta1_values, main = "Distribución de las estimaciones de B1",
xlab = "Valor estimado", col = "lightblue", border = "white")
abline(v = 1.3, col = "red", lwd = 2) # Valor verdadero
abline(v = beta1_promedio, col = "blue", lty = 2) # Promedio estimado
legend("topright", legend = c("Valor verdadero", "Promedio estimado"),
col = c("red", "blue"), lty = c(1, 2), lwd = c(2, 1))
http://127.0.0.1:40307/graphics/20763984-1740-47c7-818a-924c2c25057e.png
Podemos visualizar que en el modelo se cumple la propiedad de insesgadez, al obtener un valor estimado (1.3000333) que tiene una coincidencia visible con la pediente real (1.3) elimando la dispersion de los datos como posible resultado. El histograma de las estimaciones revela una distribución aproximadamente normal centrada en el valor verdadero, mostrando la variabilidad natural que surge del muestreo aleatorio de 100 muestras de 100 sujetos.