선형 회귀 작성 도움말 - 페이지 6

 

아마도 이 경우 가장 좋은 방법은 모든 X[i]의 산술 평균을 찾아 값 자체에서 빼서 회귀 계수를 계산하고 다시 수정하는 것입니다. 원칙적으로 Y[i]로 동일한 작업을 수행하는 것을 방해하는 것은 없습니다. 그러나 분명히 어렵지는 않지만 공식을 찾으려고 노력하지 않았습니다. 약한 조건 행렬에는 분명히 일종의 농담이 있습니다.

추신 그리고 데이터 시리즈를 정규화한 후에는 거의 같은 순서로 가져올 수 있습니다.

 
Mathemat писал (а) >> 를 썼습니다.

아마도 이 경우 가장 좋은 방법은 모든 X[i]의 산술 평균을 찾아 값 자체에서 빼서 회귀 계수를 계산하고 다시 수정하는 것입니다. 원칙적으로 Y[i]로 동일한 작업을 수행하는 것을 방해하는 것은 없습니다. 그러나 분명히 어렵지는 않지만 공식을 찾으려고 노력하지 않았습니다. 약한 조건 행렬에는 분명히 일종의 농담이 있습니다.

추신 그리고 데이터 시리즈를 정규화한 후에는 거의 같은 순서로 가져올 수 있습니다.

그리고 MOZH를 통해 제안하고 제안했습니다. 직접 공식은 조정할 필요가 없습니다.

이제 BASE 코드에 ACF를 넣을 수 있습니다. 다시 확인해보니 모두 8자리까지 일치하는데 MQL에서 계산된 ACF 값을 파일에 쓰기 때문일 가능성이 큽니다.

 

Sergey, 나는 이미 몇 년 전에 LR을 썼을 때 이것을 우연히 발견했습니다. 탈출구는 간단합니다. Candid 의 추천을 들어보세요. 이 권장 사항에서 명확히 하고 싶은 것은 Time[Bars-1]이 아니라 첫 번째 값 X[]의 시간을 빼는 것입니다. 첫째, X 원점의 이전이 절차 내에서 수행되기 때문에 절차 코드를 보편적으로 만듭니다. 둘째, 차트에 막대가 많은 경우(3년은 이미 1000000분, 즉 60000000초) 차트의 첫 번째 막대 시간을 빼도 상황이 근본적으로 바뀌지 않습니다. 셋째, MO 없이 원래 공식으로 돌아갈 수 있습니다. 즉, 정확성을 유지하면서 주기의 반복을 제거할 수 있습니다.

하나 더. 나는 당신의 X[]가 분의 시간이라는 것을 알아차렸습니다. 즉, X는 등거리 에 위치합니다. 그리고 이것은 일반적으로 시간에서 벗어나 막대 번호 를 사용할 수 있음을 의미합니다. 이 전환을 수행하면 모든 것이 정확하고 빠르게 고려됩니다. 당신은 확인할 수 있습니다. 이것은 LR이 M1과 D1 모두에서 동일하게 작동한다는 관점에서도 바람직합니다(막대가 아니라 시간인 경우 D1에서 X 값이 어떻게 다른지 상상해 보세요).

 
Yurixx писал (а) >>

세르게이, ..

감사합니다. 모두 시도했습니다.

방금 내 계산 버전을 게시했는데 누군가가 도움이 될 것입니다. 아무데도 옮길 필요가 없습니다. X를 포인트 0으로 옮기는 것은 나에게 불편하다. ACF를 계산할 때 이 함수를 사용하며 시간과 연결되어야 합니다(일부 종속성이 있음).

 

예, 일반적으로 X 자체를 포인트 0으로 전송할 필요가 없습니다. 이렇게 하려면 건물 LR의 함수에서 X 자체가 아니라 X[1]만큼 시간 이동된 내부 배열을 사용하는 것으로 충분합니다. 배열 없이도 할 수 있으며 합계를 계산할 때 X[1] 값을 빼면 됩니다.

그건 그렇고, 당신이 그것을 시도한다면, 정말 도움이되지 않았습니까?

 
Yurixx писал (а) >>

예, 일반적으로 X 자체를 포인트 0으로 전송할 필요가 없습니다. 이렇게 하려면 건물 LR의 함수에서 X 자체가 아니라 X[1]만큼 시간 이동된 내부 배열을 사용하는 것으로 충분합니다. 배열 없이도 할 수 있으며 합계를 계산할 때 X[1] 값을 빼면 됩니다.

그건 그렇고, 당신이 그것을 시도한다면, 정말 도움이되지 않았습니까?

