Нужен алгоритм для вычисления относительной вероятности того, что данные являются выборкой из нормального и логнормального распределения

13

Допустим, у вас есть набор значений, и вы хотите знать, более ли вероятно, что они были выбраны из гауссова (нормального) распределения или из логнормального распределения?

Конечно, в идеале вы должны были бы что-то знать о населении или об источниках экспериментальной ошибки, поэтому имели бы дополнительную информацию, полезную для ответа на вопрос. Но здесь, предположим, у нас есть только набор чисел и никакой другой информации. Что является более вероятным: выборка по Гауссу или выборка по логнормальному распределению? Насколько более вероятно? Я надеюсь на алгоритм выбора между двумя моделями и, надеюсь, количественную оценку относительной вероятности каждой из них.

Харви Мотульский
источник
1
Это может быть забавное упражнение, чтобы попытаться охарактеризовать распределение по распределению в природе / опубликованной литературе. Опять же - это никогда не будет больше, чем веселое упражнение. Для серьезного лечения вы можете либо найти теорию, оправдывающую ваш выбор, либо получить достаточно данных, визуализировать и проверить правильность соответствия каждого распределения кандидатов.
JohnRos
3
Если это вопрос обобщения опыта, я бы сказал, что наиболее распространенным типом является положительно искаженное распределение, особенно для переменных отклика, которые имеют центральный интерес, и что логнормальные значения встречаются чаще, чем нормальные. Том 1962 года . Ученые предполагают, что под редакцией известного статистика И.Дж. Гуда была включена анонимная статья «Рабочие правила Bloggins», содержащая утверждение «Нормальное распределение бревен более нормальное, чем нормальное». (Некоторые другие правила строго статистические.)
Ник Кокс
Кажется, я интерпретирую ваш вопрос иначе, чем JohnRos и Acutoestevez. Для меня ваш вопрос звучит как вопрос о выборе простой модели , то есть вопрос вычисления , где M - это нормальное или логарифмическое распределение, а D - ваши данные. Если выбор модели не то, что вы после, вы можете уточнить? P(MD)MD
Лукас
@lucas Я думаю, твоя интерпретация не сильно отличается от моей. В любом случае вам нужно сделать априорные предположения.
тревожестевез
2
Почему бы просто не рассчитать обобщенное отношение правдоподобия и не предупредить пользователя, когда он поддерживает нормальное логарифмическое выражение?
Scortchi - Восстановить Монику

Ответы:

7

Вы можете сделать наиболее точную оценку типа распределения, подгоняя каждое распределение (нормальное или логнормальное) к данным с максимальной вероятностью, а затем сравнивая логарифмическое правдоподобие для каждой модели - модель с наибольшим логарифмическим правдоподобием, которая наилучшим образом подходит. Например, в R:

# log likelihood of the data given the parameters (par) for 
# a normal or lognormal distribution
logl <- function(par, x, lognorm=F) {
    if(par[2]<0) { return(-Inf) }
    ifelse(lognorm,
    sum(dlnorm(x,par[1],par[2],log=T)),
    sum(dnorm(x,par[1],par[2],log=T))
    )
}

# estimate parameters of distribution of x by ML 
ml <- function(par, x, ...) {
    optim(par, logl, control=list(fnscale=-1), x=x, ...)
}

# best guess for distribution-type
# use mean,sd of x for starting parameters in ML fit of normal
# use mean,sd of log(x) for starting parameters in ML fit of lognormal
# return name of distribution type with highest log ML
best <- function(x) {
    logl_norm <- ml(c(mean(x), sd(x)), x)$value
        logl_lognorm <- ml(c(mean(log(x)), sd(log(x))), x, lognorm=T)$value
    c("Normal","Lognormal")[which.max(c(logl_norm, logl_lognorm))]
}

Теперь сгенерируйте числа из нормального распределения и подгоните нормальное распределение по ML:

set.seed(1)
x = rnorm(100, 10, 2)
ml(c(10,2), x)

Производит:

$par
[1] 10.218083  1.787379

$value
[1] -199.9697
...

Сравните правдоподобие для соответствия ML нормального и логнормального распределений:

ml(c(10,2), x)$value # -199.9697
    ml(c(2,0.2), x, lognorm=T)$value # -203.1891
best(x) # Normal

Попробуйте с логнормальным дистрибутивом:

best(rlnorm(100, 2.6, 0.2)) # lognormal

Назначение не будет идеальным, в зависимости от n, среднего и сд:

> table(replicate(1000, best(rnorm(500, 10, 2))))

Lognormal    Normal 
        6       994 
> table(replicate(1000, best(rlnorm(500, 2.6, 0.2))))

Lognormal    Normal 
      999         1 
