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

 

Alexey Burnakov:
Я начал получать ответы на свой вопрос в R. 

 

Продолжение переписки с этим же человеком... 


Re: [Rd] dgamma density values in extreme point
Duncan Murdochmurdoch.duncan@gmail.com
сегодня в 12:59
Вам
:
burnakov@yandex.ru
Язык письма — английский. Перевести на русский?
Перевести
<span class="mail-Message-Widget-Inline_help ns-action nb-with-s-right-gap" data-click-action="common.show-hint" title="Узнать больше" data-params="pos=right&counter=71105:msg.click.quest&text=Вы можете переводить письма с иностранных языков нажатием одной кнопки. Кроме того, перевод писем доступен по ссылке «Перевести» за вкладкой «подробнее». Если вы считаете, что язык письма определён неправильно, пожалуйста, сообщите нам об этом." style="margin-right: 10px !important; display: inline-flex; cursor: pointer; color: rgb(187, 187, 187); flex-shrink: 0;">
Alexey Burnakov14 ноя. в 1:54 AM
 Hi Duncan,

 "As to the "correctness", we all know that the value of a density at any
 particular point is irrelevant. Only the integrals of densities have
 any meaning. "

 Thank you for clarification. Yes, I agree that what matters practically
 is the cumulative density. One more point.

 There is an opinion expressed by sometimes that while integral from the
 left in point zero of the support == 0, density in this particular point
 cannot be anything than zero. You think that is sound?

No. The value of a density at any particular point is irrelevant.

Duncan Murdoch

Про ответчика: http://www.stats.uwo.ca/faculty/murdoch/other.shtml

В частности:

I am a member of the R core development group; see www.r-project.org for details about the R project.  I maintain the Windows version of R and have a web page of tips for people writing DLLs for R.

About Duncan Murdoch
  • www.stats.uwo.ca
My research interests are in applied statistics (especially orientation statistics) and statistical computing (especially the R project and perfect sampling). I write a fair...
 
СанСаныч Фоменко:

М-да, Вам виднее

Да, виднее и честнее.

Причем я не имею политической возможности набрасывать как сторонний участник форума.


Даже не постеснялись Матлаб, Вольфрам и Математику назвать "я не знаю кто это"

Дайте ссылку на рейтинги статистических пакетов, в которых был бы пакет Математика (Вольфрам). Матлаб был, да почил в бозе.  Я вот приводил в своем блоге на вашем сайте и много кратно выкладывал на форуме

Вы умалчиваете, что:

  • показываете сравнение бесплатного R с платным пакетами
  • игнорируете исторические (5-10 лет назад) позиции математических пакетов, заявляя на этом основании "они никто"
  • меняете популярность и обсуждаемую точность вычислений

Матлаб никуда не почил, как и остальные пакеты. Да, платные, но качественные. Да, популярность будет падать, но точность и качество никуда не денутся.

Про Вольфрам Альфа почитайте и исследуйте его сайт - это фундаментальные инвестиции в аналитику, на которые мало кто способен. И точность у Wolfram Alpha в 30 знаков, что доказывает их маниакальное внимание к качеству вычислений.

Wolfram|Alpha: Computational Knowledge Engine
  • www.wolframalpha.com
Wolfram|Alpha is more than a search engine. It gives you access to the world's facts and data and calculates answers across a range of topics, including science, nutrition, history, geography, engineering, mathematics, linguistics, sports, finance, music...
 
Alexey Burnakov:

Re: [Rd] dgamma density values in extreme point
Duncan Murdochmurdoch.duncan@gmail.com
сегодня в 12:59
Вам

К сожалению, вы неполно сформулировали вопрос и получили непроработанный и краткий вежливый ответ "это не имеет значения".

Вы хотели получить ответ "так договорились/convention", сформулировав его в самом вопросе. Но Дункан ушел от ответа "что есть правильно" в первый раз, а во второй раз повторил его.

Вы не получили подтверждения точности в R и не получили ответа, почему в других пакетах результат другой. Разбор вопроса "почему в других пакетах ответ другой" более важен и способен раскрыть тему.


Наша позиция:

выражение для dgamma

(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s)

for x ≥ 0, a > 0 and s > 0


в точке 0 является неопределенным.

В R считают, что можно включать эту точку в расчет, но при этом взять предельные значения, даже если они равны бесконечности как в случае dgamma(0,0.5,1).

