我有一组可变的响应,它们表示为一个区间,例如下面的示例。
> head(left)
[1] 860 516 430 1118 860 602
> head(right)
[1] 946 602 516 1204 946 688
其中left是响应的下限,right是响应的上限。我想根据对数正态分布估计参数。
有一段时间,当我试图直接计算可能性时,我一直在努力解决这样一个事实,即由于这两个界限是沿着不同的参数集分布的,所以我得到了一些负值,如下所示:
> Pr_high=plnorm(wta_high,meanlog_high,sdlog_high)
> Pr_low=plnorm(wta_low, meanlog_low,sdlog_low)
> Pr=Pr_high-Pr_low
>
> head(Pr)
[1] -0.0079951419 0.0001207749 0.0008002343 -0.0009705125 -0.0079951419 -0.0022395514
我无法真正弄清楚如何解决它,并决定使用间隔的中点代替,这是一个很好的折衷方案,直到我找到了提取间隔响应的对数似然的 mledist 函数,这是我得到的摘要:
> mledist(int, distr="lnorm")
$estimate
meanlog sdlog
6.9092257 0.3120138
$convergence
[1] 0
$loglik
[1] -152.1236
$hessian
meanlog sdlog
meanlog 570.760358 7.183723
sdlog 7.183723 1112.098031
$optim.function
[1] "optim"
$fix.arg
NULL
Warning messages:
1: In plnorm(q = c(946L, 602L, 516L, 1204L, 946L, 688L, 1376L, 1376L, :
NaNs produced
2: In plnorm(q = c(860L, 516L, 430L, 1118L, 860L, 602L, 1290L, 1290L, :
NaNs produced
参数值似乎有意义,并且对数似然比我使用过的任何其他方法(中点分布或任一边界的分布)都大。
有一条我不明白的警告消息,所以谁能告诉我我是否做对了,这条消息意味着什么?
感谢帮助!
