如何解决尝试拟合一些数据,但是尝试运行nls时开始值和参数错误
我正在尝试将一些数据拟合到方程式中,并不断遇到相同的错误: nls(y〜A +(B * exp(1)*((-(x-K)^ 2)/(2 *(E)^ 2)))中的错误+(G *: 'data'中没有起始值的参数:B,K,E,G,H,J
gausform <- function(x,A,B,K,E,G,H,J) {
A + (B * exp(1) * ((-(x - K)^2)/(2 * (E)^2))) + (G * exp(1) *((-(x - H)^2)/(2 * (J)^2)))
}
new <- data.frame(x,y)
st1 <- list(c(A = min(y),B = mx1,K = cen1,E = width1,G = mx2,H = cen2,J = width2))
fit <- nls(y ~ gausform(x,J),data = new,start = st1)
R的新手,很可能出了点大错,这是我想做的事情: x和y是我的数据 A,B,K,E,G,H和J是我试图从拟合中获得的值 mx1,cen1,width1,mx2,cen2和width2都是我根据自己的数据计算出的值,想用作初始起始值。
我不确定我搞砸了是不是使B到J的开头不是设置为st1的行。
非常感谢任何提示或见识!
解决方法
您正在发生的特殊问题是因为您不小心构造了一个包含单个向量而不是参数列表的列表,即list(c(...))
。如果您忽略了c()
:
st1 <- list(A = min(y),B = mx1,K = cen1,E = width1,G = mx2,H = cen2,J = width2)
这可能使您可以进行下一步-请参阅@Onyambu的注释以获取其他有用信息(即,似乎不太可能希望将二次项乘以exp(1)
而不是对二次项求幂...)
提供一个可重现的示例将大有帮助...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。