M∈{Normal,Log-normal}X={x1,...,xN}
P(M|X)∝P(X|M)P(M) .
Трудная часть заключается в получении предельной вероятности ,
п( Х∣ М) = ∫п( Х∣ θ , м) P( θ ∣ M)dθ .
p ( θ ∣ M)ИксY= { журналИкс1, . , , , журналИксNYИкс,
P(X∣M=Log-Normal)=P(Y∣M=Normal)⋅∏i∣∣∣1xi∣∣∣.
P(θ∣M)P(σ2,μ∣M=Normal)P(M)
Пример:
P(μ,σ2∣M=Normal)m0=0,v0=20,a0=1,b0=100
Согласно Мерфи (2007) (уравнение 203), предельная вероятность нормального распределения определяется как
P(X∣M=Normal)=|vN|12|v0|12ba00baNnΓ(aN)Γ(a0)1πN/22N
aN,bN, and vN are the parameters of the posterior P(μ,σ2∣X,M=Normal) (Equations 196 to 200),
vNmNaNbN=1/(v−10+N),=(v−10m0+∑ixi)/vN,=a0+N2,=b0+12(v−10m20−v−1Nm2N+∑ix2i).
I use the same hyperparameters for the log-normal distribution,
P(X∣M=Log-normal)=P({logx1,...,logxN}∣M=Normal)⋅∏i∣∣∣1xi∣∣∣.
Для предварительной вероятности нормального логарифма 0,1, п( М= Логарифмическая нормаль ) = 0,1и данные, взятые из следующего лог-нормального распределения,
задний ведет себя так:
Сплошная линия показывает среднюю апостериорную вероятность для разных розыгрышей NТочки данных. Обратите внимание на то, что по небольшим или никаким данным убеждения близки к предыдущим убеждениям. Приблизительно для 250 точек данных алгоритм почти всегда уверен, что данные были получены из лог-нормального распределения.
При реализации уравнений было бы неплохо работать с логарифмическими плотностями вместо плотностей. Но в остальном все должно быть довольно просто. Вот код, который я использовал для создания графиков:
https://gist.github.com/lucastheis/6094631