问题描述
我正在尝试将一些数据拟合到方程式中,并不断遇到相同的错误: 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)
而不是对二次项求幂...)
提供一个可重现的示例将大有帮助...