Я пытаюсь воспроизвести существующий алгоритм прогнозирования, переданный отставным исследователем. Первым шагом является согласование некоторых наблюдаемых данных с распределением Вейбулла, чтобы получить форму и масштаб, которые будут использоваться для прогнозирования будущих значений. Я использую 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). Это довольно хорошо соответствует ранее предсказанным данным, но, похоже, это неправильный способ.
редактировать: наблюдаются значения во входном массиве, реальные данные (количество появлений чего-либо) за диапазон лет. Так что в некоторые годы число случаев было нулевым. Является ли это лучшим способом или нет (я согласен, что это не так), автор оригинального алгоритма утверждает, что использовал распределение Вейбулла, и я должен попытаться повторить их процесс.
источник
Ответы:
(Как уже отмечали другие, распределение Вейбулла вряд ли будет подходящим приближением, когда данные представляют собой только целые числа. Следующее предназначено только для того, чтобы помочь вам определить, правильно или неправильно сделал то, что делал предыдущий исследователь.)
Существует несколько альтернативных методов, на которые нули в данных не влияют, например, использование различных методов оценки моментов. Обычно они требуют численного решения уравнений с участием гамма-функции, поскольку моменты распределения Вейбулла даны в терминах этой функции. Я не знаком с R, но вот программа Sage, которая иллюстрирует один из более простых методов - может быть, он может быть адаптирован к R? (Вы можете прочитать об этом и других подобных методах, например, в «Распределении Вейбулла: справочник» Хорста Ринна, стр. 455ff - однако в его уравнении 12.4b есть опечатка, такая как «-1» избыточно).
Это произвело выход
тогда та же самая процедура производит вывод
РЕДАКТИРОВАТЬ: Я только что установил R, чтобы попробовать. С риском сделать этот ответ слишком длинным, для всех, кто интересуется, вот мой R-код для метода Блишке-Шойера:
Это воспроизводит (до пяти значащих цифр) два примера Sage выше:
источник
fitdistr
fitdistr
Затем сверните эту функцию, используя одномерную оптимизацию:
где я только что составил "+10", не основываясь ни на чем.
Для данных с тремя наименьшими значениями, замененными нулями, мы получаем:
bar$minimum
fitdistr
источник
Он должен потерпеть неудачу, вы должны быть благодарны, что он потерпел неудачу.
Ваши наблюдения показали, что сбои произошли в тот самый момент, когда вы начали их наблюдать. Если это реальный процесс, основанный на реальных (а не смоделированных данных), вам нужно как-то объяснить причину, по которой вы получаете нули. Я видел исследования выживания, где 0 раз появляются как следствие одной из нескольких вещей:
Так что для случая 1: вам нужно использовать правильные методы цензуры, даже если это означает ретроспективное извлечение записей. Случай 2 означает, что вы можете использовать алгоритм EM, потому что у вас есть проблема точности. Байесовские методы работают и здесь. Случай 3 означает, что вам просто нужно исключить значения, которые должны были отсутствовать.
источник
Я согласен с ответом кардинала выше. Тем не менее, также довольно часто добавляют константу, чтобы избежать нулей. Другое обычно используемое значение - 0,5, но могла использоваться любая положительная константа. Вы можете попробовать диапазон значений, чтобы увидеть, можете ли вы определить точное значение, использованное предыдущим исследователем. Тогда вы можете быть уверены, что сможете воспроизвести его результаты, прежде чем приступить к поиску лучшего распространения.
источник
[Предполагая, что Вейбулл уместен] В книге Джонсона Коца и Балакришнана есть много способов оценить параметры Вейбулла. Некоторые из них не зависят от данных, не включающих нули (например, использование среднего значения и стандартного отклонения или использование определенных процентилей).
Johnson, NL, Kotz, S. и Balakrishnan, N. (1994). Непрерывные одномерные распределения. Нью-Йорк: Wiley, примерно на странице 632.
источник