3 votos

Ajuste de distribución

Me gustaría ajustar una distribución (cualquiera que prefieras) basada en estos requisitos:

  1. Produce valores enteros (preferible pero no requerido)
  2. Media = 100
  3. Desviación estándar = 114
  4. Cuantiles (25%, 50%, 75%) = (6, 39, 200)
  5. Mínimo = 0; Máximo = ~300 (pero $\infty$ es aceptable);

La distribución de Poisson cumple los criterios 1, 2 y casi 3, pero no 4 por mucho. Lognormal... tal vez

Información EXTRA: el valor 0 se produce el 8% del tiempo y el 300 se produce el 18%.

¿Es posible hacer algo así? ¿O necesitamos más información?

6voto

Alec Puntos 101

Aquí hay una función para que comiences.

function y = weirdrand()

r = rand;
if r < 0.08
    y = 0;
elseif r < 0.25
    y = randsample(1:6, 1);
elseif r < 0.5
    y = randsample(7:39, 1);
elseif r < 0.75
    y = randsample(40:200, 1);
elseif r < 0.82
    y = randsample(201:299, 1);
else
    y = 300;
end

end

Esto cumple con las reglas 1, 4, 5 y la información adicional. randsample (del paquete Stats) devuelve uno de sus valores de entrada con igual probabilidad.

La vectorización se deja como ejercicio para el lector. Mientras tanto,

y = arrayfun(@(x) weirdrand(), 1:1e4)
mean(y) %típicamente alrededor de 107
std(y)  %típicamente alrededor de 115

0voto

Waldo Puntos 491

(esto es en realidad lo mismo que el comentario de Xi'an, pero respondí de manera independiente en math.stackexchange.com)

Ciertamente es posible, pero tienes más incógnitas (301) que restricciones (9), lo que significa que tendrás mucha libertad. Una forma de restringir esa libertad es usar el principio de máxima entropía. Te dará la distribución más probable bajo las restricciones.

Lo que haces es maximizar $-\sum_i p_i \ln p_i$ bajo las restricciones que has dado y donde los $p_i$ son las probabilidades de todos los eventos discretos $i=0,\ldots,300$. Lo mejor es hacer esto de forma numérica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X