подгонка нормальной кривой к координатам xy с MLE2 в R - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь подогнать нормальную кривую к серии координат 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

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

...