Тестирование различных значений в функции R - PullRequest
0 голосов
/ 10 ноября 2018

Сейчас я пытаюсь согласовать данные спектров с гауссовой посадкой.

Я хочу построить цикл для итерации по комбинациям значений в «предполагаемом» диапазоне для каждого из положений пиков, поглощений и ширины полосы, пока мое значение R ^ 2 не будет минимизировано.

Однако я понятия не имею, как структурировать мой код. Я думал о том, чтобы запустить его через цикл while, пока значение R ^ 2 не опустится ниже определенного порога, но я не знаю, как пройти через все комбинации моих переменных ...

У кого-нибудь есть указатели с чего начать?

Спасибо!

Вот с чем я работаю:

peak1P <- seq(200, 300, 1)  % Likely Peak Positions
peak2P <- seq(400, 550, 1)
peak3P <- seq(600,750, 1)

peak1A <- seq(0, 0.6, 1)  % Likely Peak Absorbance
peak2A <- seq(0, 0.5, 1)
peak3A <- seq(0, 0.3, 1)

peak1B <- seq(0, 20, 1)  # Likely Peak Bandwidth
peak2B <- seq(0, 20, 1)
peak3B <- seq(100,300, 1)

# Individual Peak Models
AbsG1 = peak1A*exp((-4*log(2))*(((((WvLnV/1500)-peak1P/1500)^2))/(peak1B/1500)))
AbsG2 = peak2A*exp((-4*log(2))*(((((WvLnV/1500)-peak2P/1500)^2))/(peak2B/1500)))
AbsG3 = peak3A*exp((-4*log(2))*(((((WvLnV/1500)-peak3P/1500)^2))/(peak3B/1500)))

# Final Fit to compare with Data
AbsF <- AbsG1 + AbsG2 + AbsG3

В идеале мой код должен проходить через каждую комбинацию элементов в пике (1-3) P, пике (1-3) A и пике (1-3) B, пока ошибка не будет минимизирована (моя функция для вычисления ошибка здесь не отображается)

1 Ответ

0 голосов
/ 10 ноября 2018

такая проблема называется «смешанным моделированием» в статистике, и существует множество стандартных подходов в зависимости от типа имеющихся у вас данных, от того, сколько вы знаете о базовом процессе, который их сгенерировал, и структуре, в которой вы хотите смоделировать результаты в

если вы действительно не хотите использовать один из существующих пакетов; вы будете следовать стандартному процессу оценки написания функции, которая принимает некоторый набор параметров и вычисляет, насколько хорошо они подходят (я бы предложил вероятностные / вероятностные подходы, а не R ^ 2), а затем передала бы что-то вроде optim() или подход Монте-Карло (например, MCMC). идея состоит в том, чтобы начать со случайного предположения и перемещать параметры небольшими суммами, чтобы найти «лучший» набор параметров. лучшие подходы скажут, насколько они достоверны в отношении различных оценок (например, гессиан optim() или вероятных интервалов из байесовских подходов MCMC)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...