1

我想用几个已知的分布来拟合 mydata,power law with exponential cutoff分布是候选之一。

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

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

的pdfpower law with exponential cutofff(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

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

  1. 的起始值错误nls。我尝试了很多,但它不起作用。
  2. Inf可能会生成一些负值或小于 1 的值或等于的值。我尝试进行数据清理,但它也不起作用。

我现在该怎么办?还是有其他更好的方法来进行参数估计power law with exponential cutoff?我需要你的帮助,谢谢!

4

0 回答 0