我已尝试搜索有关此主题的其他线程,但没有一个修复程序对我有用。我有一个自然实验的结果,我想显示一个事件的连续发生次数符合指数分布。我的 R shell 粘贴在下面
f <- function(x,a,b) {a * exp(b * x)}
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
[26] 26 27
> y
[1] 1880 813 376 161 100 61 31 9 8 2 7 4 3 2 0
[16] 1 0 0 0 0 0 1 0 0 0 0 1
> dat2
x y
1 1 1880
2 2 813
3 3 376
4 4 161
5 5 100
6 6 61
7 7 31
8 8 9
9 9 8
10 10 2
11 11 7
12 12 4
13 13 3
14 14 2
> fm <- nls(y ~ f(x,a,b), data = dat2, start = c(a=1, b=1))
Error in numericDeriv(form[[3L]], names(ind), env) :
Missing value or an infinity produced when evaluating the model
> fm <- nls(y ~ f(x,a,b), data = dat2, start = c(a=7, b=-.5))
Error in nls(y ~ f(x, a, b), data = dat2, start = c(a = 7, b = -0.5)) :
singular gradient
> fm <- nls(y ~ f(x,a,b), data = dat2, start = c(a=7,b=-.5),control=nls.control(maxiter=1000,warnOnly=TRUE,minFactor=1e-5,tol=1e-10),trace=TRUE)
4355798 : 7.0 -0.5
Warning message:
In nls(y ~ f(x, a, b), data = dat2, start = c(a = 7, b = -0.5), :
singular gradient
请原谅格式不好,先在这里发帖。x 包含直方图的 bin,y 包含该直方图中每个 bin 的出现次数。dat2 在 14 处截止,因为 0 计数箱会抛出指数回归,我真的只需要适合前 14 个。那些计数超过 14 的箱我有生物学理由相信它们是特殊的。我最初遇到的问题是无穷大,因为没有一个值是 0,所以我没有得到。在按照此处不同帖子的建议给出不错的起始值后,我得到了奇异梯度错误。我看到的唯一其他帖子有更多变量,我尝试增加迭代次数,但没有成功。任何帮助表示赞赏。一个