我有一些有关减排和每辆车成本的基本数据:
q24 <- read.table(text = "reductions cost.per.car
50 45
55 55
60 62
65 70
70 80
75 90
80 100
85 200
90 375
95 600
",header = TRUE, sep = "")
我知道这是一个指数函数,因此我希望能够找到适合的模型:
model <- nls(cost.per.car ~ a * exp(b * reductions) + c,
data = q24,
start = list(a=1, b=1, c=0))
但出现错误:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
我已经阅读了很多有关所见错误的问题,并且正在收集有关问题的可能是我需要更好/不同的start
值(这initial parameter estimates
更有意义),但由于不确定,我不确定我拥有的数据,如何估算更好的参数。
exp(50)
与exp(95)
x = 50和x = 95的y值进行比较。如果设置c=0
并取y的对数(建立线性关系),则可以使用回归获得足以满足数据需求的log()和初始估计值(或者如果通过原点拟合一条线,则可以离开在1处,仅使用的估算值;这也足以满足您的数据)。如果在这两个值之间的相当窄的区间之外,您将遇到一些问题。[或者尝试使用其他算法]b a b b