LinearRegression

Calcule un vecteur/une matrice avec des valeurs de régression linéaire calculées.

vector vector::LinearRegression();
 
matrix matrix::LinearRegression(
  ENUM_MATRIX_AXIS  axis=AXIS_NONE      // axe le long duquel la régression est claculée
   );

Paramètres

axis

[in]  Spécifie l'axe long duquel la régression est calculée. Valeur de l'énumération ENUM_MATRIX_AXIS (AXIS_HORZ – axe horizontal, AXIS_VERT – axe vertical).

Valeur de Retour

Vecteur ou matrice avec valeurs de régression linéaire calculées.

Note

La régression linéaire est calculée à l'aide de l'équation de régression standard : y (x) = a * x + b, où a est la pente de la ligne, et b son décalage sur l'axe Y.

linear_regression

Exemple :

#include <Graphics\Graphic.mqh>
 
#define GRAPH_WIDTH  750
#define GRAPH_HEIGHT 350
 
//+------------------------------------------------------------------+
//| Fonction de démarrage du programme                               |
//+------------------------------------------------------------------+
void OnStart()
  {
   vector vector_a;
   vector_a.CopyRates(_Symbol,_Period,COPY_RATES_CLOSE,1,100);
   vector vector_r=vector_a.LinearRegression();
 
//--- désactive l'affichage du graphique
   ChartSetInteger(0,CHART_SHOW,false);
 
//--- tableaux pour dessiner le graphique
   double x[];
   double y1[];
   double y2[];
   ArrayResize(x,uint(vector_a.Size()));
   ArrayResize(y1,uint(vector_a.Size()));
   ArrayResize(y2,uint(vector_a.Size()));
   for(ulong i=0i<vector_a.Size(); i++)
     {
      x[i]=(double)i;
      y1[i]=vector_a[i];
      y2[i]=vector_r[i];
     }
 
//--- titre du graphique
   string title="Régression linéaire "+_Symbol+","+EnumToString(_Period);
 
   long   chart=0;
   string name="LinearRegression";
 
//--- crée le graphique
   CGraphic graphic;
   graphic.Create(chart,name,0,0,0,GRAPH_WIDTH,GRAPH_HEIGHT);
   graphic.BackgroundMain(title);
   graphic.BackgroundMainSize(12);
   
//--- graphique de la fonction d'activation
   CCurve *curvef=graphic.CurveAdd(x,y1,CURVE_POINTS_AND_LINES);
   curvef.Name("vector_a");
   curvef.LinesWidth(2);
   curvef.LinesSmooth(true);
   curvef.LinesSmoothTension(1);
   curvef.LinesSmoothStep(10);
 
//--- dérivées de la fonction d'activation
   CCurve *curved=graphic.CurveAdd(x,y2,CURVE_LINES);
   curved.Name("vector_r");
   curved.LinesWidth(2);
   curved.LinesSmooth(true);
   curved.LinesSmoothTension(1);
   curved.LinesSmoothStep(10);
   graphic.CurvePlotAll();
   graphic.Update();
 
//--- boucle infinie pour identifier les touches du clavier utilisées
   while(!IsStopped())
     {
      //--- appuyez sur Echap pour terminer le programme
      if(TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE)!=0)
         break;
      //--- appuyez sur Page Suivante pour sauvegarder une image du graphique
      if(TerminalInfoInteger(TERMINAL_KEYSTATE_PAGEDOWN)!=0)
        {
         string file_names[];
         if(FileSelectDialog("Sauvegarder l'Image",NULL,"Tous les fichiers (*.*)|*.*",FSD_WRITE_FILE,file_names,"LinearRegression.png")<1)
            continue;
         ChartScreenShot(0,file_names[0],GRAPH_WIDTH,GRAPH_HEIGHT);
        }
      Sleep(10);
     }
 
//--- nettoyage
   graphic.Destroy();
   ObjectDelete(chart,name);
   ChartSetInteger(0,CHART_SHOW,true);
  }

ENUM_MATRIX_AXIS

Enumération permettant de spécifier l'axe dans toutes les fonctions statistiques pour les matrices.

ID

Description

AXIS_NONE

L'axe n'est pas spécifié. Le calcul est effectué sur tous les éléments de la matrice, comme s'il s'agissait d'un vecteur (voir la méthode Flat).

AXIS_HORZ

Axe horizontal

AXIS_VERT

Axe vertical