Estou tentando reproduzir um algoritmo de previsão existente, transmitido por um pesquisador aposentado. O primeiro passo é ajustar alguns dados observados a uma distribuição Weibull, para obter uma forma e escala que serão usadas para prever valores futuros. Estou usando R para fazer isso. Aqui está um exemplo do meu código:
x<-c(23,19,37,38,40,36,172,48,113,90,54,104,90,54,157,51,77,78,144,34,29,45,16,15,37,218,170,44,121)
f<-fitdistr(x, 'weibull')
Isso funciona bem, a menos que haja zeros na matriz de entrada, o que faz com que ela falhe completamente. O mesmo acontece no SAS. Pelo que entendi, isso ocorre porque uma das etapas no cálculo da distribuição Weibull é usar o log natural, que é indefinido para 0. Existe uma maneira razoável de contornar isso?
O melhor que encontrei até agora é adicionar 1 a todos os meus valores de entrada, ajustar a curva e subtrair um dos meus valores previstos ("desloque" a curva para cima e depois volte para 1). Isso se encaixa razoavelmente bem nos dados previstos anteriormente, mas parece que deve ser uma maneira errada de fazê-lo.
editar: os valores na matriz de entrada são observados, dados do mundo real (o número de ocorrências de alguma coisa) por um intervalo de anos. Então, em alguns anos, o número de ocorrências foi zero. Seja a melhor maneira ou não (concordo que pode não ser), o autor original do algoritmo afirma ter usado a distribuição Weibull, e eu tenho que tentar replicar o processo deles.