Sto cercando di riprodurre un algoritmo di previsione esistente, tramandato da un ricercatore in pensione. Il primo passo è quello di adattare alcuni dati osservati a una distribuzione Weibull, per ottenere una forma e una scala che verranno utilizzate per prevedere i valori futuri. Sto usando R per fare questo. Ecco un esempio del mio codice:
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')
Funziona bene a meno che non ci siano zero nell'array di input, il che causa un errore completo. La stessa cosa succede in SAS. A quanto ho capito, ciò è dovuto al fatto che uno dei passaggi del calcolo della distribuzione di Weibull sta eseguendo il log naturale, che è indefinito per 0. Esiste un modo ragionevole per aggirare questo?
La migliore che ho trovato finora è quella di aggiungere 1 a tutti i miei valori di input, adattare la curva e quindi sottrarre uno dai miei valori previsti ("spostare" la curva verso l'alto e poi indietro di 1). Questo si adatta abbastanza bene ai dati precedentemente previsti, ma sembra che debba essere un modo sbagliato di farlo.
modifica: I valori nella matrice di input sono osservati, i dati del mondo reale (il numero di occorrenze di qualcosa) per un intervallo di anni. Quindi in alcuni anni il numero di occorrenze era zero. Che sia il modo migliore o meno (sono d'accordo che potrebbe non esserlo), l'autore dell'algoritmo originale afferma di aver utilizzato la distribuzione di Weibull e devo provare a replicare il loro processo.