Я пытаюсь подогнать нормальную кривую к серии координат x, y, найденной в кадре данных R. Моя цель - найти наиболее подходящую нормальную кривую с записью среднего и стандартного отклонения. Я пытаюсь воспроизвести результаты из статьи, поэтому это необходимо сделать с использованием алгоритма BFGS с функцией mle2:
https://www.rdocumentation.org/packages/bbmle/versions/1.0.23.1/topics/mle2
образцы данных:
x <- seq(0, 10, by = .1)
y <- dnorm(x, mean = 5, sd = 1.5)
df <- cbind(as.data.frame(x), as.data.frame(y))
Насколько я понимаю, мне нужно ввести функцию для нормального распределения, а затем оптимизировать параметры:
bell_curve <- function(amp, mean, sd) {
y = amp*(1/(sd*(sqrt(2*pi))))*(exp((-1.0/2.0)*(((x-mean)/sd)**2)))
}
Я не понимаю, как на самом деле построить mle2 ( ) команда. Раньше я использовал его только для оптимизации двух параметров по одной серии данных, и я не уверен, как включить данные по x и y. Я возился с ним несколько дней и искал на форумах, но не могу найти ответов, которые могли бы относиться к моей проблеме.
Я пробовал:
results <- mle2(bell_curve, start = c(amp=8, mean=5, sd = 2.5), method = 'BFGS', data = df)
, но я получаю :
Error in mle2(bell_curve, start = c(amp = 8, mean = 5, sd = 2.5), method = "BFGS", :
some named arguments in 'start' are not arguments to the specified log-likelihood function
Я очень потерялся в этой глубине статистического анализа, любая помощь будет признательна. Спасибо