我想使用70系列拟合模型/找到功能形式。我为每一个都有30个值。该图显示趋势不是线性的,因此我尝试使用NLS。
不确定这是否是正确的做法。我以前没有实现过这个。我应该使用别的东西来建模吗?我收到以下错误:
nls中的错误(y~a * exp(b * x),start = list(a = a_start,b = b_start)):
奇异梯度
x的值为1:30,重复70次。 Y值在0和1之间变化。我应该使用71个向量(长度为30)还是应该将它们全部收集在两列中。目前,我已将它们全部收集在两列中。
数据看起来像这样:
a_start<-0.2
b_start<-2*log(2)/a_start
答案 0 :(得分:0)
问题是您的公式不是准确反映您的数据的表单。 y~a * exp(b * x)永远不会像你的数据一样,所以你会得到没有任何意义的尖锐渐变。
试试这个:
#some made up data, since none provided
x <- runif(1000) * 30
y <- -0.9 * exp(-0.5 * x) + 1.1 + rnorm(length(x), sd=0.1)
fit <- nls(y ~ a * exp(b * x) + c, start = list(a = -1, b=-.1, c=1))
plot(x,y)
lines(x[order(x)], predict(fit)[order(x)], col="red", lwd=4)