有谁知道为什么下面的代码无法执行fitdist
,错误“函数mle无法估计参数,错误代码为100”。
我在使用正态分布时遇到过这个错误;在这种情况下,解决方案是增加向量的方差(通过将其乘以100),但这对这种情况没有帮助。请注意,向量中的所有元素都是正数。谢谢。
library(fitdistrplus)
VH <- c(0.36, 0.3, 0.36, 0.47, 0, 0.05, 0.4, 0, 0, 0.15, 0.89, 0.03, 0.45, 0.21, 0, 0.18, 0.04, 0.53, 0, 0.68, 0.06, 0.09, 0.58, 0.03, 0.23, 0.27, 0, 0.12, 0.12, 0, 0.32, 0.07, 0.04, 0.07, 0.39, 0, 0.25, 0.28, 0.42, 0.55, 0.04, 0.07, 0.18, 0.17, 0.06, 0.39, 0.65, 0.15, 0.1, 0.32, 0.52, 0.55, 0.71, 0.93, 0, 0.36)
f <- fitdist(na.exclude(VH),"f", start =list(df1=1, df2=2))
答案 0 :(得分:3)
你在这里得到的错误实际上有点信息:
optim中的simpleError(par = vstart,fn = fnobj,fix.arg = fix.arg,obs = data,ddistnam = ddistname,hessian = TRUE,method = meth,lower = lower,upper = upper,... ):无法在初始参数下评估函数
fitdist出错(na.exclude(VH),“f”,start = list(df1 = 1,df2 = 2)): 函数mle无法估计参数, 错误代码100
这意味着现在出现问题,而不是在优化过程中。
猜测一下,我看了一下,发现你的数据中有一个零值(所以你所说的所有元素都是正面的声明在技术上并不正确 - 它们都是非负的 ...)。 F分布在0处具有无限值:df(0,1,2)
为Inf
。
如果我排除零值,我会得到答案......
f <- fitdist(na.exclude(VH[VH>0]),"f", start =list(df1=1, df2=2))
......第二个形状参数的估计值非常大(大约6e6,具有很大的不确定性),但似乎还不错......
par(las=1); hist(VH,freq=FALSE,col="gray")
curve(df(x,1.37,6.45e6),add=TRUE)