Estoy utilizando un programa que dibuja valores aleatorios en una distribución log-uniforme digamos entre 1 y 100. Cuando trazo la densidad de los valores producidos con R parece una distribución log-uniforme con alta densidad para los valores pequeños y bajas densidades para los valores más altos. Pero si trazo la densidad del logaritmo de los valores [es decir, y = densidad(log(x))] entonces la densidad que debería ser uniforme es ondulada para valores pequeños de x y se estabiliza como un uniforme para valores mayores. (Véase la línea negra en el gráfico de ejemplo de abajo).
Mi explicación es que hay algún redondeo antes de tomar el logaritmo y que esto causa la oscilación para los valores pequeños porque están más afectados por el redondeo que los valores más grandes.
- ¿Tiene sentido? ¿Alguien ha experimentado un problema similar antes?
- ¿Alguien tiene una idea de cómo solucionarlo (sin tener que 'desredondear' los valores que da el programa C)?
- ¿Debo aumentar el alisado?
- ¿Sería posible tener un mayor alisamiento para valores pequeños que para valores mayores? ¿O un núcleo diferente? ¿Ayudaría eso? ¿Es eso "científicamente" correcto?
2 votos
Si intento
x <- 100^runif(1000000); plot(density(log(x)))
entonces obtengo algo que parece sensato entre $0$ y sobre $4.6 \approx \log_e(100)$ ¿Qué has hecho para conseguir esa oscilación?0 votos
Gracias por la respuesta y por la línea de código (no sabía cómo reproducirla con R.) El prior es dibujado por un programa C independiente que teóricamente no puedo cambiar. Realmente creo que viene del redondeo. Si se simula
x <- round(100^runif(1000000)); plot(density(log(x)))
se obtiene el mismo tipo de oscilaciones. Pero como no puedo cambiar el redondeo, me pregunto cómo se puede solucionar. (Preguntas 2 a 4)