Однако, если рассчитывать вероятности с учетом бесконечности в нулевой точке, все интегралы от dgamma формально становятся бесконечными и по этой логике pgamma должна быть равна бесконечности для всех значений x.

Однако это противоречит результатам pgamma, где все значения оказываются конечными. Они правильные, будто в точке x=0 считается что плотность =0.
 

Для @СанСаныч Фоменко - MQL4/MQL5 поднялся на 41 место в мировом рейтинге языков программирования TIOBE: http://www.tiobe.com/tiobe-index/

R на 19 месте, Mathlab на 15 месте.

Это чтобы развеять ваши заявления про "не авторитет" и "не мировой топ".

TIOBE Index | TIOBE - The Software Quality Company
  • www.tiobe.com
TIOBE Index for November 2016 November Headline: Is Haskell finally going to hit the top 20? Some people say that Haskell is the most mature purely functional programming language available nowadays. It has quite a long history, dating back from 1990 and its community is growing, although slowly. This month Haskell is only 0.255% away from the...
 

Чтобы не потерялась нить обсуждений, вот найденная в процессе тестирования R ошибка расчета квантилей нецентрального t-распределения.

Например:

> n <- 10
> k <- seq(0,1,by=1/n)
> nt_pdf<-dt(k, 10,8, log = FALSE)
> nt_cdf<-pt(k, 10,8, log = FALSE)
> nt_quantile<-qt(nt_cdf, 10,8, log = FALSE)
> nt_pdf
 [1] 4.927733e-15 1.130226e-14 2.641608e-14 6.281015e-14 1.516342e-13 3.708688e-13 9.166299e-13
 [8] 2.283319e-12 5.716198e-12 1.433893e-11 3.593699e-11
> nt_cdf
 [1] 6.220961e-16 1.388760e-15 3.166372e-15 7.362630e-15 1.742915e-14 4.191776e-14 1.021850e-13
 [8] 2.518433e-13 6.257956e-13 1.563360e-12 3.914610e-12
> k
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
> nt_quantile
 [1]           -Inf -1.340781e+154 -1.340781e+154 -1.340781e+154 -1.340781e+154 -1.340781e+154
 [7] -1.340781e+154   7.000000e-01   8.000000e-01   9.000000e-01   1.000000e+00

Для расчета вероятности нецентрального T-распределения Стьюдента в языке R используется алгоритм AS 243, предложенный Lenth [6]. Достоинством этого метода является быстрый рекуррентный расчет членов бесконечного ряда с неполной бета-функций. Но в статье [7] было показано, что из-за ошибки оценки точности при суммировании членов ряда данный алгоритм приводит к ошибкам (таблица 2 в статье [7]), особенно для больших значений параметра нецентральности delta. Авторы статьи [7] предложили скорректированный алгоритм рекуррентного расчета вероятности нецентрального T-распределения.

У нас в статистической библиотеке MQL5 используется правильный алгоритм для расчета вероятностей из статьи [7] , что дает точные результаты.


Кроме того, в языке R способ определения плотностей для распределений Gamma, ChiSquare и Noncentral ChiSquare в точке x=0 приводит к бесконечным выражениям:

> dgamma(0,0.5,1)
[1] Inf
> dchisq(0,df=0.5,ncp=1)
[1] Inf
> dchisq(0,df=0.5,ncp=0)
[1] Inf

Таким образом, получается, точка x=0 в R включена в область определения выражения для плотности и решением являются предельные значения.

В данном случае предельным значением в точке x=0 является бесконечность. При таком подходе в результате интегрирования от 0 до x>0 из-за расходимости в точке x=0 вероятности должны быть бесконечными.

Однако результатом расчета вероятностей (например, для x=0.1) являются конечные выражения:

> pgamma(0.1,0.5,1)
[1] 0.3452792
> pchisq(0.1,df=0.5,ncp=0)
[1] 0.5165553
> pchisq(0.1,df=0.5,ncp=1)
[1] 0.3194965

Несмотря на то, что в точке x=0 плотность считается бесконечной, результаты расчета вероятностей в R не являются бесконечными, они совпадают со значениями Wolfram Alpha (Gamma, ChiSquare, NoncentralChiSquare).

Для избежания проблем с интегрированием функций, обращающихся в бесконечность в при x=0, в Wolfram Alpha (Mathematica) и Matlab плотность в точке x=0 равна 0 по определению:


Рис. 3. Определение плотности вероятности распределения Gamma в Wolfram Alpha


Рис. 4. Определение плотности вероятности распределения ChiSquare в Wolfram Alpha



