【发布时间】:2014-08-27 08:01:49
【问题描述】:
我尝试使用 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)。您的示例令人困惑,因为您在 x 参数中有mu变量,在 mean 参数中有sigma。在此示例中,方差没有发生变化。那是你的意图吗?如果是这样,那是一个非常混乱的变量名选择。
标签: r gradient gaussian nls singular