在R中指数截止分布的幂律参数估计期间的nls误差

时间:2016-05-12 01:54:18

标签: r parameters nls mle power-law

我想让mydata适合几个已知的发行版,power law with exponential cutoff发行版是其中一个候选版本。

fitdistr中的

fitdistrplus函数是使用MLE,MME或QME进行参数估计的好方法之一。

但是power law with exponential cutoff不是CRAN Task View: Probability Distributions的基本概率函数,所以我尝试了nls函数。

power law with exponential cutoff的pdf为f(x;α,λ)=C*x^(−α)*exp(−λ*x)

首先,我生成一些随机值来替换我的真实数据:

data <- rlnorm(1000,0.6,1.23)
h <- hist(data,breaks=1000,plot=FALSE)
x <- h$mids
y <- h$density

然后,我使用nls函数进行参数估计:

nls(y~c*x^(-a)*exp(-b*x),start=list(a=1,b=1,c=1))

但它不起作用并且总是抛出这两个错误中的一个:

Error in numericDeriv(form[[3L]], names(ind), env) : Missing value or an infinity produced when evaluating the model

或者:singular gradient matrix at initial parameter estimates

在发帖之前,我已经阅读了几乎所有以前的帖子和谷歌,有几个错误的原因:

  1. nls的错误起始值。我尝试了很多,但它不起作用。
  2. 可能会生成一些负值或小于1的值或等于Inf的值。我试图进行数据清理,但也不行。
  3. 我现在该怎么办?还是有其他更好的方法来进行power law with exponential cutoff的参数估计?我需要你的帮助,谢谢你!

0 个答案:

没有答案