Кто-нибудь пытался строить суррогатные модели вручную, имеется ввиду не через прокси моделирование, а например в экселе, матлабе, R или другом общедоступном софте?
Дело в том, что замутил я тут модельку и надо ее отправить на поле. Смысл в том, что модель всего лишь нелинейное уравнение типа у=аХ1+бХ2+х1*х2 (точнее в повер лау уравнение описывается), вбито в эксель. На поле это очень удобно, ничего считать не надо, всего лишь используется одноразовое уравнение. Геолог вбивает известные параметры и получает результат. Проблема в том что в экселе невозможно сделать multivariate регрессию. Кроме того, уравнение нелинейное. В других софтах для того, чтобы сделать регрессию нужно линезировать уровнение. Уравнение не ленизируется так как степень тоже меняется и является переменной. По моим расчетам уравнение должно быть следующее у=х1 + х2(степеть х1) и конечно у каждого есть коэффициент. Кто-нибудь пытался решить такую задачку?
Коллега одно время говорил что приходилось ему решать такое и после долгих мук он нашел в интернете решение типа кубик сплайн уравнения. Дальше не стал спрашивать так как не был заинтересован, его случай был 5 точечная термальная модель, слишком уж замудренно для меня.
З.Ы.: как же неудобно писать уравнения на форуме
Рекомендую посмотреть DAKOTA, OpenMDAO, и TOMLAB. Последнее стоит денег.
Вот здесь volvlad показывал же как делать нелинейную регрессию в экселе
какую хочешь формулу можно использовать, хоть степень, хоть логарифм
http://volvlad.com/?p=565
вот оно
З.Ы.: последнее время стал скептически относиться к экселю после того как попытался аппроксимировать объемный коэффициент на высоких давлениях. Уравнения тренда начала выдавать фантастические результаты из-за недостаточного количества чисел после запятой.
проблема в Excel, то что потом невозможно посмотреть на 3D графиках как суррогатная модель от двух переменных ложится на экспериментальные точки. можно конечно 2D срезы сделать, но не для scattered grid.
Вот у меня вопрос, как минимизировать количество коэффициентов для регрессии, если суррогатная модель в виде полинома второго порядка от трех и более переменных?
Ёксель позволяет задать количество знаков после запятой на графике в том числе и для коэф-тов регрессии.
Кроме того, коэф-ты можно выводить прямо в ячейки.
3D не нужен для этого, достаточно кросс-плота наблюдаемых против расчетных значений. А также статистики модели - хотя бы средней ошибки на обучающей и тестовой выборках
Если число переменных в модели (а значит и коэф-тов регрессии) велико, то можно попробовать методом главных компонент сократить их количество. По крайней мере, упомянутый свободный софт делает это на ура.
В свое время Роман К. поделился ссылкой - http://www.codecogs.com/latex/eqneditor.php
Эксель не работает как надо (в топку её).
Сперва попробовал все вбить и расчитать. Не получилось. Потом начал тыкать носом в предпологаемый ответ, опять уводит куда-то в степь. Решил по простому опробовать. Загнал линейное уравнение и начал искать решение. Вроде нашел. Пошел дальше, вбил простой пауер лау уравнение. Не, не идет, опять уводит в степь (теперь кажется начал понимать почему линейные методы поиска решений в основном проваливаются). Пришлось забивать корридор ограничения в поиск решения. Опять же точность решений задачи не устроило, то ли Эксель то ли уравнение слишком сложное. На графике линия лежит прям на точках а решение уравнения не дает один в один значение.
Ну так бери R (вместе с http://caret.r-forge.r-project.org/ и http://rattle.togaware.com/), MATLAB или OCTAVE - смотря что тебе более знакомо :)
Там весь мат аппарат уже реализован, самому писать ничего не надо
В общем пришлось повозиться, но решил кажется проблему. Пришлось отказаться от повер лау уравнения. Упростил и аппроксимировал как линейное от этого качество выходных данных сильно не пострадало.
Сначала не придал словам denfromufa особого значения но как выяснилось что визуализация корреляции еще как влияет на решение задачи. Пришлось извратиться чтобы привести уравнение в рабочее состояние. Оказалось это не так уж и просто как volvlad показал в своем блоге. Солвер вообще дуб дубом, то же уравнение попробовал в SciPy заматчить, он заматчил с пол пинка коэффициенты павер лау уравнения. Солвер вообще не в тему. Еще раз убедился что Эксель в топку.
ProMan хорошо, что пригодилось. lmfit + scipy помогут заматчить кривые эффективно и быстро. Сам перешел из Excel сначала в Mathematica, потом Python.
Кстати для связки Excel и Python (scipy, numpy) рекомендую проект ExcelPython или ExPy, если бесплатно. Если есть 100 долларов, то DataNitro или PyXLL. pandas, xlwings тоже стоит отметить.
У меня есть скрипты как графики из matplotlib вложить в charts Excel. можно например делать графики с тремя и более верт. осями или нереальные цветные 3d поверхности.
Для автоматической конвертации скриптов VBA в Python рекомендую vb2py. Можно онлайн или установить на комп.
В Экселе с помощью надстройки "Поиск решения" вполне можно считать задачки по оптимизации. Задаете начальные значения коээфициентов. Считаете первое приближение. Считаете квадрат разницы между известными точками и расчетными. Складываете для всех точек - получаете суммарную ошибку. Это автоматизируется элементарно. Затем запускаете "Поиск решения", устанавливаете в качестве целевой ячейки вашу суммарную ошибку, ставите флажок на "Сделать равной минимальному значению", выбираете ячейки, подлежащие изменению (параметры модели), задаете ограничения, если они есть, и нажимаете "Выполнить". Есть куча параметров для настройки точности решения.