Библиотека Alglib. Как сделать регрессию?

 
Помогите кто-нибудь разобраться с этой функцией LRBuild.
Есть у меня два массива - графики AUDUSD и NZDUSD, как между ними сделать регрессию?
Какие параметры подставлять в функцию?
//+------------------------------------------------------------------+
//| Linear regression                                                |
//| Subroutine builds model:                                         |
//|     Y = A(0)*X[0] + ... + A(N-1)*X[N-1] + A(N)                   |
//| and model found in ALGLIB format, covariation matrix, training   | 
//| set errors (rms, average, average relative) and leave-one-out    |
//| cross-validation estimate of the generalization error. CV        |
//| estimate calculated using fast algorithm with O(NPoints*NVars)   |
//| complexity.                                                      |
//| When  covariation  matrix  is  calculated  standard deviations of| 
//| function values are assumed to be equal to RMS error on the      |
//| training set.                                                    |
//| INPUT PARAMETERS:                                                |
//|     XY          -   training set, array [0..NPoints-1,0..NVars]: |
//|                     * NVars columns - independent variables      |
//|                     * last column - dependent variable           |
//|     NPoints     -   training set size, NPoints>NVars+1           |
//|     NVars       -   number of independent variables              |
//| OUTPUT PARAMETERS:                                               |
//|     Info        -   return code:                                 |
//|                     * -255, in case of unknown internal error    |
//|                     * -4, if internal SVD subroutine haven't     |
//|                           converged                              |
//|                     * -1, if incorrect parameters was passed     |
//|                           (NPoints<NVars+2, NVars<1).            |
//|                     *  1, if subroutine successfully finished    |
//|     LM          -   linear model in the ALGLIB format. Use       |
//|                     subroutines of this unit to work with the    |
//|                     model.                                       |
//|     AR          -   additional results                           |
//+------------------------------------------------------------------+
static void CAlglib::LRBuild(CMatrixDouble &xy,const int npoints,const int nvars,
                             int &info,CLinearModelShell &lm,CLRReportShell &ar)
  {
//--- initialization
   info=0;
//--- function call
   CLinReg::LRBuild(xy,npoints,nvars,info,lm.GetInnerObj(),ar.GetInnerObj());
//--- exit the function
   return;
  }
 
Есть две линии X и Y.
Формула регрессии Y=X*a+b
Нужно подобрать эти коэффициенты a и b.
 

приветствую

ненавязчиво обращаю внимание на такой вариант:

   int info,i,j;

   CLinearModelShell LM;

   CLRReportShell AR;

   CLSFitReportShell report;

   CMatrixDouble MATRIX(points,variables);

   for(i=0; i<variables; i++) for(j=0; j<points; j++) MATRIX[j].Set(i,EQUITY[j,i]);

   CAlglib::LRBuildZ(MATRIX,points,variables-1,info,LM,AR);

   if(info<0) {Alert("Error in regression model!");error=true;return;}

   CAlglib::LRUnpack(LM,ROOTS,variables);

   ROOTS[variables-1]=-1;

 
аааааа... у меня счас будет взрыв мозга.

ну есть у меня 2 массива: Buf_0[], Buf_1[] ...

какие мне значения в функцию подставлять? и как найти нужные коэффициенты?

мой уровень в программировании - начальный.
 

аааааа... у меня счас будет взрыв мозга.

это типичная ситуация когда я что-то кому-то пишу, так всегда бывает )))

 

portfolio optimizer может решить задачу формирования спреда методом регрессии для 2 и более инструментов

перед этим выполняется перевод пунктов в доллары, масштабирование и еще ряд необходимых операций 

 
GerbertX:
аааааа... у меня счас будет взрыв мозга.

ну есть у меня 2 массива: Buf_0[], Buf_1[] ...

какие мне значения в функцию подставлять? и как найти нужные коэффициенты?

мой уровень в программировании - начальный.

Про иных инженеров есть такое мнение: недостаточно умен чтобы делать простые вещи. Это стократно относится к библиотеке ALGLIB - безумие какое-то!

Наберитесь терпения и начните осваивать R. Линейная регрессия - это одна строчка, причем в режиме интерпретатора: пишите, меняете и сразу результат. Причем имеется мощнейшая графика, чтобы посмотреть и исходные данные и результат в графическом виде.

Построив регрессию, Вам захочется посмотреть ее характеристики. Опять если не сразу, то еще одна строка. Либо Вы придете к выводу, что линейная регрессия не походит, а нужна другая - достаточно поменять букву в формуле.....  Немаловажно, что все это сопровождается документацией высочайшего качества. Разрабатывалось тысячами самых квалифицированных людей в мире...

И вообще:

НА СЕГОДНЯ ЯВЛЯЕТСЯ СТАНДАРТОВ В ОБЛАСТИ СТАТИСТИКИ, МАШИННОГО ОБУЧЕНИЯ, ЭКОНОМЕТРИКИ. 

