0

我是 R 的新手,我很难弄清楚如何使用方法 = mme 将 Log Pearson Type III 拟合到数据中。

YearThai <- c(2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018)
FlowThai <- c(2009.6,2071.8,3534.5,1813.6,1674.17,1892,4020,2572.4,2303.2,2299.8,3242,3720,1939.9,2221.6,1127,706.8,2109.7,2571.4,880.8)
DataThai <- as.data.frame(cbind(YearThai,FlowThai))

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

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

my.shape <- 4/(g)^2
my.scale <- abs(g)/(g*(s/sqrt(my.shape)))
my.location <- m-(my.shape*my.scale)

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

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

fitdistrplus::fitdist(LFlowThai, distr = "PIII", method = "mme", order = c(1,2,3), start = my.param) 

我得到的错误是这样的:

Error in mmedist(data, distname, start = arg_startfix$start.arg, fix.arg = arg_startfix$fix.arg,  : 
the empirical moment function must be defined

使用method = mle时没有问题,但我们的研究需要使用矩量法进行参数估计。

提前感谢那些可以提供帮助的人。

4

1 回答 1

0

我和你有完全相同的问题。我在谷歌上搜索到的是,当使用fitdistfrom时,您需要为 Pearson III 分布提供经验矩函数和理论矩函数fitdistrplus

如果您使用faststr包,您会看到它通过匹配矩将 Pearson 类型 III 与您的数据相匹配。这是因为这些包为 fitdist 提供了执行此操作所需的“memp”和“mPearsonIII”函数。

内存函数:

function(x, order) mean(x^order)

mPearson III 功能:

function (order, shape, location, scale) 
{
  if (order == 1) 
    return(location + shape * scale)
  if (order == 2) 
    return(scale * scale * shape)
  if (order == 3) 
    return(2/sqrt(shape) * sign(scale))
}

使用compute_annual_frequencies()fromfasstr为您提供了一个使用 MOM 使用 Pearson 类型 III 的估计参数命名的对象Freq_Fitting(对象类是 fitdistrplus)。可悲的是,我正在尝试解决一些问题(绘图时的分位数和比例问题)。

于 2022-02-16T16:28:29.157 回答