Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее" - страница 18

 
На странице справки вместо MathProbabilityDensityGamma() значится MathProbabilityDensityNoncentralBeta()
 
Aleksey Nikolayev:
На странице справки вместо MathProbabilityDensityGamma() значится MathProbabilityDensityNoncentralBeta()

Спасибо, исправили

 

Некорректно вычисляется CDF гипергеометрического распределения функцией MathCumulativeDistributionHypergeometric(). По определению, функция распределения вероятностей должна быть определена для любого действительного числа. Ниже скрипт на mql5 с результатами его работы и, для сравнения, то же самое на R.

#include <Math\Stat\Hypergeometric.mqh>

input int nall=9;  // all
input int nsc=2;   // all success
input int nsm=8;   // sample size

void OnStart()
  { int er;
    double k[]={-1,0,0.5,1};
    for(int i=0; i<4; ++i)
      Print((string)k[i]+" "+(string)MathCumulativeDistributionHypergeometric(k[i],nall,nsc,nsm,er)+" "+(string)er);
  }

результат:

-1.0 nan 2

0.0 0.0 0

0.5 nan 2

zero divide in 'Hypergeometric.mqh' (241,35)

nall <- 9 # all
nsc <- 2  # all success
nsm <- 8  # sample size

k <- c(-1, 0, 0.5, 1)
phyper(k, nsc, nall-nsc, nsm)

результат:

[1] 0.0000000 0.0000000 0.0000000 0.2222222

 
Aleksey Nikolayev:

Некорректно вычисляется CDF гипергеометрического распределения функцией MathCumulativeDistributionHypergeometric().

Спасибо за сообщение, будем разбираться.

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

Если ничего не напутал, в функциях быстрой сортировки MathQuickSort*() не заполняется массив индексов исходного массива:

#include <Math\Stat\Math.mqh>

void OnStart()
  { double a[]={1.5, 2.0, -1.0, 0.0};
    int na=ArraySize(a);
    int ix[]; ArrayResize(ix,na);
    for(int i=0; i<na; ++i) ix[i]=0;
    
    //MathQuickSort(a,ix,1,2,1);
    //MathQuickSort(a,ix,1,2,-1);
    MathQuickSortAscending(a,ix,1,2);
    //MathQuickSortDescending(a,ix,1,2);
    
    for(int i=0; i<na; ++i)
      Print((string)ix[i]+" "+(string)a[i]);
  }

результат:

0 1.5

0 -1.0

0 2.0

0 0.0

 
Aleksey Nikolayev:

Если ничего не напутал, в функциях быстрой сортировки MathQuickSort*() не заполняется массив индексов исходного массива:

В нашей реализации массив индексов сам не заполняется, значения индексов нужно подготовить самому перед вызовом сортировки:

    for(int i=0; i<na; ++i) ix[i]=i;

или

    for(int i=0; i<na; ++i) ix[i]=i+1;
если требуется натуральный порядок.
 

Setslav

>>>Продукт был скрыт, чтобы обратить на него Ваше внимание.

Плюс, не нахожу кнопку опубликовать новый продукт в Маркете. Это у всех так, или опять-таки же только у меня? Как мне опубликовать версию для МТ5?

Если продукт скрыт модератором, то автор не может его вернуть. Это логично

 

Отрицательны некоторые (не все) биномиальные коэффициенты, например:

#include <Math\Stat\Math.mqh>

void OnStart()
  { Print(MathBinomialCoefficient(62,28));
  }

результат:     -309196571788882235

должно быть: 349615716557887488

 
Aleksey Nikolayev:
Есть пожелание, чтобы в библиотеку было добавлено распределение Колмогорова. Оно весьма полезно из-за использования в критерии Колмогорова-Смирнова и в задаче поиска разладки случайного процесса.

На всякий случай оставлю здесь. Вычисление CDF и дополнения к ней для распределения статистики Колмогорова-Смирнова для двустороннего одновыборочного теста.

Файлы:
KS.mqh  16 kb