我生成使用包rplcon()
功能poweRlaw
冪律()`的`包功能fitdistrplus`
data <- rplcon(1000,10,2)
現在,我想知道哪些已知分佈擬合數據的一些隨機變量最好。 Lognorm? EXP?伽瑪?冪律?指數截斷的冪律?
於是我就用功能fitdist()
封裝fitdistrplus
:
fit.lnormdl <- fitdist(data,"lnorm")
fit.gammadl <- fitdist(data, "gamma", lower = c(0, 0))
fit.expdl <- fitdist(data,"exp")
由於冪律分佈和冪律指數截止並非根據CRAN Task View: Probability Distributions基礎概率函數,所以我寫的d,P,基於對?fitdist
dplcon <- function (x, xmin, alpha, log = FALSE)
{
if (log) {
pdf = log(alpha - 1) - log(xmin) - alpha * (log(x/xmin))
pdf[x < xmin] = -Inf
}
else {
pdf = (alpha - 1)/xmin * (x/xmin)^(-alpha)
pdf[x < xmin] = 0
}
pdf
}
pplcon <- function (q, xmin, alpha, lower.tail = TRUE)
{
cdf = 1 - (q/xmin)^(-alpha + 1)
if (!lower.tail)
cdf = 1 - cdf
cdf[q < round(xmin)] = 0
cdf
}
qplcon <- function(p,xmin,alpha) alpha*p^(1/(1-xmin))
最後的例子4功法的q函數,我用下面的代碼來獲取參數xmin
和p的alpha
奧爾法:
fitpl <- fitdist(data,"plcon",start = list(xmin=1,alpha=1))
但它拋出一個錯誤:
<simpleError in optim(par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data, ddistnam = ddistname, hessian = TRUE, method = meth, lower = lower, upper = upper, ...): function cannot be evaluated at initial parameters>
Error in fitdist(data, "plcon", start = list(xmin = 1, alpha = 1)) :
the function mle failed to estimate the parameters,
with the error code 100
我嘗試在谷歌和計算器進行搜索,所以很多類似錯誤的問題出現,但閱讀和嘗試後,沒有解決方案,在工作我的問題,我應該怎麼做才能正確地完成它以獲取參數? 謝謝大家幫我個忙!
哇,你是多麼知識淵博,我懂你的意思,謝謝你!另一個問題,如果我想用'ggplot2'繪製原始數據和擬合線,我該如何編寫代碼? –
查看http://docs.ggplot2.org/current/上的'stat_smooth'幫助部分, 如果上面的答案回答您的問題,請接受它,以便將來的搜索可以看到它已解決。 – jamieRowen
一年,我剛剛拿到它,順便說一句,順便說一句,謝謝你很多 –