Сейчас я пытаюсь согласовать данные спектров с гауссовой посадкой.
Я хочу построить цикл для итерации по комбинациям значений в «предполагаемом» диапазоне для каждого из положений пиков, поглощений и ширины полосы, пока мое значение 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, пока ошибка не будет минимизирована (моя функция для вычисления ошибка здесь не отображается)