简要介绍一下,我想描述一种火灾规模的分布情况,这种规模被认为服从对数正态分布(很多小火灾和少数大火灾)。对于我的具体应用,我只关心那些在某个大小范围内的火灾(>最小值,<最大值)。因此,我尝试将对数正态分布拟合到一个数据集上,该数据集已被两端截断。实质上,我想找到最适合未被截断的完整分布的对数正态分布参数(mu和sigma)。在考虑到我只查看分布的一部分的情况下,我能够拟合这个分布吗?
我进行了一些实验,但现在遇到了瓶颈。以下是一个例子:
# Generate data #
D <- rlnorm(1000,meanlog = -0.75, sdlog = 1.5)
# Censor data #
min <- 0.10
max <- 20
Dt <- D[D > min]
Dt <- Dt[Dt <= max]
如果我使用fitdistr (MASS)或fitdist (fitdistrplus)来拟合非截断数据(D),显然会得到与我输入的大致相同的参数值。但是,如果我拟合被截断的数据(Dt),则参数值不匹配,这是预期的。问题是如何纳入已知的截断信息。我曾经在其他地方见过一些关于在fitdistr中使用上限和下限的参考资料,但我遇到了一个错误,不确定如何解决:
> fitt <- fitdist(Dt, "lognormal", lower = min, upper = max)
Error in fitdist(Dt, "lognormal", lower = min, upper = max) :
The dlognormal function must be defined
我需要一些建议,首先是关于是否适合使用被审查分布的方法,如果适合,如何定义dlognormal函数以使其起作用。谢谢!
fitdist(Dt, "truncated_log_normal", start = c(meanlog=0, sdlog=1))
应替换为fitdist(Dt, "truncated_log_normal", start = list(meanlog=0, sdlog=1))
以避免出现错误Wrong type of argument for start
。注意:我没有足够的声望添加评论。 - SamGG