Estoy tratando de generar un ejemplo de una familia de distribuciones. En particular, me gustaría ser capaz de obtener una muestra de la supervivencia de la función:
$$1-F(x) = c x^{-a} \log^b(x)$$ con un dominio adecuado de modo que F está definida y es una función de sobrevivencia, a partir de diferentes valores de $c$, $b$ y $a$.
Por ejemplo: $$1-F(x) \approx \tfrac{\log(x)}{x^2}, x>\sqrt{e}$$
Roughly speaking I need a function $F$ such that the distribution is heavy tailed and behaves like $1-F(x) = c x^{-a} \log^b(x)$, as $x$ goes to $+ \infty$.
He tratado de muchas maneras, porque he encontrado varios ejemplos:
- 1 la Generación de muestras aleatorias de una distribución personalizada
- 2 http://stackoverflow.com/questions/16134786/simulate-data-from-non-standard-density-function
- 3 http://stackoverflow.com/questions/23570952/simulate-from-an-arbitrary-continuous-probability-distribution
- 4 http://stackoverflow.com/questions/20508400/generating-random-sample-from-the-quantiles-of-unknown-density-in-r
- 5 http://stackoverflow.com/questions/1594121/how-do-i-best-simulate-an-arbitrary-univariate-random-variate-using-its-probabil
Pero en cualquier momento, incluso para el más simple de la función de con $b=1$ $a=2$ errores vienen de fuera. Yo creo que es porque tal vez, debido a que el registro, algunos de los algoritmos de trabajo con todos los números reales, y no se limita a los números positivos.
Que es la forma más fácil para un pdf/cdf con un registro? Es difícil debido al hecho de que es difícil invertir la función xlogx
?
Si tengo que usar algunos de los métodos anteriores puedo mostrar mis logros y donde me quedé atrapado!
EDICIÓN 1
Gracias a whuber
I sucedido en la construcción del código, aquí están:
# Simulating data from G(x) = 1-F(x) = c * x^(-a) * (log(x))^b
# Case: b > 0
pxlog <- function(x, a=5, b=2, c=(a*exp(1)/b)^b) {((1-c*x^(-a)*(log(x))^b))} # G
dxlog <- function(x, a=5, b=2, c=(a*exp(1)/b)^b) {c*(x^(-1-a))*((log(x))^(-1+b))*(-b+a*log(x))}
qxlog <- function(y, a=5, b=2, c=(a*exp(1)/b)^b) {exp(-(b/a)*lambert_Wm1(-(a/b)*((1-y)/c)^(1/b)))} # inversa di G
# Domain for the functions: x > exp(b/a)
# Generating Samples
rxlog <- function(n, a=5, b=2, c=(a*exp(1)/b)^b) qxlog(runif(n),a,b,c)
# Testing Samples
hist(rxlog(10000, 2, 10), breaks=50, freq = F, col="grey", label=F)
curve(dxlog(x, 2, 10), exp(10/2), add= TRUE, col="red")
El resultado es que funciona... casi! Si yo uso los valores de $b$ mayor que $a$, o en general, si $b-a>-1$, el ajuste de la densidad/histograma crea problema.
o con $a=3, b=4$ (ajuste de la rompe en hist)
Cual es el problema? Y la segunda pregunta, ¿cómo puedo incluir, si es posible, el dominio de la información sobre $F$ en la definición de $F$ sí? Gracias!
EDIT 2 Por $b>0$ la distribución que yo estoy buscando, puede ser asumido como el registro de la distribución gamma. Usted puede encontrar en el Actuar de la biblioteca en R. Pruebas de "mi" de la distribución (el uno con el código de EDITAR 1) con que hay algunas diferencias... pero creo que es sólo porque he cometido algunos errores!