Я пытаюсь воспроизвести существующий алгоритм прогнозирования, переданный отставным исследователем. Первым шагом является согласование некоторых наблюдаемых данных с распределением Вейбулла, чтобы получить форму и масштаб, которые будут использоваться для прогнозирования будущих значений. Я использую R, чтобы сделать это. Вот пример моего кода:
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')
Это работает нормально, если во входном массиве нет нулей, что приводит к его полному сбою. То же самое происходит в SAS. Насколько я понимаю, это потому, что одним из шагов при вычислении распределения Вейбулла является получение натурального логарифма, который не определен для 0. Есть ли разумный способ обойти это?
Лучшее, что я нашел на данный момент, - это добавить 1 ко всем моим входным значениям, подогнать кривую, а затем вычесть одно из моих прогнозируемых значений («сдвинуть» кривую вверх и затем обратно на 1). Это довольно хорошо соответствует ранее предсказанным данным, но, похоже, это неправильный способ.
редактировать: наблюдаются значения во входном массиве, реальные данные (количество появлений чего-либо) за диапазон лет. Так что в некоторые годы число случаев было нулевым. Является ли это лучшим способом или нет (я согласен, что это не так), автор оригинального алгоритма утверждает, что использовал распределение Вейбулла, и я должен попытаться повторить их процесс.