J'essaie de reproduire un algorithme de prédiction existant, transmis par un chercheur à la retraite. La première étape consiste à ajuster certaines données observées à une distribution de Weibull, pour obtenir une forme et une échelle qui seront utilisées pour prédire les valeurs futures. J'utilise R pour ce faire. Voici un exemple de mon code:
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')
Cela fonctionne correctement, sauf s'il y a des zéros dans le tableau d'entrée, ce qui entraîne son échec complet. La même chose se produit dans SAS. Si je comprends bien, c'est parce que l'une des étapes du calcul de la distribution de Weibull consiste à prendre le logarithme naturel, qui n'est pas défini pour 0. Existe-t-il un moyen raisonnable de contourner ce problème?
Le mieux que j'ai trouvé jusqu'à présent est d'ajouter 1 à toutes mes valeurs d'entrée, d'ajuster la courbe, puis de soustraire une de mes valeurs prédites ("déplacer" la courbe vers le haut puis la reculer de 1). Cela correspond assez bien aux données précédemment prédites, mais il semble que ce soit une mauvaise façon de le faire.
edit: Les valeurs dans le tableau d'entrée sont observées, des données du monde réel (le nombre d'occurrences de quelque chose) pour une gamme d'années. Ainsi, certaines années, le nombre d'occurrences était nul. Que ce soit la meilleure façon ou non (je conviens que ce ne soit pas le cas), l'auteur de l'algorithme d'origine prétend avoir utilisé la distribution Weibull, et je dois essayer de reproduire leur processus.