我想用几个已知的分布来拟合 mydata,power law with exponential cutoff
分布是候选之一。
fitdistr
包fitdistrplus
中的函数是使用 MLE、MME 或 QME 进行参数估计的好方法之一。
但power law with exponential cutoff
不是根据CRAN Task View: Probability Distributions的基本概率函数,所以我尝试了这个nls
函数。
的pdfpower law with exponential cutoff
是 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
发帖之前,我已经阅读了几乎所有以前的帖子和google,错误有几个原因:
- 的起始值错误
nls
。我尝试了很多,但它不起作用。 Inf
可能会生成一些负值或小于 1 的值或等于的值。我尝试进行数据清理,但它也不起作用。
我现在该怎么办?还是有其他更好的方法来进行参数估计power law with exponential cutoff
?我需要你的帮助,谢谢!