Discussão do artigo "Distribuições estatísticas no MQL5 - tirando o melhor de R" - página 15

 

Obrigado,

Apenas por precaução (caso seja importante):

Tenho o MT5 em execução via wine no ubuntu 14

 
Tenho o MT5 em execução via Wine no Ubuntu 14
e, sim, o sistema é de 32 bits
 

Ou eu baguncei alguma coisa ou há um problema com o cálculo da densidade empírica. Parece que os eixos foram misturados durante o dimensionamento:

#include <Math\Stat\Normal.mqh>
#include <Graphics\Graphic.mqh>
#define  NR 1000
#define  N 100
void OnStart()
  { double x[N], y[N], r[NR];
   if (!MathSequenceByCount(-1,1,N,x)) {Print("MathSequenceByCount() error "); return;}
   if (!MathProbabilityDensityNormal(x,0,1,y)) {Print("MathProbabilityDensityNormal() error "); return;}
   ChartSetInteger(0,CHART_SHOW,false);
   CGraphic graphic;
   graphic.Create(0,"G",0,0,0,750,350);
   graphic.CurveAdd(x,y,CURVE_LINES,"theor.");
   if (!MathRandomNormal(0,1,NR,r)) {Print("MathRandomNormal() error "); return;}
   if (!MathProbabilityDensityEmpirical(r,N,x,y)) {Print("MathProbabilityDensityEmpirical() error "); return;} 
   graphic.CurveAdd(x,y,CURVE_LINES,"empir.");
   graphic.CurvePlotAll();
   graphic.Update(); 
   Sleep(30000);
   ChartSetInteger(0,CHART_SHOW,true);
   graphic.Destroy(); 
  }

distante

 

Erro no cálculo do RMS

//+------------------------------------------------------------------+
//| Calcula a variância dos valores no array[] |.
//+------------------------------------------------------------------+
double MathVariance(const double &array[])
  {
   int size=ArraySize(array);
//--- verificar o intervalo de dados
   if(size<2)
      return(QNaN); // precisa de pelo menos 2 observações
//--- calcular a média
   double mean=0.0;
   for(int i=0; i<size; i++)
      mean+=array[i];
   mean=mean/size;
//--- calcular a variância
   double variance=0;
   for(int i=0; i<size; i++)
      variance+=MathPow(array[i]-mean,2);
   variance=variance/(size-1);
//--- variação de retorno
   return(variance);
  }
 
fxsaber:

Erro ao calcular o RMS

Isso é uma resposta para alguém ou apenas uma conversa consigo mesmo? Amanhã darei uma olhada no código-fonte, talvez haja um erro lá.

 
Rashid Umarov:

Isso é uma resposta para alguém ou apenas uma conversa consigo mesmo? Amanhã darei uma olhada no código-fonte, talvez haja algum erro nele.

O artigo descreve funções do Math.mqh, em particular. Extraí o código-fonte de uma dessas funções e destaquei o erro.

 
fxsaber:

O artigo descreve funções do Math.mqh, em particular. Extraí o código-fonte de uma dessas funções e destaquei o erro.

é o cálculo do desvio padrão não tendencioso, ou seja, o desvio padrão. Ou seja, há dois quadráticos :-) se dividido simplesmente pelo tamanho - então o quadrado médio, se pelo tamanho-1, então imparcial ou padrão. Em casos diferentes, são usados diferentes, mas no caso de tamanho grande, a diferença é muito pequena
 
Maxim Kuznetsov:
é o cálculo do desvio padrão ou imparcial. Em outras palavras, há duas quadráticas :-) se divididas simplesmente pelo tamanho -, então o quadrado médio; se divididas pelo tamanho-1, então o desvio padrão ou imparcial. Em casos diferentes, são usados diferentes, mas em tamanho grande a diferença é extremamente pequena

Sim, é

 
Maxim Kuznetsov:
é o cálculo do desvio padrão ou imparcial. Em outras palavras, há duas quadráticas :-) se divididas simplesmente pelo tamanho - então o quadrado médio, se divididas pelo tamanho-1, então o desvio padrão ou imparcial. Diferentes se aplicam a diferentes casos, mas em um tamanho grande a diferença é extremamente pequena

Por que introduzir algo que não funciona em um tamanho pequeno e que difere minimamente em um tamanho grande?

Você pode dividir por (tamanho-1) no MathMean. Quase ninguém vai notar.


O ZY R também conta por (tamanho-1)? Eu verifiquei no MathMean - ele divide por tamanho. Wolfram - por (tamanho-1). Estupidez.

Wolfram|Alpha: Computational Knowledge Engine
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...
 
fxsaber:

Por que introduzir algo que não funciona em tamanhos pequenos e é minimamente diferente em tamanhos grandes?

Você pode dividir por (tamanho-1) no MathMean. Quase ninguém perceberá.

Isso é para você fazer um curso de estatística matemática :-)) Considere isso uma verdade divina que nos foi dada do alto e na forma de GOST.