Освоив R, Вы получите базу в области трейдинга до конца жизни. Немаловажно, что R является открытой бесплатной системой.

 

Успехов!

 

ПС.

А про Alglib забудьте как про страшный сон. 

 

хороший пиар R...

только тут не инженеры а экономисты и трейдеры

а экономисты хотят экономности (внезапно)

я лично ничего против R не имею, это и правда могучая система + свой язык и даже кое-какая среда разработки

для научно-исследовательских задач очень и очень хорошо 

является ли R общепринятым стандартом? а почему не SAS? SPSS?

например если освоить SAS то в распоряжении будет не только sas base, статистика, но и хранилище данных и даже ETL

но будет ли это оптимально?

можно долго и упорно вкуривать разные языки но ведь не это самоцель

решение должно быть адекватно задаче 

alglib намного более экономное решение 

кроме того очевидно что же человек пишет: "мой уровень в программировании - начальный"

и задача простейшая - построить спред

зачем здесь R? это перебор

да и тогда бы лучше порекомендовать не R, а R GUI / quick-R

а то получается из пушки по воробьям

почему alglib конкретно здесь лучше:

- готовая библиотека адаптированная под mql

- не нужна установка промежуточных библиотек-связок и собственно R, нужно только скопировать include и все

- есть примеры использования и люди которые могут подсказать (применительно к mql)

- быстрая и вроде бы проверенная

подчеркну - это не камень в сторону R, бесспорно R будет круче, но освоение и спряжение c MT будет намного более долгим и трудным

а так то да, про R все верно

но даже несмотря на это я бы отметил тенденцию или стремление к переходу от командно-язычного подхода к визуального

например есть же deductor academic или rapidminer и тот же sas уже давно оброс разными gui 

 
transcendreamer:

хороший пиар R...

только тут не инженеры а экономисты и трейдеры

а экономисты хотят экономности (внезапно)

я лично ничего против R не имею, это и правда могучая система + свой язык и даже кое-какая среда разработки

для научно-исследовательских задач очень и очень хорошо 

является ли R общепринятым стандартом? а почему не SAS? SPSS?

например если освоить SAS то в распоряжении будет не только sas base, статистика, но и хранилище данных и даже ETL

но будет ли это оптимально?

можно долго и упорно вкуривать разные языки но ведь не это самоцель

решение должно быть адекватно задаче 

alglib намного более экономное решение 

кроме того очевидно что же человек пишет: "мой уровень в программировании - начальный"

и задача простейшая - построить спред

зачем здесь R? это перебор

да и тогда бы лучше порекомендовать не R, а R GUI / quick-R

а то получается из пушки по воробьям

почему alglib конкретно здесь лучше:

- готовая библиотека адаптированная под mql

- не нужна установка промежуточных библиотек-связок и собственно R, нужно только скопировать include и все

- есть примеры использования и люди которые могут подсказать (применительно к mql)

- быстрая и вроде бы проверенная

подчеркну - это не камень в сторону R, бесспорно R будет круче, но освоение и спряжение c MT будет намного более долгим и трудным

а так то да, про R все верно

но даже несмотря на это я бы отметил тенденцию или стремление к переходу от командно-язычного подхода к визуального

например есть же deductor academic или rapidminer и тот же sas уже давно оброс разными gui 

В свое время, лет 5-6 назад, я сдуру принимал во внимание подобные разговоры и потратил кучу времени на разные там матлабы и статистики. Кстати, платные системы, как и названные Вами.

Когда Вы пишите "R круче", то может создаться впечатление, что крутизна - это синоним сложности использования.

Это не совсем так.

На первом этапе мне не известна столь простая система с одной стороны, а с другой стороны, обладающая максимальными возможностями система.

То, что хочет автор топика, он, быть может при своих скромных познаниях в программировании, может реализовать в течение часа. Установка R - запускаешь файл и через несколько секунд R готов к работе. Затем через эксель загоняешь данные - один оператор, следующий опреатор - линейная регрессия (lm) - все. Получаешь кучу статистики по самой регрессии. Еще один оператор - plot- рисуешь графики. 

 

Можно остаться на этом уровне и заниматься мелким статистическим щипачеством, а заодно очень удобным и развитым средством рисования результатов..

Но.

По своем алгоритмическим возможностям, а особенно по функциональным возможностям - здесь надо без иллюзий. Начиная с того, что в R нет понятия "скаляр".   В самом простом случае идентификатор (имя объекта) - вектор, а далее ....  

Из собственно опыта.

Есть такой алгоритм машинного обучения "random forest". Чрезвычайно полезная штука. В R одна строчка. Попытался перенести в alglib, используя приведенные Вами аргументы. Просто безумие какое-то. Потратил целый день, владея не плохо идеологией  random forest и плюнул.


