LinearRegression

계산된 선형 회귀 값으로 벡터/행렬을 계산합니다.

vector vector::LinearRegression();
 
matrix matrix::LinearRegression(
  ENUM_MATRIX_AXIS  axis=AXIS_NONE  // 회귀가 계산되는 축
   );

패러미터

【in】 회귀가 계산되는 축을 지정. ENUM_MATRIX_AXIS 열거형 값(AXIS_HORZ — 가로축, AXIS_VERT — 세로축).

반환 값

계산된 선형 회귀 값이 있는 벡터 또는 행렬.

주의

선형 회귀는 표준 회귀 방정식: y(x) = b + a * x + b를 사용하여 계산됩니다. 여기서 a는 선 기울기이고 b는 Y축 이동입니다.

linear_regression

예:

#include <Graphics\Graphic.mqh>
 
#define GRAPH_WIDTH  750
#define GRAPH_HEIGHT 350
 
/+------------------------------------------------------------------+
//| 프로그램 시작 함수 스크립트                                        |
/+------------------------------------------------------------------+
void OnStart()
  {
   vector vector_a;
   vector_a.CopyRates(_Symbol,_Period,COPY_RATES_CLOSE,1,100);
   vector vector_r=vector_a.LinearRegression();
 
//--- 차트 표시 끄기
   ChartSetInteger(0,CHART_SHOW,false);
 
//--- 그래프를 그리기 위한 배열
   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];
     }
 
//--- 그래프 타이틀
   string title="Linear regression "+_Symbol+","+EnumToString(_Period);
 
   long   chart=0;
   string name="LinearRegression";
 
//--- 그래프 생성
   CGraphic graphic;
   graphic.Create(chart,name,0,0,0,GRAPH_WIDTH,GRAPH_HEIGHT);
   graphic.BackgroundMain(title);
   graphic.BackgroundMainSize(12);
   
//--- 활성화 함수 그래프
   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);
 
//--- 활성화 함수의 미분
   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();
 
//--- 키보드 버튼을 누른것을 인식하는 무한 루프
   while(!IsStopped())
     {
//--- Esc 버튼을 눌러 프로그램을 종료
      if(TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE)!=0)
         break;
//--- 그래프 그림을 저장하려면 PdDn을 누르십시오
      if(TerminalInfoInteger(TERMINAL_KEYSTATE_PAGEDOWN)!=0)
        {
         string file_names[];
         if(FileSelectDialog("Save Picture",NULL,"All files (*.*)|*.*",FSD_WRITE_FILE,file_names,"LinearRegression.png")<1)
            continue;
         ChartScreenShot(0,file_names[0],GRAPH_WIDTH,GRAPH_HEIGHT);
        }
      Sleep(10);
     }
 
//--- 정리
   graphic.Destroy();
   ObjectDelete(chart,name);
   ChartSetInteger(0,CHART_SHOW,true);
  }

ENUM_MATRIX_AXIS

행렬에서 모든 통계 함수에서 축을 지정하기 위한 열거형

ID

설명

AXIS_NONE

축이 지정되지 않았습니다. 마치 벡터인 것처럼 모든 행렬 요소에 대해 계산이 수행됩니다.Flast 메서드를 참고).

AXIS_HORZ

수평축

AXIS_VERT

수직축