Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 205

 
ivanivan_11:

Probablemente se le ofrecerá utilizar estas funciones usted mismo si es necesario https://www.mql5.com/ru/docs/opencl.

Tengo una tarjeta de vídeo antigua, OpenCL no parece soportarlo. Si meten el soporte dentro de la librería, ¿qué pasará?

Así que me refería a que sería posible elegir el soporte tanto para el vídeo, como para otros núcleos del procesador, o no utilizar OpenCL en absoluto. Es una oportunidad real para que la gente normal vea cómo aplicar OpenCL de forma eficaz.

 

Cuando lleguemos a los cálculos pesados, quizá utilicemos OpenCL. Pero algo me dice que usar una CPU multinúcleo dará resultados aceptables y más garantizados.

Por el momento no hay ninguna duda sobre la aceleración. Estamos trabajando en la funcionalidad básica de las bibliotecas.

 
Dr.Trader:

Según la fórmula del archivo de ayuda de R, se calcula mediante la fórmula
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(forma= a y escala= s,parax ≥ 0,a > 0 ys > 0)
la escala es de 1/tasa por defecto

El problema es que en este caso x^(a-1) = 0^(1-1) = 0^0 que es indefinido, es decir, no tiene sentido llamar a la función con ese parámetro y no tiene sentido comparar los resultados con otro software. Para 0^0 puede ser diferente en diferentes software, dependiendo de la religión de los desarrolladores.
Esto es en el sentido de software de 0^0. En el sentido matemático, específicamente aquí lim(x^0), en x->0 - y esto es inequívocamente uno
 

Dr.Trader:
El supuesto error es que

dgamma(x=0, shape=1, rate=1,log=FALSE)== 1

Según la fórmula de la ayuda de R, se calcula mediante la fórmula
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(forma= a y escala= s,parax ≥ 0,a > 0 ys > 0)
escala por defecto 1/tasa

El problema es que en este caso x^(a-1) = 0^(1-1) = 0^0, que es indefinido, es decir, no tiene sentido llamar a la función con ese parámetro ni comparar los resultados con otro software. Para 0^0 puede ser diferente en diferentes software, dependiendo de la religión de los desarrolladores.

Bien. Resulta que no podemos llamarlo definición, ya que hay incertidumbres.

Puedes trazar la gráfica y asegurarte de que en x=0, la expresión en estos parámetros tiende a 1. Este es un número normal, no hay divergencia en otros puntos.

Podemos sumar toda la densidad, el resultado será algún número (factor de normalización), por el que dividimos y obtenemos la probabilidad unitaria, que se extiende por el área de definición. La curva está normalizada, el área bajo la curva = 1. En este caso podemos hablar de densidad de probabilidad.

Sin embargo, con los parámetros 0,5 y 1 en el punto x=0, la situación es diferente. El límite en este punto es el infinito. Al acercarse a 0 tiende a infinito. También es posible no integrar después de este punto, el resultado no cambiará. ¿Cómo normalizar hasta el infinito? Con esta normalización cualquier curva se convierte en una línea.

Pero si consideramos que la expresión sólo funciona cuando x>0, entonces la expresión puede considerarse como la definición de la función, ya que no hay incertidumbres en x=0. Todos los valores son finitos y nada se rompe.

Esta hipótesis explica los resultados que dan Mathematica y Matlab: en el punto x=0 la densidad=0.

Esta era la pregunta.

 
Renat Fatkhullin:

Cuando lleguemos a los cálculos pesados, quizá utilicemos OpenCL. Pero algo me dice que usar una CPU multinúcleo dará resultados aceptables y más garantizados.

Por el momento no hay ninguna duda sobre la aceleración. Estamos ocupados retocando la funcionalidad básica de las bibliotecas.

Lo tengo. Esperaré a la evolución de la situación.

 
Quantum:

Genial. Resulta que no podemos llamarlo definición, ya que hay incertidumbres.

Puedes trazar la gráfica y asegurarte de que en el punto x=0 la expresión tiende a 1. Este es un número normal, no hay divergencia en otros puntos.

Podemos sumar toda la densidad, el resultado es algún número (el factor de normalización) por el que dividimos y obtenemos la probabilidad unitaria, que se extiende por el área de definición. La curva está normalizada, el área bajo la curva = 1. En este caso podemos hablar de densidad de probabilidad.

