Найдите случайный метод, который лучше всего подходит для списка значений - PullRequest
0 голосов
/ 25 апреля 2011

У меня есть список многих чисел с плавающей запятой, представляющих длину операции, выполненной несколько раз.

Для каждого типа операций у меня свой тренд в числах.

Мне известно о множестве случайных генераторов, представленных в некоторых модулях Python, например, в numpy.random

* 1006.* Например, у меня есть binomial, exponencial, normal, weibul и т. Д. *

Я хотел бы знать, есть ли способ найти лучшего random generator, учитывая список значений, которые лучше всего соответствуют каждому списку чисел, которые у меня есть.

Т.е. генератор (с его параметрами), который лучше всего соответствует тренду чисел в списке

Это потому, что я хотел бы автоматизировать генерацию отрезков времени каждой операции,так что я могу смоделировать это в течение n лет, без необходимости вручную определять, какой метод лучше всего подходит для какого списка чисел.

РЕДАКТИРОВАТЬ: Другими словами, пытаясь прояснить проблему:

У меня есть список номеров.Я пытаюсь найти распределение вероятностей, которое лучше всего соответствует массиву чисел, которые у меня уже есть.Единственная проблема, которую я вижу, состоит в том, что каждое распределение вероятностей имеет входные параметры, которые могут повлиять на результат.Поэтому мне придется выяснить, как автоматически вводить эти параметры, пытаясь наилучшим образом соответствовать списку.

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 25 апреля 2011

Возможно, вам будет лучше подумать об этом с точки зрения распределения вероятностей, чем думать о генераторах случайных чисел.Затем вы можете подумать о проверке пригодности для ваших различных дистрибутивов.

В качестве отправной точки вы можете попытаться построить вероятностные графики для ваших выборок.Вероятно, самым простым с точки зрения математики было бы рассмотреть QQ сюжет .Используя генераторы случайных чисел, создайте выборку того же размера, что и ваши данные.Сортируйте оба из них и наносите их друг на друга.Если распределения одинаковы, то вы должны получить прямую линию.

Редактировать: Чтобы найти подходящие параметры для статистической модели, оценка максимального правдоподобия является стандартомподход.В зависимости от того, сколько образцов чисел у вас есть и требуемой точности, вы можете обнаружить, что просто игра с параметрами вручную даст вам «достаточно хорошее» решение.

1 голос
/ 25 апреля 2011

Почему использование случайных чисел для этого является плохой идеей, уже было объяснено.Мне кажется, что вам действительно нужно сопоставить распределения, которые вы упомянули, с вашими точками (например, с подбором по методу наименьших квадратов), а затем проверить, какой из них подходит лучше всего (например, с помощью критерия хи-квадрат).

РЕДАКТИРОВАТЬ Добавление ссылки на пример примерки наименьших квадратов

0 голосов
/ 26 апреля 2011

Габриэль, если у вас есть доступ к Mathematica, в него встроена оценка параметров:

In[43]:= data = RandomReal[ExponentialDistribution[1], 10]

Out[43]= {1.55598, 0.375999, 0.0878202, 1.58705, 0.874423, 2.17905, \
0.247473, 0.599993, 0.404341, 0.31505}

In[44]:= EstimatedDistribution[data, ExponentialDistribution[la], 
 ParameterEstimator -> "MaximumLikelihood"]

Out[44]= ExponentialDistribution[1.21548]

In[45]:= EstimatedDistribution[data, ExponentialDistribution[la], 
 ParameterEstimator -> "MethodOfMoments"]

Out[45]= ExponentialDistribution[1.21548]

Однако, может быть легко определить, какой метод максимального правдоподобия дает команду параметру.

In[48]:= Simplify[
 D[LogLikelihood[ExponentialDistribution[la], {x}], la], x > 0]

Out[48]= 1/la - x

Следовательно, оценочный параметр для экспоненциального распределения равен sum (1/la -x_i), откуда la = 1/Mean[data].Аналогичные уравнения могут быть разработаны для других семейств распределения и закодированы на выбранном вами языке.

0 голосов
/ 26 апреля 2011

При заданном параметризованном одномерном распределении (например, экспоненциальное зависит от лямбды или гамма зависит от тета и k), способ найти значения параметров, которые наилучшим образом соответствуют данной выборке числа называются процедурой Максимальное правдоподобие . Это не процедура наименьших квадратов, которая потребует биннинга и, следовательно, потери информации! В некоторых статьях по распространению в Википедии даются выражения для оценки максимальной вероятности параметров, но во многих - нет, и даже в тех, в которых есть пропущенные выражения, для панелей ошибок и ковариаций. Если вы знаете исчисление, вы можете получить эти результаты, выражая логарифмическую правдоподобность вашего набора данных в терминах параметров, устанавливая вторую производную на ноль, чтобы максимизировать ее, и используя обратную матрицу кривизны как минимум в качестве ковариационной матрицы. ваших параметров.

Учитывая два разных соответствия для двух разных параметризованных распределений, способ их сравнения называется тест вероятностного отношения . По сути, вы просто выбираете тот, у которого вероятность бревна больше.

...