Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 205

 
ivanivan_11:

вам наверное предложат самостоятельно использовать данные функции при необходимости https://www.mql5.com/ru/docs/opencl

у меня видюха старая, опенЦЛ вроде как не поддерживает. если запихнут поддержку сразу внутрь библиотеки-что будет? ошибка на картах,подобной моей или где?

Так я о том, что б была возможность выбрать поддержку, как видюхи, так и других ядер процессора, или не использовать OpenCL вообще. Просто это реальная возможность увидеть обывателям, как применять эффективно OpenCL.

 

Как доберемся до тяжелых расчетов, возможно используем OpenCL. Но что-то мне подсказывает, что использование мультиядер цпу даст приемлемый результат и более гарантированный.

Сейчас пока вопросов с ускорением нет. Мы занимаемся наработкой основного функционала библиотек.

 
Dr.Trader:
 

Согласно формуле из хелпа R это вычисляется по формуле
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(
shape = a and scale = s, for x ≥ 0a > 0 and s > 0)
scale по дефолту равно 1/rate

Проблема в том что в данном случае x^(a-1) = 0^(1-1) = 0^0, что неопределено, т.е. вызывать функцию с таким параметром вообще смысла нету, и сравнивать результаты с другим софтом тоже смысла нету. Ибо 0^0 в разном софте может быть разным, в зависимости от религии разработчиков.
Это в программном смысле 0^0. В математическом смысле конкретно здесь lim(x^0), при x->0 - а это однозначно единица
 

Dr.Trader:
Предполагаемая ошибка, в том что

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

Согласно формуле из хелпа R это вычисляется по формуле
f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)
(
shape = a and scale = s, for x ≥ 0a > 0 and s > 0)
scale по дефолту равно 1/rate

Проблема в том что в данном случае x^(a-1) = 0^(1-1) = 0^0, что неопределено, т.е. вызывать функцию с таким параметром вообще смысла нету, и сравнивать результаты с другим софтом тоже смысла нету. Ибо 0^0 в разном софте может быть разным, в зависимости от религии разработчиков.

Отлично. Получается что нельзя называть это определением, раз присутствуют неопределенности.

Можно график построить и убедиться что в точке x=0 выражение при этих параметрах стремится к 1. Это нормальное число, в других точках расходимостей нет.

Мы можем просуммировать всю плотность, в результате получится некоторое число (нормировочный коэффициент), на которое мы делим и получаем единичную вероятность, которая размазана по области определения. Кривая нормирована, площадь под кривой =1.  В таком случае можно говорить о плотности вероятности.

Однако с параметрами 0.5 и 1 в точке x=0 ситуация другая. Предельное значение в данной точке равно бесконечности. При подходе к 0 она стремится к бесконечности. Можно и не интегрировать после этой точки, результат не изменится. Как нормировать на бесконечность? При такой нормировке любая кривая превращается в прямую.

Но если считать выражение работающим лишь при x>0, то выражение можно рассматривать как определение функции, т.к. никаких неопределенностей в точке x=0 нет. Все значения конечные и ничто не ломается.

Данная гипотеза объясняет результаты, которые выдают Mathematica и Matlab: в точке x=0 плотность=0.

Об этом был вопрос.

 
Renat Fatkhullin:

Как доберемся до тяжелых расчетов, возможно используем OpenCL. Но что-то мне подсказывает, что использование мультиядер цпу даст приемлемый результат и более гарантированный.

Сейчас пока вопросов с ускорением нет. Мы занимаемся наработкой основного функционала библиотек.

Понял. Буду ждать развития событий.

 
Quantum:

Отлично. Получается что нельзя называть это определением, раз присутствуют неопределенности.

Можно график построить и убедиться что в точке x=0 выражение при этих параметрах стремится к 1. Это нормальное число, в других точках расходимостей нет.

Мы можем просуммировать всю плотность, в результате получится некоторое число (нормировочный коэффициент), на которое мы делим и получаем единичную вероятность, которая размазана по области определения. Кривая нормирована, площадь под кривой =1.  В таком случае можно говорить о плотности вероятности.

