es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mostrar las estimaciones de densidad de núcleo de β̂₁ OLS y β̂₁ ROLS para sus 1000 simulaciones.

Tengo el siguiente problema: Realicé 1000 simulaciones para obtener un vector de θ^1OLS y θ^1ROLS. Ahora tengo que comparar ambos representándolos como una función de densidad en un gráfico (debo hacerlo con ggplot()). ¿Es posible graficar la densidad a partir de un vector?

A continuación mi código, disculpe el desorden:

N=10000
X <- runif(N, min = 0, max = 100)
E <- runif(N, min = -5, max = 5)

U = E * sqrt(X)

# regresión de la población

Y <- 3 + 2 * X + U
population <- data.frame(X, Y)

# tamaño de muestra y repetición

n <- 1000
reps<- 1000

# inicializar la matriz de resultados

fit_coef <- matrix(ncol = 2, nrow = reps)
fit_coef_ROLS<-matrix(ncol = 2, nrow = reps)

# bucle de muestreo y estimación de los coeficientes para OLS

set.seed(1)
for (i in 1:reps){

  sample <- population[sample(1:N, n), ]
  fit_coef[i,] <- lm(Y ~ X, data = sample)$coefficients

}
fit_coefβ1<- fit_coef[,-1] 
fit_coef_β1

# bucle de muestreo y estimación de los coeficientes robustos para ROLS

set.seed(1)
for (i in 1:reps){

  sample <- population[sample(1:N, n), ]
  fit_coef_ROLS[i,] <- rlm(Y ~ X, data = sample)$coefficients

}
fit_coefβ1ROLS<- fit_coef_ROLS[,-1] 
fit_coefβ1ROLS

# Gráfico

df_coefOLS<-as.data.frame(fit_coef)

plot_coefOLS<-ggplot(df_coefOLS, aes(x = fit_coefβ1)) +
  geom_density()
plot_coefOLS

Obtengo un gráfico si uso esta fórmula, pero no sé cómo obtener la densidad de ambos estimadores en un solo gráfico y además la densidad no está en el rango de [0,1].

¡Agradezco cualquier ayuda!
Este es el enlace a la tarea: Enlace a la tarea

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible trazar una densidad a partir de un vector utilizando ggplot. De hecho, ya has trazado la densidad de un vector en tu código. Para trazar las densidades de ambos β^1_OLS y β^1_ROLS en un solo gráfico, puedes combinar los vectores en un marco de datos y utilizar la función aes() para especificar la variable de agrupación.

    Así es cómo puedes modificar tu código para lograr esto:

    “`{r}
    library(ggplot2)

    Combinar los vectores en un marco de datos

    df_coef <- data.frame(coef = c(fit_coef_ß1, fit_coef_ß1_ROLS),
    estimator = rep(c(“OLS”, “ROLS”), each = reps))

    Trazar la densidad de ambos vectores

    plot_coef <- ggplot(df_coef, aes(x = coef, fill = estimator)) +
    geom_density(alpha = 0.5) +
    scale_fill_manual(values = c(“#F8766D”, “#00BFC4”),
    name = “Estimador”) +
    labs(x = expression(paste(“Estimación de coeficiente (“, hat(beta[1]), “)”)),
    y = “Densidad”,
    title = “Comparación de β^1_OLS y β^1_ROLS”) +
    theme_bw()
    plot_coef
    “`

    En el código anterior, los vectores fit_coef_ß1 y fit_coef_ß1_ROLS se combinan en un marco de datos df_coef, donde la variable estimator especifica si el coeficiente es de OLS o ROLS. Esta variable se utiliza como el estético de relleno en la función ggplot() para crear un gráfico de densidad de dos colores, con la leyenda mostrando los dos tipos de estimadores.

    El gráfico resultante debería verse como sigue:

    Gráfico de densidad de las estimaciones de coeficiente de OLS y ROLS

    Ten en cuenta que los valores de densidad pueden ser mayores que 1, ya que las densidades no son probabilidades y no tienen un límite superior de 1. Sin embargo, el área bajo la curva de densidad siempre debería integrar a 1.

Comments are closed.