我使用 library(fitdistrplus) 包来拟合数据,如下所示:
set.seed(100)
x1<-rlnorm(500,1,3)
f.x1<-fitdist(x1,distr = "lnorm",method = "mme")
plot(f.x1)
以下是绘图结果: 在此处输入图像描述
我的问题是:x1数据实际上是用rlnorm生成的,但是拟合后,pp图不是那么完美,如何解释?
谢谢。光明
我使用 library(fitdistrplus) 包来拟合数据,如下所示:
set.seed(100)
x1<-rlnorm(500,1,3)
f.x1<-fitdist(x1,distr = "lnorm",method = "mme")
plot(f.x1)
以下是绘图结果: 在此处输入图像描述
我的问题是:x1数据实际上是用rlnorm生成的,但是拟合后,pp图不是那么完美,如何解释?
谢谢。光明
我强烈怀疑这是因为矩匹配不是估计参数的好方法。我使用矩匹配重复了您的示例:
set.seed(100)
x = rlnorm(500, 1, 3)
library(fitdistrplus)
f.x<-fitdist(x,distr = "lnorm",method = "mme")
参数估计为:
> f.x
Fitting of the distribution ' lnorm ' by matching moments
Parameters:
estimate
meanlog 3.012574
sdlog 2.199019
如果我使用最大似然进行拟合:
ll = function(meanlog, sdlog){
sum(dlnorm(x, meanlog, sdlog, log = TRUE))
}
objFun = function(params){
-ll(params[1], params[2])
}
optim(c(0, 1), objFun)
然后我得到参数估计
> optim(c(0, 1), objFun)
$par
[1] 0.8861808 3.0118166
这更接近您从中采样的值,我认为您会同意。所以分位数(和百分点)将更接近经验值。