Próbuję odtworzyć istniejący algorytm prognozowania, przekazany przez emerytowanego badacza. Pierwszym krokiem jest dopasowanie niektórych obserwowanych danych do rozkładu Weibulla, aby uzyskać kształt i skalę, które zostaną wykorzystane do przewidywania przyszłych wartości. Używam do tego R. Oto przykład mojego kodu:
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')
Działa to dobrze, chyba że w tablicy wejściowej znajdują się zera, co powoduje całkowite niepowodzenie. To samo dzieje się w SAS. Jak rozumiem, dzieje się tak, ponieważ jednym z kroków w obliczaniu rozkładu Weibulla jest pobranie logarytmu naturalnego, który jest niezdefiniowany dla 0. Czy istnieje rozsądny sposób na obejście tego?
Najlepsze, co do tej pory znalazłem, to dodać 1 do wszystkich moich wartości wejściowych, dopasować krzywą, a następnie odjąć jedną z moich przewidywanych wartości („przesunąć” krzywą w górę, a następnie w dół o 1). To dość dobrze pasuje do wcześniej przewidywanych danych, ale wydaje się, że musi to być zły sposób.
edycja: Wartości w tablicy wejściowej są obserwowane w rzeczywistych danych (liczba wystąpień czegoś) przez szereg lat. Tak więc w niektórych latach liczba wystąpień wynosiła zero. Niezależnie od tego, czy jest to najlepszy sposób, czy nie (zgadzam się, że tak nie jest), autor oryginalnego algorytmu twierdzi, że użył dystrybucji Weibulla i muszę spróbować powtórzyć ich proces.