waferthin
источник
1
Вам не нужно находить числовые оценки параметра максимального правдоподобия для нормального или логарифмического нормального значения (хотя оно показывает, как вы обобщите идею для сравнения других распределений). Кроме того, очень разумный подход.
Scortchi - Восстановить Монику
Я едва использовал R или концепцию максимального правдоподобия, поэтому вот основной вопрос. Я знаю, что мы не можем сравнивать AIC (или BIC) с соответствием нормального распределения данным и журналам данных, потому что AIC или BIC не будут сопоставимы. Нужно подогнать две модели к одному набору данных (без преобразований, без исключений и т. Д.), И преобразование данных изменит AIC или BIC независимо от того, что сравнение будет поддельным. Как насчет ML? Это сравнение законно?
Харви Мотульский
Мы находим наиболее подходящие нормальные и логнормальные распределения к данным, а затем рассчитываем вероятность наблюдения данных, предполагая, что они были из этих распределений (вероятность или p(X|\theta)). Мы не трансформируем данные. Распечатываем распределение, для которого вероятность наблюдения данных самая высокая. Этот подход является законным, но имеет недостаток, заключающийся в том, что мы не определяем вероятность модели с учетом данных p(M|X), то есть вероятность того, что данные получены из нормального и логнормального распределения (например, p (нормальное) = 0,1, p (логнормальное) = 0,9) в отличие от байесовского подхода.
Вафель
1
@ Harvey Достаточно верно, но не имеет значения - вы спрашивали о подборе нормальных и логарифмических распределений для одних и тех же данных, и вот на что отвечает whannymahoots. Поскольку количество свободных параметров одинаково для обеих моделей, сравнение AIC или BIC сводится к сравнению логарифмических правдоподобий.
Scortchi - Восстановить Монику
@wannymahoots Любой разумный предварительный подход к байесовскому подходу в этом контексте, основанный на оценке относительных вероятностей того, что пользователь программного обеспечения пытается разместить нормальные или логарифмические данные, будет настолько неинформативным, что даст аналогичные результаты для подхода основанный только на вероятности.
Scortchi - Восстановить Монику
11

M{Normal,Log-normal}X={x1,...,ИксN}

P(M|Икс)αп(Икс|M)п(M),

Трудная часть заключается в получении предельной вероятности ,

п(Икс|M)знак равноп(Икс|θ,M)п(θ|M)dθ,

п(θ|M)ИксYзнак равно{журналИкс1,,,,,журналИксNYИкс,

P(XM=Log-Normal)=P(YM=Normal)i|1xi|.

P(θM)P(σ2,μM=Normal)P(M)

Пример:

P(μ,σ2M=Normal)m0=0,v0=20,a0=1,b0=100

введите описание изображения здесь

Согласно Мерфи (2007) (уравнение 203), предельная вероятность нормального распределения определяется как

P(XM=Normal)=|vN|12|v0|12b0a0bnaNΓ(aN)Γ(a0)1πN/22N

aN,bN, and vN are the parameters of the posterior P(μ,σ2X,M=Normal) (Equations 196 to 200),

vN=1/(v01+N),mN=(v01m0+ixi)/vN,aN=a0+N2,bN=b0+12(v01m02vN1mN2+ixi2).

I use the same hyperparameters for the log-normal distribution,

P(XM=Log-normal)=P({logx1,...,logxN}M=Normal)i|1xi|.

Для предварительной вероятности нормального логарифма 0,1, п(Mзнак равноВход нормальный)знак равно0,1и данные, взятые из следующего лог-нормального распределения,

введите описание изображения здесь

задний ведет себя так:

введите описание изображения здесь

Сплошная линия показывает среднюю апостериорную вероятность для разных розыгрышей NТочки данных. Обратите внимание на то, что по небольшим или никаким данным убеждения близки к предыдущим убеждениям. Приблизительно для 250 точек данных алгоритм почти всегда уверен, что данные были получены из лог-нормального распределения.

При реализации уравнений было бы неплохо работать с логарифмическими плотностями вместо плотностей. Но в остальном все должно быть довольно просто. Вот код, который я использовал для создания графиков:

https://gist.github.com/lucastheis/6094631

Лукас
источник
4

Похоже, вы ищете что-то весьма прагматичное, чтобы помочь аналитикам, которые, вероятно, не являются профессиональными статистиками и нуждаются в чем-то, что побуждает их делать то, что должно быть стандартными исследовательскими методами, такими как просмотр графиков qq, графиков плотности и т. Д.

В таком случае, почему бы просто не выполнить тест нормальности (Shapiro-Wilk или любой другой) для исходных данных и один для данных, преобразованных в журнал, и, если второе значение p выше, поднимите флаг для аналитика, чтобы рассмотреть возможность использования преобразования журнала ? В качестве бонуса выложите график 2 x 2 графика линейной плотности и график qqnorm необработанных и преобразованных данных.

Технически это не ответит на ваш вопрос об относительной вероятности, но мне интересно, если это все, что вам нужно.

Питер Эллис
источник
Умная. Может быть, этого достаточно, и избавляет от необходимости объяснять вычисления вероятности .... Спасибо.
Харви Мотульский