根据估计方程y = A * exp(x * B)计算A和B的值

时间:2018-12-14 18:56:55

标签: r regression exponential nls

因此,我运行了这段代码,以生成我从给定数据集中估算出的指数曲线的x和y值:

qplot(x,y,data=dat) + stat_smooth(aes(outfit=fit1<<-..x..), 
      method = 'nls', method.args = list(start = c(a=1, b=0)), 
      formula = y~a*exp(b*x), se = FALSE)

qplot(x,y,data=dat) + stat_smooth(aes(outfit=fit2<<-..y..), 
      method = 'nls', method.args = list(start = c(a=1, b=0)), 
      formula = y~a*exp(b*x), se = FALSE)

这给了我fit1fit2的值,或者曲线的x和y轴的值列表。现在,我想使用x和y轴的两个向量来估计用于预测y=A*exp(B*x)的指数方程式中A和B的值。

使用以下等式相对容易地做到这一点:

A=EXP(INDEX(LINEST(LN(B1:B10),A1:A10),1,2)) 
B=INDEX(LINEST(LN(B1:B10),$A$1:$A$10),1)

是否存在可以在R中进行复制的方法或程序包?我听说easynls是一种选择,但由于它不断返回错误说明而没有成功:

My code: fit = dataframe(fit1,fit2)
nlsplot(fit, model=6, start=c(a=1, b=0))    
  

nls(y〜a * exp(b * x),start = list(a = s [1],b = s [2])中的错误,   data = data,:迭代次数超过了最大值6000

我需要的一种方法是,读取我已经拥有的x和y的估计值,然后在方程为指数格式的情况下为A和B生成值。

示例数据:

fit1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
fit2 = c(.5, .45, .4, .35, .3, .25, .2, .15, .1, .05)

这样做的目的是获得方程的系数,然后将其作为函数应用于其他示例。

1 个答案:

答案 0 :(得分:2)

虽然同意@JuliusVainora的评论,但问题陈述似乎对残差没有任何限制。这是一个小例子。由于您不提供x,y数据,所以我做了一些。

interface

Exponential curve