Eu tenho um conjunto variável de respostas que são expressas como um intervalo, como a amostra abaixo.
> head(left)
[1] 860 516 430 1118 860 602
> head(right)
[1] 946 602 516 1204 946 688
onde esquerda é o limite inferior e direita é o limite superior da resposta. Quero estimar os parâmetros de acordo com a distribuição lognormal.
Por um tempo, quando eu estava tentando calcular as probabilidades diretamente, estava lutando com o fato de que, como os dois limites são distribuídos por diferentes conjuntos de parâmetros, eu estava obtendo alguns valores negativos, como abaixo:
> 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
Eu realmente não conseguia descobrir como resolvê-lo e decidi usar o ponto médio do intervalo, o que é um bom compromisso até encontrar a função mledist que extrai a probabilidade de log de uma resposta de intervalo. Este é o resumo que recebo:
> 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
Os valores dos parâmetros parecem fazer sentido e a probabilidade de logaritmo é maior que qualquer outro método que eu usei (distribuição de ponto médio ou distribuição de qualquer um dos limites).
Há uma mensagem de aviso que eu não entendo, então alguém poderia me dizer se estou fazendo a coisa certa e o que essa mensagem significa?
Agradecemos a ajuda!
fonte
fitdistrplus
.Respostas:
Parece que você pode não estar computando a probabilidade corretamente.
R
left
right
Vamos gerar alguns dados aleatórios distribuídos aleatoriamente no log e agrupá-los em intervalos:
O ajuste pode ser realizado por um otimizador multivariado de uso geral. (Como este é um minimizador por padrão, deve ser aplicado ao negativo da probabilidade de log).
Como os desvios verticais são consistentemente pequenos e variam para cima e para baixo, parece um bom ajuste.
fonte