使用fitdist在R中安装Pearson III型

问题描述

我已经为数据拟合了许多分布,但是在将Pearson III型分布拟合到数据时遇到了困难。我还使用plotdist函数来查找初始值或初始值,以便使用迭代方法来拟合分布。The plots obtained from plotdist shows that the plot is a good fit to data at the given starting values但是fitdist函数不起作用,并给出错误代码100。我还研究了堆栈溢出时可用的问题和解答关于日志Pearson Type III分布的拟合并应用了代码,但随后我又遇到了运行fitdist函数并再次获得错误代码100的问题。可以从以下链接下载数据。

Lheadway <- pvr$headway+0.0000001

m <- mean(Lheadway)
v <- var(Lheadway)
s <- sd(Lheadway)
g <- e1071::skewness(Lheadway,type=1)

n <- length(Lheadway)
g <- g*(sqrt(n*(n-1))/(n-2))*(1+8.5/n)


my.shape <- (2/g)^2
#my.scale <- sqrt(v)/sqrt(my.shape)*sign(g) # modified as recommended by Carl Schwarz
my.scale <- sqrt(v)/sqrt(my.shape)*sign(g)
my.location <- m-sqrt(v * my.shape)

my.param <- list(shape=my.shape,scale=my.scale,location=my.location)


dPIII<-function(x,shape,location,scale) PearsonDS::dpearsonIII(x,scale,log=FALSE)
pPIII<-function(q,scale) PearsonDS::ppearsonIII(q,lower.tail = TRUE,log.p = FALSE)
qPIII<-function(p,scale) PearsonDS::qpearsonIII(p,log.p = FALSE)

fitPIII <- fitdistrplus::fitdist(Lheadway,distr="PIII",method="mle",start=my.param)

plot(fitPIII)

https://ptagovsa-my.sharepoint.com/:x:/g/personal/kkhan_tga_gov_sa/EfzCE5h0jexCkVw0Ak2S2_MBWf3WUywMd1izw41r0EsLeQ?e=EiqWDc

数据可在

获得

解决方法

该函数仅通过将方法从mle更改为mse或mge并从代码中删除param参数而起作用。