Рис. 5. Определение плотности вероятности распределения Noncentral ChiSquare в Wolfram Alpha


Мы считаем такой поход правильным. Он позволяет избежать неопределенностей в определении плотности вероятности и решить проблему с бесконечными значениями, которые могут возникнуть при интегрировании плотности вероятности.

По этой причине в точке x=0 плотности данных распределений считаются равными нулю по определению, а не бесконечности, как в R.

Чтобы быть уверенными в точности расчетов и дать возможность сторонним разработчикам проверить качество библиотеки, мы включили несколько unit test скриптов в поставку.

Литература

  1. The R Project for Statistical Computing.
  2. Балакришнан Н., Джонсон Н.Л., Коц С.  "Одномерные непрерывные распределения: часть 1." М.: БИНОМ. Лаборатория знаний, 2014.
  3. Балакришнан Н., Джонсон Н.Л., Коц С.  "Одномерные непрерывные распределения: часть 2." М.: БИНОМ. Лаборатория знаний, 2014.
  4. Джонсон Н.Л., Коц С., Кемп А.  "Одномерные дискретные распределения",  М.: БИНОМ. Лаборатория знаний, 2014.
  5. Forbes C., Evans M., Hastings N., Peacock B., "Statistical Distributions", 4th Edition, John Wiley and Sons, 2011.
  6. Lenth, R.V., "Cumulative distribution function of the noncentral t distribution", Appled Statistics,  vol. 38 (1989), 185–189.
  7. D. Benton, K. Krishnamoorthy, "Computing discrete mixtures of continuous distributions: noncentral chisquare, noncentral t and the distribution of the square of the sample multiple correlation coefficient",  Computational Statistics & Data Analysis, 43, (2003), 249-267
Wolfram|Alpha: Computational Knowledge Engine
  • www.wolframalpha.com
Wolfram|Alpha is more than a search engine. It gives you access to the world's facts and data and calculates answers across a range of topics, including science, nutrition, history, geography, engineering, mathematics, linguistics, sports, finance, music...
 
Renat Fatkhullin:

Для @СанСаныч Фоменко - MQL4/MQL5 поднялся на 41 место в мировом рейтинге языков программирования TIOBE: http://www.tiobe.com/tiobe-index/

R на 19 месте, Mathlab на 15 месте.

Это чтобы развеять ваши заявления про "не авторитет" и "не мировой топ".

Я обсуждаю статистику. И мои рейтинги по статистическим пакетам.

Более того. В приведенной Вами цитате R стоит выше MQL4/5 в этой статистике по алгоритмическим языкам. Но для меня это вообще НЕ является основанием, например, для перехода с МКЛ на R. Я вообще не обсуждаю алгоритмические возможности R.

Для меня главная сила R - это его пакеты, это поддержка всей этой системы, это авторитет людей их разработавших, это огромная тусовка на R, в конце концов огромное количество публикаций, привязанных к R.

Кроме этого, как человек просидевший 15 лет в ученых советах. Если пишут "аналог R" , то это аналог без всяких исключений. И  иначе НЕ БЫВАЕТ. В противном - это НЕ аналог R, вполне может быть намного правильнее, но не аналог   
 

 
СанСаныч Фоменко:

Я обсуждаю статистику. И мои рейтинги по статистическим пакетам.

Более того. В приведенной Вами цитате R стоит выше MQL4/5 в этой статистике по алгоритмическим языкам. Но для меня это вообще НЕ является основанием, например, для перехода с МКЛ на R. Я вообще не обсуждаю алгоритмические возможности R.

А мы обсуждаем конкретную ошибку в R.

Так что не лезьте со своими рейтингами, раз не в курсе математики и конкретного разбираемого случая.

 

СанСаныч Фоменко:

...

Для меня главная сила R - это его пакеты, это поддержка всей этой системы, это авторитет людей их разработавших, это огромная тусовка на R, в конце концов огромное количество публикаций, привязанных к R.
 ...

Гнильё какое-то этот R - велосипед с квадратными колёсами. Что говорить о каких-то его пакетах, когда сама основа, т.е. ЯП в R кривой и нуждается в серьёзной доработке "драчевым напильником"? Какой может быть авторитет у тех, кто даже не удосужился за столько лет проверить корректность базовых функций в R? Какая может быть "сила" в слабом месте R - некорректности расчётов через него?

