#Informe 2

# Establecer un valor para theta
theta <- 1

# Función para calcular los estimadores para una muestra de tamaño n
calcular_estimadores <- function(muestra) {
  estimador1 <- (muestra[1] + muestra[2]/6 + muestra[3] + muestra[4]/3)
  estimador2 <- (muestra[1] + 2*muestra[2] + 3*muestra[3] + 4*muestra[4]) / 10
  estimador3 <- mean(muestra)
  estimador4 <- (min(muestra) + max(muestra)) / 2
  
  return(c(estimador1, estimador2, estimador3, estimador4))
}

# Función para realizar la simulación
simular_estimadores <- function(n, num_simulaciones, theta) {
  # Matriz para almacenar los resultados de los estimadores
  resultados <- matrix(nrow=num_simulaciones, ncol=4)
  
  for (i in 1:num_simulaciones) {
    # Generar muestra aleatoria
    muestra <- rexp(n, rate = 1/theta)
    # Calcular estimadores
    resultados[i, ] <- calcular_estimadores(muestra)
  }
  
  colnames(resultados) <- c("estimador1", "estimador2", "estimador3", "estimador4")
  return(resultados)
}

# Tamaños de muestra para la simulación
tamanos_muestra <- c(20, 50, 100, 1000)

# Número de simulaciones
num_simulaciones <- 1000

# Lista para almacenar los data frames de resultados
lista_resultados <- list()

for (n in tamanos_muestra) {
  # Realizar simulaciones
  simulaciones <- simular_estimadores(n, num_simulaciones, theta)
  
  # Calcular insesgadez, varianza (eficiencia) y consistencia
  medias <- colMeans(simulaciones)
  varianzas <- apply(simulaciones, 2, var)
  
  # Almacenar resultados en un data frame
  resultados_df <- data.frame(
    Tamano_Muestra = n,
    Media_Estimador1 = medias[1],
    Media_Estimador2 = medias[2],
    Media_Estimador3 = medias[3],
    Media_Estimador4 = medias[4],
    Varianza_Estimador1 = varianzas[1],
    Varianza_Estimador2 = varianzas[2],
    Varianza_Estimador3 = varianzas[3],
    Varianza_Estimador4 = varianzas[4]
  )
  
  # Agregar al lista
  lista_resultados[[as.character(n)]] <- resultados_df
}

# Imprimir resultados
for (n in tamanos_muestra) {
  print(lista_resultados[[as.character(n)]])
}
##            Tamano_Muestra Media_Estimador1 Media_Estimador2 Media_Estimador3
## estimador1             20         2.585724         1.016456         1.008177
##            Media_Estimador4 Varianza_Estimador1 Varianza_Estimador2
## estimador1         1.826766            2.299803           0.2955932
##            Varianza_Estimador3 Varianza_Estimador4
## estimador1          0.05145449            0.358141
##            Tamano_Muestra Media_Estimador1 Media_Estimador2 Media_Estimador3
## estimador1             50         2.492729        0.9910851        0.9969999
##            Media_Estimador4 Varianza_Estimador1 Varianza_Estimador2
## estimador1         2.285883            2.316284           0.3001095
##            Varianza_Estimador3 Varianza_Estimador4
## estimador1          0.01977851           0.4622313
##            Tamano_Muestra Media_Estimador1 Media_Estimador2 Media_Estimador3
## estimador1            100         2.538711         1.006702        0.9968214
##            Media_Estimador4 Varianza_Estimador1 Varianza_Estimador2
## estimador1         2.606367            2.190323           0.2958287
##            Varianza_Estimador3 Varianza_Estimador4
## estimador1          0.01038491           0.4158612
##            Tamano_Muestra Media_Estimador1 Media_Estimador2 Media_Estimador3
## estimador1           1000         2.445952         1.003339         1.001325
##            Media_Estimador4 Varianza_Estimador1 Varianza_Estimador2
## estimador1         3.763694            2.188602           0.3049947
##            Varianza_Estimador3 Varianza_Estimador4
## estimador1        0.0009599783           0.4452692
# Gráficos boxplot para el último tamaño de muestra (1000)
par(mfrow=c(2,2))
for(i in 1:4) {
  boxplot(simulaciones[,i], main=paste("Estimador", i), horizontal=TRUE)
}

par(mfrow=c(1,1))