Estoy tratando de reproducir un algoritmo de predicción existente, transmitido por un investigador retirado. El primer paso es ajustar algunos datos observados a una distribución de Weibull, para obtener una forma y una escala que se utilizarán para predecir valores futuros. Estoy usando R para hacer esto. Aquí hay un ejemplo de mi 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')
Esto funciona bien a menos que haya ceros en la matriz de entrada, lo que hace que falle por completo. Lo mismo sucede en SAS. Según tengo entendido, esto se debe a que uno de los pasos para calcular la distribución de Weibull es tomar el registro natural, que no está definido para 0. ¿Hay alguna forma razonable de evitar esto?
Lo mejor que he encontrado hasta ahora es sumar 1 a todos mis valores de entrada, ajustar la curva y luego restar uno de mis valores predichos ("desplazar" la curva hacia arriba y luego hacia abajo por 1). Esto se ajusta bastante bien a los datos previstos anteriormente, pero parece que debe ser una forma incorrecta de hacerlo.
editar: los valores en la matriz de entrada se observan, datos del mundo real (el número de ocurrencias de algo) durante un rango de años. Entonces, en algunos años, el número de ocurrencias fue cero. Ya sea que sea la mejor manera o no (estoy de acuerdo en que puede no serlo), el autor del algoritmo original afirma haber usado la distribución Weibull, y tengo que intentar replicar su proceso.