Sin embargo, con los parámetros 0,5 y 1 en el punto x=0, la situación es diferente. El valor límite en este punto es el infinito. Al acercarse a 0 tiende a infinito. También es posible no integrar después de este punto, el resultado no cambiará. ¿Cómo normalizar hasta el infinito? Con esta normalización cualquier curva se convierte en una línea.

Pero si consideramos que la expresión sólo funciona cuando x>0, entonces la expresión puede considerarse como la definición de la función, ya que no hay incertidumbres en x=0. Todos los valores son finitos y nada se rompe.

Esta hipótesis explica los resultados que dan Mathematica y Matlab: en el punto x=0 la densidad=0.

Esa era la cuestión.

Esta función es la que está definida en (0,inf). ¿O no estás de acuerdo con eso?

Segundo. Debido a que la función de distribución de probabilidad está perfectamente definida en la región especificada, ¿tiene algún sentido asignar cualquier valor 0, 1, inf a la función de densidad en el punto 0 y llamar error a uno de tales valores?

No, no tengo ninguna queja sobre el valor 0. ¿Podrá usted personalmente, como autor del código de la función, responder a los programadores de R por lo que ha dicho sobre que su función dgamma es incorrecta?
 
Mis colegas y yo comprobamos la dgamma después de leer el artículo. Sus revelaciones no han afectado ni pueden afectar a los resultados de la investigación realizada. Y una persona que no sepa mucho del tema podría pensar que R está haciendo los cálculos por error. ¿Lo hizo deliberadamente con este propósito? Esto sólo se aplica a dgamma.

Siguiente.

Tengo una pregunta para usted personalmente. Función de Dirac. Función Delta. Es igual a infinito en el punto 0 y cero en los demás puntos. Su integral en el dominio -inf a +inf = 1. ¿Por qué habría un problema con la integral de la función gamma en su dominio si en el cero la densidad es igual al infinito?
 
Alexey Burnakov:

Tengo una pregunta para usted personalmente. Función de Dirac. Función Delta. Es igual a infinito en el punto 0 y cero en los demás puntos. Su integral en el dominio -inf a +inf = 1. ¿Por qué habría un problema con la integral de la función gamma en su dominio si en el cero la densidad es igual al infinito?

¿Estás diciendo que esa transformación a la función delta de Dirac está bien? ¿Por qué todo lo demás?

Dime qué pasa con el infinito durante la pgamma en el punto x=0, cuando la respuesta "correcta" como dices se da en dgamma(0,0,5,1)=+inf.

Mostrar gráficamente la función y los rangos de integración al calcular pgamma.

 

Dato interesante

Las definiciones de los valores de densidad de la distribución gamma en la traducción al ruso de

Johnson N.L., Kotz S., Balakrishnan N. Univariate continuous distributions. part 1 and the earlier English version are different:



pero la versión inglesa tiene una supuesta errata debido a los diferentes signos.

 
Quantum:

¿Estás diciendo que este tipo de conversión a una función delta de Dirac está bien? ¿Qué sentido tiene entonces todo lo demás?

Dime qué pasa con el infinito en el proceso pgamma en x=0, cuando se dio la respuesta "correcta" como dices en dgamma(0,0,5,1)=+inf.
He leído la documentación de Pgamma. según tengo entendido no está relacionado con dgamma. su contraparte es diferente.

No, no voy a decirte lo que no sé con seguridad
... He dado un ejemplo en el que para densidad = infinito la integral = 1. Como hay ceros en el resto de la región ...

Y otra pregunta para ti.

Tomé Excel. ¡Hay una función gamma.race allí también. cuenta la densidad si es acumulativa = false. para x = 0 la función da un valor de #número! De la ayuda:En Excel, este error se produce cuando una fórmula o función contiene un valor numérico no válido.

¿También se produce el error en Excel? Siguiendo tu lógica. Tal vez también puedas competir con ellos en ingenio.

Y añade a tu artículo que la función stat para la distribución gamma en Python devuelve valores similares en R, y llama al feuilleton de la siguiente manera: Hay muchos programas por ahí que estropean tu investigación con errores, y en MT hemos resuelto todos tus errores.

Y de paso añadir una sección sobre las convenciones adoptadas en MT5 para los valores no calculables.

Y estoy esperando que mi pregunta sea moderada por R Core y su respuesta. Aunque ya sé lo que será... y luego me retiraré.