【发布时间】:2019-05-16 01:28:51
【问题描述】:
所以我运行此代码来生成我从给定数据集估计的指数曲线的 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)
这给了我fit1 和fit2 的值或曲线x 轴和y 轴的值列表。现在我想使用 x 和 y 轴的这两个向量来估计用于预测它们的指数方程中的 A 和 B 的值y=A*exp(B*x)。
excel 使用以下方程式相对容易:
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)
这样做的目的是获取方程的系数,然后将其作为函数应用于其他示例。
【问题讨论】:
-
这只是线性回归。 log(y) = log(A) + B*x。使用
lm获取日志(A)和B -
准确地说,线性回归估计的结果并不完全相同。不同之处在于错误:乘法 (
lm) 与加法 (nls)。
标签: excel r regression exponential nls