Однако с параметрами 0.5 и 1 в точке x=0 ситуация другая. Предельное значение в данной точке равно бесконечности. При подходе к 0 она стремится к бесконечности. Можно и не интегрировать после этой точки, результат не изменится. Как нормировать на бесконечность? При такой нормировке любая кривая превращается в прямую.

Но если считать выражение работающим лишь при x>0, то выражение можно рассматривать как определение функции, т.к. никаких неопределенностей в точке x=0 нет. Все значения конечные и ничто не ломается.

Данная гипотеза объясняет результаты, которые выдают Mathematica и Matlab: в точке x=0 плотность=0.

Об этом был вопрос.

Эта функция и есть определенная на (0,inf). или вы с этим не согласны?

Второе. В силу того что функция распределения вероятности прекрасно определяется на указанной области, есть ли смысл в присвоении плотности в точке 0 какого либо значения 0, 1, inf, и обзывание одного из таких значений ошибкой?

Нет, у меня нет претензий к значению 0. Вы лично как автор кода функций ответите программистам R за свои слова об ошибочности их функции dgamma?
 
Я с коллегами проверяли dgamma после прочтения статьи. Ваши откровения никак не повлияли и не могут повлиять на результаты проделанных исследований. А человек, который в этом не особо разбирается может показаться, что R делает вычисления с ошибками. Вы намерено это сделали в этих целях? Это касается только dgamma.

Дальше.

У меня есть к вам лично вопрос. Функция Дирака. Дельта Функция. В точке 0 равна бесконечности, в остальных точках равна нулю. Ее интеграл на области -inf  до +inf = 1. Почему возникнет проблема с интегралом гамма функции на ее области определения если в нуле плотность равна бесконечности?
 
Alexey Burnakov:

У меня есть к вам лично вопрос. Функция Дирака. Дельта Функция. В точке 0 равна бесконечности, в остальных точках равна нулю. Ее интеграл на области -inf  до +inf = 1. Почему возникнет проблема с интегралом гамма функции на ее области определения если в нуле плотность равна бесконечности?

Вы хотите сказать что подобное превращение в дельта-функцию Дирака это нормально? Зачем тогда все остальное?

Расскажите что происходит с бесконечностью в процессе pgamma в точке x=0, когда был выдан "правильный" как Вы говорите ответ в dgamma(0,0.5,1)=+inf.

Покажите графически функцию и диапазоны интегрирования при расчете pgamma.

 

Интересный факт

Определения значений плотности гамма-распределения в русском переводе

Джонсон Н.Л., Коц С., Балакришнан Н. Одномерные непрерывные распределения. ч. 1 и более ранней английской версии различаются:



но у английской версии есть подозрение на опечатку из-за разных знаков.

 
Quantum:

Вы хотите сказать что подобное превращение в дельта-функцию Дирака это нормально? Зачем тогда все остальное?

Расскажите что происходит с бесконечностью в процессе pgamma в точке x=0, когда был выдан "правильный" как Вы говорите ответ в dgamma(0,0.5,1)=+inf.
Я почитал документацию по Pgamma. она как я понял не связана с dgamma. ее контрибьютор другой.

Нет, я не буду рассказывать то, что я точно не знаю
... Я привел пример когда для плотности = бесконечности интеграл = 1. Так как на остальной области нули...

И еще вопрос к вам.

Я взял эксель. Там тоже есть функция гамма.расп. считает плотность, если кумулятивно = false. для x = 0 функция выдает значение #число!.  Из справки: В Excel эта ошибка возникает тогда, когда формула или функция содержит недопустимое числовое значение.

 В экселе тоже шибка получается? Следуя вашей логике. С ними может тоже потягаетесь в остроумии. 

заодно добавьте в вашу статью упоминание о том, что стат.функция для гамма распределения в Python возвращает аналогичные R значения, и назовите фельетон так: Вокруг полно программ, которые портят вам исследования ошибками, а в МТ мы все ваши ошибки разрешили.

И кстати добавьте раздел о коннвенциях, принятых в MT5 для невычисляемых величин.

А я жду модерации моего вопроса в R Core и их ответ. Хотя я знаю какой он будет... а засим удаляюсь.