我想让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
在发帖之前,我已经阅读了几乎所有以前的帖子和谷歌,有几个错误的原因:
nls
的错误起始值。我尝试了很多,但它不起作用。Inf
的值。我试图进行数据清理,但也不行。我现在该怎么办?还是有其他更好的方法来进行power law with exponential cutoff
的参数估计?我需要你的帮助,谢谢你!