Суррогатная модель

Последнее сообщение
ProMan 532 11
Июн 14

Кто-нибудь пытался строить суррогатные модели вручную, имеется ввиду не через прокси моделирование, а например в экселе, матлабе, R или другом общедоступном софте?

Дело в том, что замутил я тут модельку и надо ее отправить на поле. Смысл в том, что модель всего лишь нелинейное уравнение типа у=аХ1+бХ2+х1*х2 (точнее в повер лау уравнение описывается), вбито в эксель. На поле это очень удобно, ничего считать не надо, всего лишь используется одноразовое уравнение. Геолог вбивает известные параметры и получает результат. Проблема в том что в экселе невозможно сделать multivariate регрессию. Кроме того, уравнение нелинейное. В других софтах для того, чтобы сделать регрессию нужно линезировать уровнение. Уравнение не ленизируется так как степень тоже меняется и является переменной. По моим расчетам уравнение должно быть следующее у=х1 + х2(степеть х1) и конечно у каждого есть коэффициент. Кто-нибудь пытался решить такую задачку?

Коллега одно время говорил что приходилось ему решать такое и после долгих мук он нашел в интернете решение типа кубик сплайн уравнения. Дальше не стал спрашивать так как не был заинтересован, его случай был 5 точечная термальная модель, слишком уж замудренно для меня.

З.Ы.: как же неудобно писать уравнения на форуме  

denfromufa 89 9
Июн 14 #1

Рекомендую посмотреть DAKOTA, OpenMDAO, и TOMLAB. Последнее стоит денег.

Eric_Cartman 125 11
Июн 14 #2

Вот здесь volvlad показывал же как делать нелинейную регрессию в экселе

какую хочешь формулу можно использовать, хоть степень, хоть логарифм

ProMan 532 11
Июн 14 #3

denfromufa пишет:

Рекомендую посмотреть DAKOTA, OpenMDAO, и TOMLAB. Последнее стоит денег.

Огромное спасибо, кажется то что искал.

Eric_Cartman пишет:

Вот здесь volvlad показывал же как делать нелинейную регрессию в экселе

какую хочешь формулу можно использовать, хоть степень, хоть логарифм

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

Eric_Cartman 125 11
Июн 14 #4

http://volvlad.com/?p=565

вот оно

ProMan 532 11
Июн 14 #5

Eric_Cartman пишет:

http://volvlad.com/?p=565

вот оно

Спасибо сейчас работает. Не знал что такие возможности у экселя есть. Возможно для моего случая будет и это достаточно. Спасибо.

З.Ы.: последнее время стал скептически относиться к экселю после того как попытался аппроксимировать объемный коэффициент на высоких давлениях. Уравнения тренда начала выдавать фантастические результаты из-за недостаточного количества чисел после запятой. 

denfromufa 89 9
Июн 14 #6

проблема в Excel, то что потом невозможно посмотреть на 3D графиках как суррогатная модель от двух переменных ложится на экспериментальные точки. можно конечно 2D срезы сделать, но не для scattered grid.

 

Вот у меня вопрос, как минимизировать количество коэффициентов для регрессии, если суррогатная модель в виде полинома второго порядка от трех и более переменных?

Гоша 1197 15
Июн 14 #7

ProMan пишет:

Уравнения тренда начала выдавать фантастические результаты из-за недостаточного количества чисел после запятой. 

Ёксель позволяет задать количество знаков после запятой на графике в том числе и для коэф-тов регрессии.

Кроме того, коэф-ты можно выводить прямо в ячейки.

Гоша 1197 15
Июн 14 #8

denfromufa пишет:

проблема в Excel, то что потом невозможно посмотреть на 3D графиках как суррогатная модель от двух переменных ложится на экспериментальные точки. можно конечно 2D срезы сделать, но не для scattered grid.

 

Вот у меня вопрос, как минимизировать количество коэффициентов для регрессии, если суррогатная модель в виде полинома второго порядка от трех и более переменных?

3D не нужен для этого, достаточно кросс-плота наблюдаемых против расчетных значений. А также статистики модели - хотя бы средней ошибки на обучающей и тестовой выборках

 

Если число переменных в модели (а значит и коэф-тов регрессии) велико, то можно попробовать методом главных компонент сократить их количество. По крайней мере, упомянутый свободный софт делает это на ура.

Гоша 1197 15
Июн 14 #9

ProMan пишет:

З.Ы.: как же неудобно писать уравнения на форуме  

В свое время Роман К. поделился ссылкой - http://www.codecogs.com/latex/eqneditor.php

 

ProMan 532 11
Июн 14 #10

Эксель не работает как надо (в топку её). 

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

Гоша 1197 15
Июн 14 #11

ProMan пишет:

Эксель не работает как надо (в топку её). 

Ну так бери R (вместе с http://caret.r-forge.r-project.org/ и http://rattle.togaware.com/), MATLAB или OCTAVE - смотря что тебе более знакомо :)

Там весь мат аппарат уже реализован, самому писать ничего не надо

ProMan 532 11
Июн 14 #12

Гоша пишет:

Ну так бери R (вместе с http://caret.r-forge.r-project.org/ и http://rattle.togaware.com/), MATLAB или OCTAVE - смотря что тебе более знакомо :)

Там весь мат аппарат уже реализован, самому писать ничего не надо

Спасибо за ссылки. 

В общем пришлось повозиться, но решил кажется проблему. Пришлось отказаться от повер лау уравнения. Упростил и аппроксимировал как линейное от этого качество выходных данных сильно не пострадало. 

Сначала не придал словам denfromufa особого значения но как выяснилось что визуализация корреляции еще как влияет на решение задачи. Пришлось извратиться чтобы привести уравнение в рабочее состояние. Оказалось это не так уж и просто как volvlad показал в своем блоге. Солвер вообще дуб дубом, то же уравнение попробовал в SciPy заматчить, он заматчил с пол пинка коэффициенты павер лау уравнения. Солвер вообще не в тему. Еще раз убедился что Эксель в топку.

denfromufa 89 9
Окт 14 #13

ProMan хорошо, что пригодилось. lmfit + scipy помогут заматчить кривые эффективно и быстро. Сам перешел из Excel сначала в Mathematica, потом Python.

Кстати для связки Excel и Python (scipy, numpy) рекомендую проект ExcelPython или ExPy, если бесплатно. Если есть 100 долларов, то DataNitro или PyXLL. pandas, xlwings тоже стоит отметить.

У меня есть скрипты как графики из matplotlib вложить в charts Excel. можно например делать графики с тремя и более верт. осями или нереальные цветные 3d поверхности.

Для автоматической конвертации скриптов VBA в Python рекомендую vb2py. Можно онлайн или установить на комп.

Vedmezhonok 37 13
Июн 16 #14

В Экселе с помощью надстройки "Поиск решения" вполне можно считать задачки по оптимизации. Задаете начальные значения коээфициентов. Считаете первое приближение. Считаете квадрат разницы между известными точками и расчетными. Складываете для всех точек - получаете суммарную ошибку. Это автоматизируется элементарно. Затем запускаете "Поиск решения", устанавливаете в качестве целевой ячейки вашу суммарную ошибку, ставите флажок на "Сделать равной минимальному значению", выбираете ячейки, подлежащие изменению (параметры модели), задаете ограничения, если они есть, и нажимаете "Выполнить". Есть куча параметров для настройки точности решения.

Go to top