Я попытался сопоставить свои данные с кривой Гаусса, используя nls. Поскольку это не сработало, я попытался сделать простой пример, чтобы увидеть, что пойдет не так:
>x=seq(-4,4,0.1)
>y=2*dnorm(x-0.4,2)+runif( length(x) , min = -0.01, max = 0.01)
>df=data.frame(x,y)
>m <- nls(y ~ k*dnorm(x-mu,sigma), data = df, start = list(k=2,mu=0.4,sigma=2))
Error in nlsModel(formula, mf, start, wts, upper) : singular gradient
matrix at initial parameter estimates
> m <- nls(y ~ k*dnorm(x-mu,sigma), data = df, start == list(k=1.5,mu=0.4,sigma=2))
Error in nlsModel(formula, mf, start, wts, upper) : singular gradient
matrix at initial parameter estimates
Почему это не работает?
dnorm
. Его подписьdnorm(x,mu,sigma)
. Ваш пример сбивает с толку, потому что у вас есть переменнаяmu
в параметре x иsigma
в среднем параметре. В этом примере изменения дисперсии не происходит. Это то, что вы намеревались? Если это так, это очень запутанный выбор имени переменной. - person MrFlick   schedule 07.07.2014