ПС.

 GerbertX: 

Рекомендую Вам не сам R а пакет Rattle. То, что Вы хотите цена час, но кроме этого еще много чего как впредварительной подготовке данных, статистике, так и дополнительно еще пять моделей кроме линейной регрессии.  Здесь в моей статье.

 
faa1947:

В свое время, лет 5-6 назад, я сдуру принимал во внимание подобные разговоры и потратил кучу времени на разные там матлабы и статистики. Кстати, платные системы, как и названные Вами.

Когда Вы пишите "R круче", то может создаться впечатление, что крутизна - это синоним сложности использования.

Это не совсем так.

На первом этапе мне не известна столь простая система с одной стороны, а с другой стороны, обладающая максимальными возможностями система.

То, что хочет автор топика, он, быть может при своих скромных познаниях в программировании, может реализовать в течение часа. Установка R - запускаешь файл и через несколько секунд R готов к работе. Затем через эксель загоняешь данные - один оператор, следующий опреатор - линейная регрессия (lm) - все. Получаешь кучу статистики по самой регрессии. Еще один оператор - plot- рисуешь графики. 

 

Можно остаться на этом уровне и заниматься мелким статистическим щипачеством, а заодно очень удобным и развитым средством рисования результатов..

Но.

По своем алгоритмическим возможностям, а особенно по функциональным возможностям - здесь надо без иллюзий. Начиная с того, что в R нет понятия "скаляр".   В самом простом случае идентификатор (имя объекта) - вектор, а далее ....  

Из собственно опыта.

Есть такой алгоритм машинного обучения "random forest". Чрезвычайно полезная штука. В R одна строчка. Попытался перенести в alglib, используя приведенные Вами аргументы. Просто безумие какое-то. Потратил целый день, владея не плохо идеологией  random forest и плюнул.


ПС.

 GerbertX: 

Рекомендую Вам не сам R а пакет Rattle. То, что Вы хотите цена час, но кроме этого еще много чего как впредварительной подготовке данных, статистике, так и дополнительно еще пять моделей кроме линейной регрессии.  Здесь в моей статье.

упомянутая статистика (statistica) еще в начале 2000ых годов была неплохим пакетом,

не берусь составлять с R так с ходу, а на тот момент она закрыла все мои потребности + удобство как в экселе

насчет сложности, я наверное не соглашусь, все-таки язык R для быстрого освоения не так уж самоочевиден

так что сложность есть

а крутость как раз в том что в языке по дефолту реализованы математические объекты без необходимости собственной их реализации

вот это и круто 

в этом R обгонит и SAS stat/ets с его наворотами

рандомные леса - это сила, да

если же вернуться к исходной задаче поставленной топик-стартером то все же имхо alglib будет поудобнее

ведь нужно не только посчитать модель в R

нужно еще вернуть результаты обратно в МТ а отсюда уже необходимость специфического кода по спряганию МТ и R, прописывать вызовы R внутри МТ

вариант с библиотекой намного проще

при этом нужно будет сначала перевести пункты в валюту депозита (а это по любому удобнее делать в МТ)

потом проверить-почистить миссинги, далее собственно посчитать модель и нормировать корни

глубокого анализа регрессионной модели для спреда не предвидится, проще посмотреть сразу на графике

 
faa1947:

Про иных инженеров есть такое мнение: недостаточно умен чтобы делать простые вещи. Это стократно относится к библиотеке ALGLIB - безумие какое-то!

Наберитесь терпения и начните осваивать R. Линейная регрессия - это одна строчка, причем в режиме интерпретатора: пишите, меняете и сразу результат. Причем имеется мощнейшая графика, чтобы посмотреть и исходные данные и результат в графическом виде.

Построив регрессию, Вам захочется посмотреть ее характеристики. Опять если не сразу, то еще одна строка. Либо Вы придете к выводу, что линейная регрессия не походит, а нужна другая - достаточно поменять букву в формуле.....  Немаловажно, что все это сопровождается документацией высочайшего качества. Разрабатывалось тысячами самых квалифицированных людей в мире...

И вообще:

НА СЕГОДНЯ ЯВЛЯЕТСЯ СТАНДАРТОВ В ОБЛАСТИ СТАТИСТИКИ, МАШИННОГО ОБУЧЕНИЯ, ЭКОНОМЕТРИКИ. 

Освоив R, Вы получите базу в области трейдинга до конца жизни. Немаловажно, что R является открытой бесплатной системой.

 

Успехов!

 

ПС.

А про Alglib забудьте как про страшный сон. 

 

но мне не нужно осваивать какой-то пакет. мне нужно только одну функцию прописать, и подставить свои значения.
 
faa1947:


 

ПС.

А про Alglib забудьте как про страшный сон. 

 

Сколько людей - столько мнений.

Для каждого лучше то, что он лучше знает. 

Причина обращения: