试图将f分布拟合到向量

时间:2016-05-10 02:48:30

标签: r statistics distribution

有谁知道为什么下面的代码无法执行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))   

1 个答案:

答案 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)

enter image description here