Хорошо, что MetaQuotes  открыли глаза некоторым пользователям на то, что на самом деле представляет этот самый R, на фактах и тестах с открытыми исходниками, чтобы каждый мог самостоятельно перепроверить и убедиться, а не голословно. Не всем конечно открыли, т.к. отдельные религиозные фанатики из деструктивной секты R будут продолжать слепо верить в "непогрешимость" расчётов в их кривом языке и пакетах, вместо того, чтобы обратиться к представленным тестам и перепроверить их самостоятельно, а не фанатично гнать пургу, выгораживая кривизну R в качестве "общепринятого стандарта". 

Теперь вполне очевидно, что лучше пользоваться функционалом MQL для создания торговых стратегий, поскольку результат будет более корректным,  а пытаться делать это через кривой и косой R.

За конструктивный подход, тесты и их исходники, а также за выявление "голого короля - R", разработчикам MetaQuotes надо сказать отдельное спасибо!

 
Quantum:
Ширина 0 нас не интересует, нам нужно понять как ведет себя такой интеграл, т.е. cdf(x). Что за функция получается? будет ли она совпадать с pgamma(x)?

> dgamma_05_1 <- function(x)dgamma(x,0.5,1) #всего 1 параметр, чтоб удобней работать

> pgamma_05_1 <- function(x)pgamma(x,0.5,1#всего 1 параметр, чтоб удобней работать

> pgamma_05_1_integralform <- function(x)integrate(dgamma_05_1, 0, x)$value #вычисление pgamma путём интегрирования dgamma
>
> pgamma_05_1(0.00001)
[1] 0.003568236
> pgamma_05_1_integralform(0.00001)
[1] 0.003568236
> pgamma_05_1(0.00001) - pgamma_05_1_integralform(0.00001)
[1] -6.938894e-18
>
> pgamma_05_1(0.0001)
[1] 0.01128342
> pgamma_05_1_integralform(0.0001)
[1] 0.01128342
> pgamma_05_1(0.0001) - pgamma_05_1_integralform(0.0001)
[1] 3.295975e-17
>
> pgamma_05_1(0.001)
[1] 0.03567059
> pgamma_05_1_integralform(0.001)
[1] 0.03567059
> pgamma_05_1(0.001) - pgamma_05_1_integralform(0.001)
[1] 1.595946e-16
>
> pgamma_05_1(0.01)
[1] 0.1124629
> pgamma_05_1_integralform(0.01)
[1] 0.1124629
> pgamma_05_1(0.01) - pgamma_05_1_integralform(0.01)
[1] 1.096345e-15
>
> pgamma_05_1(0.1)
[1] 0.3452792
> pgamma_05_1_integralform(0.1)
[1] 0.3452792
> pgamma_05_1(0.1) - pgamma_05_1_integralform(0.1)
[1] 1.126876e-13
>
> pgamma_05_1(1)
[1] 0.8427008
> pgamma_05_1_integralform(1)
[1] 0.8427008
> pgamma_05_1(1) - pgamma_05_1_integralform(1)
[1] 3.460265e-11

pgamma() найденная стандартным образом и через integrate(dgamma()) почти совпадают, видно что погрешность доходит всего до 3.460265e-11 при x=1. Но такая погрешность вполне ожидаема, интегрирование тут идёт суммой через маленькие шажки, без всяких предварительных анализов и упрощений. Сама функция pgamma() написана на c++ и должна быть точнее чем интегрирование с помощью integrate(). Поэтому стоит использовать именно pgamma(x,0.5,1), а не integrate(dgamma(x,0.5,1),0,x)

 
Yury Reshetov:

Что говорить о каких-то его пакетах, когда сама основа, т.е. ЯП в R кривой и нуждается в серьёзной доработке "драчевым напильником"?  

 

 

ЯП R - кривоватый и медленный.

Если разделить обсуждение на чисто классическую статистику, которая есть и в базовой поставке и в дополнительных пакетах, думаю проблем никаких здесь нет. Если вы проводите миллионы стат.тестов, то производительность других языков (в т.ч., MQL) окажется плюсом.

Если говорить про то, как в R вообще программируется, то скажу вам, Юрий, люди используют опять-таки пакеты для быстрой обработки данных (dplyr, data.table, а для графиков - ggplot2). Сам R опять-таки скриптовый язык, древний, не предназначен для массивных данных.

Но даже не смотря на все это, поток грязи с вашей стороны все-таки не оправдано высок. Мы тут обсуждали статистику, и даже не рефакторинг кода и прочие технические вещи. Разговор шел за математические концепции.

Причина обращения: