Это сложный вопрос, и нет идеальных ответов. Я постараюсь дать вам обзор основных понятий и укажу вам направление на полезное чтение по этой теме.
Предположим, что вы - одномерный набор данных, и у вас есть конечный набор функций распределения вероятностей, из которых, по вашему мнению, могут быть получены данные. Вы можете рассмотреть каждый дистрибутив независимо и попытаться найти параметры, которые являются разумными с учетом ваших данных
Существует два способа задания параметров для функции распределения вероятности по заданным данным:
- Наименьшие квадраты
- Максимальное правдоподобие
По моему опыту, максимальное правдоподобие было предпочтительным в последние годы, хотя это может быть не во всех областях.
Вот конкретный пример того, как оценить параметры в R. Рассмотрим набор случайных точек, сгенерированных из распределения Гаусса со средним значением 0 и стандартным отклонением 1:
x = rnorm( n = 100, mean = 0, sd = 1 )
Предположим, вы знаете, что данные были сгенерированы с использованием гауссовского процесса, но вы забыли (или никогда не знали!) Параметры для гауссовского. Вы хотели бы использовать данные, чтобы дать вам разумные оценки среднего и стандартного отклонения. В R есть стандартная библиотека, которая делает это очень просто:
library(MASS)
params = fitdistr( x, "normal" )
print( params )
Это дало мне следующий вывод:
mean sd
-0.17922360 1.01636446
( 0.10163645) ( 0.07186782)
Они довольно близки к правильному ответу, а числа в скобках - это доверительные интервалы вокруг параметров. Помните, что каждый раз, когда вы генерируете новый набор баллов, вы получаете новый ответ для оценок.
Математически это максимальная вероятность для оценки как среднего, так и стандартного отклонения гауссианы. Вероятность означает (в данном случае) «вероятность данных заданных значений параметров». Максимальное правдоподобие означает «значения параметров, которые максимизируют вероятность генерации моих входных данных». Оценка максимального правдоподобия - это алгоритм для нахождения значений параметров, которые максимизируют вероятность генерации входных данных, и для некоторых распределений он может включать числовую оптимизацию алгоритмы. В R большая часть работы выполняется fitdistr , который в некоторых случаях будет вызывать optim .
Вы можете извлечь логарифмическую правдоподобие из ваших параметров следующим образом:
print( params$loglik )
[1] -139.5772
Чаще всего работа с логарифмической вероятностью, а не вероятностью избежать ошибок округления. Оценка общей вероятности ваших данных включает в себя умножение вероятностей, которые все меньше 1. Даже для небольшого набора данных общая вероятность очень быстро приближается к 0, и добавление логарифмических вероятностей ваших данных эквивалентно умножению вероятностей. Вероятность максимальна, когда логарифмическая вероятность приближается к 0, и, следовательно, большее количество отрицательных чисел хуже подходит для ваших данных.
С такими вычислительными инструментами легко оценить параметры для любого распределения. Рассмотрим этот пример:
x = x[ x >= 0 ]
distributions = c("normal","exponential")
for ( dist in distributions ) {
print( paste( "fitting parameters for ", dist ) )
params = fitdistr( x, dist )
print( params )
print( summary( params ) )
print( params$loglik )
}
Экспоненциальное распределение не генерирует отрицательные числа, поэтому я удалил их в первой строке. Вывод (который является стохастическим) выглядел так:
[1] "fitting parameters for normal"
mean sd
0.72021836 0.54079027
(0.07647929) (0.05407903)
Length Class Mode
estimate 2 -none- numeric
sd 2 -none- numeric
n 1 -none- numeric
loglik 1 -none- numeric
[1] -40.21074
[1] "fitting parameters for exponential"
rate
1.388468
(0.196359)
Length Class Mode
estimate 1 -none- numeric
sd 1 -none- numeric
n 1 -none- numeric
loglik 1 -none- numeric
[1] -33.58996
Экспоненциальное распределение на самом деле с большей вероятностью породило эти данные, чем нормальное распределение, вероятно, потому что экспоненциальное распределение не должно присваивать какую-либо плотность вероятности отрицательным числам.
Все эти проблемы с оценкой усугубляются, когда вы пытаетесь приспособить ваши данные к большему количеству распределений. Распределения с большим количеством параметров более гибкие, поэтому они будут лучше соответствовать вашим данным, чем распределения с меньшими параметрами. Кроме того, некоторые распределения являются частными случаями других распределений (например, Exponential является частным случаем Gamma ). Из-за этого очень распространено использование предыдущих знаний, чтобы ограничить выбранные вами модели подмножеством всех возможных моделей.
Одна хитрость, позволяющая обойти некоторые проблемы в оценке параметров, - это сгенерировать много данных и оставить некоторые данные для перекрестной проверки .Чтобы провести перекрестную проверку соответствия параметров данным, не включайте некоторые данные в процедуру оценки, а затем измеряйте вероятность каждой модели на оставленных данных.