시도해 보니 효과가 있는 것 같습니다. 그러나 한 가지 주의할 점이 있습니다. 알고리즘이 6개의 숫자 배열로 이러한 오류를 제공하면 오프셋을 사용하더라도 오류가 누적되지 않는다는 보장이 없습니다. 내가 작업하고 있는 어레이는 7200(분)입니다. 따라서 그러한 알고리즘을 찾았으며 올바르게 작동합니다. 더 이상 신뢰가 없기 때문에 포기해야 했습니다.

 //+------------------------------------------------------------------+
//| Формула предлагаемая мной                                        |
//| Рассчет коэффициентов A и B в уравнении                          |
//| y(x)=A*x+B                                                       |
//| используються формулы https://forum.mql4.com/ru/10780/page5       |
//+------------------------------------------------------------------+

void LinearRegr ( double X [] , double Y [] , int N , double & A , double & B )
{
       double mo_X = 0.0 , mo_Y = 0.0 , var_0 = 0.0 , var_1 = 0.0 ;
      
     for ( int i = 0 ; i < N ; i ++ )
       {
         mo_X += X [ i ] ;
         mo_Y += Y [ i ] ;
       }
     mo_X /= N ;
     mo_Y /= N ;
        
     for ( i = 0 ; i < N ; i ++ )
       {
         var_0 += ( X [ i ] - mo_X ) * ( Y [ i ] - mo_Y ) ;
         var_1 += ( X [ i ] - mo_X ) * ( X [ i ] - mo_X ) ;
       }
         A = var_0 / var_1 ;
         B = mo_Y - A * mo_X ;
}

오프셋이 필요하지 않습니다.

 

문제 없습니다, Sergey, 원하는 것을 사용하십시오. 나는 단지 작은 세부 사항에주의를 기울이고 싶습니다.

확실히 이해하시겠지만 MO는 모든 시리즈의 최대값과 최소값 사이에 있습니다. 당신이 만든 코드는 실제로 원점을 [mo_X, mo_Y] 지점으로 옮기는 것을 의미합니다. 그리고 이를 위해 모든 7200 값을 반복합니다. 그런 다음 합계를 계산하는 과정에서 계열 좌표에서 영점 좌표를 뺍니다. 동일한 성공으로 시리즈 [Xm, Ym]의 임의 의 지점을 시작점으로 사용하고 [mo_X, mo_Y]를 [Xm, Ym]으로 대체하여 두 번째 주기의 계산을 수행할 수 있습니다.

선형 회귀의 매개변수 A는 원점 변환에서 불변입니다. MO는 관련이 없습니다.

이 사실은 종이로 3분이면 확인할 수 있습니다.

따라서 MO를 계산하는 주기는 불필요합니다. 주문을 마감하려면 X와 Y 값만 가져와야 합니다.

 
Prival писал (а) >> 를 작성했습니다.

알고리즘이 6개의 숫자 배열로 이러한 오류를 제공하는 경우 오프셋을 사용하더라도 오류가 누적되지 않는다는 보장은 없습니다.

여기서 요점은 숫자의 개수가 아니라 이 6개 각각에 12166600000이 상수(쓸모 없는) 덧셈으로 있다는 사실입니다. 이것은 정보가 포함되지 않은 쓰레기일 뿐입니다. 그러나 10개의 유효 숫자입니다. 음, 9를 가정해 봅시다. 마지막 0은 6이 모두 있기 때문에 정보가 없습니다. 이 쓰레기를 제곱할 때 가수의 유효 숫자 17개를 기록합니다. 그리고 그 안에는 15개만 있습니다. 즉, 낮은 숫자가 (화장실에) 재설정됩니다. 한편, 필요한 정보를 포함하는 것은 이러한 재설정 수치입니다(여기에는 가변 성분 X에 대한 정보의 일부가 포함됨).

 

그래서 나는 이 공식을 만들지 않았습니다. 그녀는 책에 있습니다. 게다가, 이것은 제곱을 사용하는 공식에서 파생됩니다(제곱 제외). 그냥 연필로 앉아. 스캐너에 도착하면 Tikhonov V.I의 페이지를 게시하겠습니다. "통계 전파 공학" p.446.

 
맞습니다. 연필로 앉아 있으면 기울기 b에 대한 원래 공식에서 Xi -> Xi-X0 및 Yi -> Yi-Y0을 바꾸면 이 새 공식이 원래 공식과 동일하다는 것을 알 수 있습니다. X0 및 Y0 의 모든 값에 대해 . 따라서 MO의 계산인 Xi와 Yi의 합은 두 번째 사이클 내로 전송될 수 있으며, 이는 LR을 계산하는 시간을 절반으로 줄입니다. 그리고 정확도를 얻으려면 적절한 X0과 Y0을 선택해야 합니다. 그리고 X와 Y 행 순서가 서로 더 가깝도록 더 잘 수행합니다.