Discusión sobre el artículo "Distribuciones Estadísticas en MQL5: tomando lo mejor de R" - página 15

 

Gracias,

por si acaso (en caso de que importe):

Tengo MT5 corriendo via wine en ubuntu 14

 
Tengo MT5 ejecutando a través de vino en ubuntu 14
y sí, el sistema es de 32 bits
 

O he metido la pata en algo, o hay un problema con el cálculo de la densidad empírica. Parece como si los ejes se hubieran mezclado durante el escalado:

#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(); 
  }

lejos

 

Error de cálculo RMS

//+------------------------------------------------------------------+
//| Calcula la varianza de los valores del array[] |
//+------------------------------------------------------------------+
double MathVariance(const double &array[])
  {
   int size=ArraySize(array);
//--- comprueba el rango de datos
   if(size<2)
      return(QNaN); // necesita al menos 2 observaciones
//--- calcular la media
   double mean=0.0;
   for(int i=0; i<size; i++)
      mean+=array[i];
   mean=mean/size;
//--- calcular la varianza
   double variance=0;
   for(int i=0; i<size; i++)
      variance+=MathPow(array[i]-mean,2);
   variance=variance/(size-1);
//--- devolver varianza
   return(variance);
  }
 
fxsaber:

Error al calcular RMS

¿Esto es una respuesta a alguien o sólo hablas contigo mismo? Mañana voy a mirar el código fuente, tal vez hay un error allí.

 
Rashid Umarov:

¿Esto es una respuesta a alguien o sólo hablas contigo mismo? Mañana miraré el código fuente, quizás haya algún error.

El artículo describe funciones de Math.mqh, en particular. He extraído el código fuente de una de esas funciones y he resaltado el error.

 
fxsaber:

El artículo describe funciones de Math.mqh, en particular. He extraído el código fuente de una de esas funciones y he resaltado el error.

es el cálculo de la insesgada, es decir, la desviación estándar. Es decir, hay dos cuadráticas :-) si se divide simplemente por tamaño - entonces la media cuadrática, si por tamaño-1 entonces insesgada o estándar. En diferentes casos se utilizan diferentes, pero en caso de gran tamaño de la diferencia es muy pequeña
 
Maxim Kuznetsov:
es el cálculo de la desviación insesgada o estándar. En otras palabras, hay dos cuadráticas :-) si se divide simplemente por el tamaño - entonces la media cuadrática, si se divide por el tamaño-1 entonces la desviación insesgada o estándar. En diferentes casos se utilizan diferentes, pero a gran tamaño la diferencia es muy pequeña.

Sí, lo es.

 
Maxim Kuznetsov:
es el cálculo de la desviación insesgada o estándar. En otras palabras, hay dos cuadráticas :-) si se divide simplemente por el tamaño - entonces la media cuadrática, si se divide por el tamaño-1 entonces la desviación insesgada o estándar. En cada caso se aplican valores diferentes, pero a gran tamaño la diferencia es mínima.

¿Por qué introducir algo que no funciona con tamaños pequeños y que difiere mínimamente con tamaños grandes?

Puede dividir por (tamaño-1) en MathMean. Casi nadie se dará cuenta.


¿ZY R también cuenta por (tamaño-1)? Lo he comprobado en MathMean - divide por tamaño. Wolfram - por (tamaño-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 qué introducir algo que no funciona en tamaños pequeños y es mínimamente diferente en tamaños grandes?

Puede dividir por (tamaño-1) en MathMean. Casi nadie se dará cuenta.

Eso es para que tomes un curso de estadística matemática :-)) Considéralo una verdad divina que nos viene de arriba y en forma de GOST.