Verilerin normal ve lognormal dağılımdan örnek olma olasılığını hesaplamak için algoritma gerekir


13

Diyelim ki bir dizi değeriniz var ve bunların Gauss (normal) bir dağılımdan veya lognormal bir dağılımdan örneklenmesinin daha olası olup olmadığını bilmek mi istiyorsunuz?

Tabii ki, ideal olarak popülasyon veya deneysel hatanın kaynakları hakkında bir şeyler biliyor olacaksınız, bu yüzden soruyu cevaplamak için yararlı ek bilgiler olacaktır. Ancak burada, sadece bir dizi rakamımız olduğunu ve başka hiçbir bilgimizin olmadığını varsayalım. Hangisi daha olasıdır: Gauss'tan örnekleme mi yoksa lognormal dağılımdan örnekleme mi? Ne kadar muhtemel? Ne umuyorum iki model arasında seçim ve umarım her birinin göreli olasılığını ölçmek için bir algoritma.


1
Doğada / yayınlanmış literatürdeki dağılımlar üzerindeki dağılımı denemek ve karakterize etmek eğlenceli bir egzersiz olabilir. Sonra tekrar - asla eğlenceli bir egzersizden daha fazlası olmayacak. Ciddi bir tedavi için, ya seçiminizi haklı çıkaracak bir teori arayabilir ya da her bir aday dağılımının uyum iyiliğini görselleştirebilir ve test edebilirsiniz.
JohnRos

3
Deneyimden bir genelleme meselesi varsa, özellikle çarpık olan cevap değişkenleri için pozitif çarpık dağılımların en yaygın tip olduğunu ve lognormallerin normallerden daha yaygın olduğunu söyleyebilirim. A 1962 cildi Bilim adamı ünlü istatistikçi IJ Good tarafından düzenlenen spekülasyonlar , "Günlük normal dağılımı normalden daha normal" iddiasını içeren "Bloggins'in çalışma kuralları" adlı anonim bir parça içeriyordu. (Diğer kuralların birçoğu güçlü bir şekilde istatistikseldir.)
Nick Cox

Sorunuzu JohnRos ve anxoestevez'den farklı yorumluyorum. Bana göre, sorunuz düz model seçimi hakkında bir soruya benziyor , yani hesaplama konusu , burada normal veya log-normal dağılım ve verilerinizdir. Model seçimi peşinde olduğunuz şey değilse, netleştirebilir misiniz? M DP(MD)MD
Lucas

@lucas Bence yorumunuz benimkinden çok farklı değil. Her iki durumda da apriori varsayımlar yapmanız gerekir .
anxoestevez

2
Neden sadece genelleştirilmiş olabilirlik oranını hesaplamak ve kullanıcıyı günlük-normalini tercih ettiğinde uyarmak değil?
Scortchi - Monica'yı eski durumuna döndürün

Yanıtlar:


7

Her bir dağılımı (normal veya lognormal) verilere maksimum olasılıkla sığdırarak, daha sonra her model altındaki log olasılığını karşılaştırarak (en yüksek log olasılığına en uygun model) karşılaştırarak dağıtım türünde en iyi tahminde bulunabilirsiniz. Örneğin, R dilinde:

# 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))]
}

Şimdi normal bir dağılımdan sayılar oluşturun ve ML'ye göre normal bir dağılım takın:

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

üretir:

$par
[1] 10.218083  1.787379

$value
[1] -199.9697
...

Normal ve lognormal dağılımların ML uyumu için günlük olasılığını karşılaştırın:

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

Lognormal bir dağılımla deneyin:

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

Atama, n, ortalama ve sd'ye bağlı olarak mükemmel olmayacaktır:

> 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 

1
Normal veya log-normal için maksimum olabilirlik parametresi tahminlerini sayısal olarak bulmanıza gerek yoktur (yine de diğer dağılımların karşılaştırılması fikrini nasıl genelleştireceğinizi gösterir). Bunun dışında çok mantıklı bir yaklaşım.
Scortchi - Eski durumuna getir Monica

R'yi veya maksimum olasılık kavramını zar zor kullandım, bu yüzden temel bir soru. AIC veya BIC karşılaştırılabilir olmayacağından, AIC (veya BIC) 'yi verilere karşı normal günlüklere uydurmaktan, veri kayıtlarına benzetemeyeceğimizi biliyorum. Kişinin iki modele bir veri setine uyması gerekir (dönüşüm olmadan; aykırı hariç tutmalar vb.) Ve verilerin dönüştürülmesi, karşılaştırma sahte olsa da AIC veya BIC'yi değiştirir. ML ne olacak? Bu karşılaştırma yasal mı?
Harvey Motulsky

Verilere en uygun normal ve lognormal dağılımları buluruz, daha sonra bu dağılımlardan (varsa ya da p(X|\theta)) olduklarını varsayarak verileri gözlemleme olasılığını hesaplarız . Verileri dönüştürmüyoruz. Verileri gözlemleme olasılığının en yüksek olduğu dağılımı yazdırıyoruz. Bu yaklaşım yasaldır, ancak veriler göz önüne alındığında modelin olasılığını p(M|X), yani verinin normal vs lognormal dağılımdan (örneğin p (normal) = 0,1, p (lognormal) = 0.9) Bayesci yaklaşımdan farklı olarak.
waferthin

1
@Harvey Yeterince doğru, ancak alakasız - normal ve log-normal dağılımlarını aynı verilere uydurma hakkında soru sordunuz ve bu whannymahoots'un cevapladığı şey. Her iki model için de serbest parametre sayısı aynı olduğundan, AIC veya BIC'lerin karşılaştırılması, günlük olasılıklarının karşılaştırılmasına indirgenir.
Scortchi - Eski durumuna getir Monica

@wannymahoots Bu bağlamda Bayesci bir yaklaşım için makul olan herhangi bir önceki - bir yazılım kullanıcısının normal veya log-normal verilere uymaya çalıştığı göreceli olasılıkları tahmin etmeye dayanarak - bir yaklaşıma benzer sonuçlar verecek kadar bilgisiz olacaktır. sadece olasılığa dayalı.
Scortchi - Eski durumuna getir Monica

11

Sorunuza Bayesci yaklaşım bir dizi veri noktası verildiğinde modelleri üzerindeki poster olasılığını dikkate almak olacaktır ,M{Normal,Log-normal}X={x1,...,xN}

P(MX)P(XM)P(M).

Zor olan kısım marjinal olabilirlik ,

P(XM)=P(Xθ,M)P(θM)dθ.

Bazı seçimleri için Gauss'un marjinal olasılığı kapalı biçimde elde edilebilir . Diyerek bu yana dağıtılmış-normalde günlük söyleyerek aynıdır olan normalde dağıtılır}, sizin için aynı marjinal olasılığını kullanmak mümkün olmalıdır log-normal bir modeli , yerine uygulayarak . Sadece dönüşümden Jacobian'ı dikkate almayı unutmayın ,p(θM)XY={logx1,...,logxNYX

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

Bu yaklaşım için, parametreleri üzerinde bir dağılım seçmeniz gerekir - burada, muhtemelen - ve önceki olasılıklar .P(θM)P(σ2,μM=Normal)P(M)

Misal:

İçin bir seçim , normal, ters-gama dağılımını parametreleri ile .P(μ,σ2M=Normal)m0=0,v0=20,a0=1,b0=100

resim açıklamasını buraya girin

Göre Murphy (2007) (203 denklemi), normal dağılımın marjinal olasılığı aşağıdaki formülle verilir:

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

burada ve , arka (Denklemler 196 ila 200) parametreleridir ,aN,bN,vNP(μ,σ2X,M=Normal)

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

Log-normal dağılım için aynı hiperparametreleri kullanıyorum,

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

Önceki log-normal olasılığı için , ve aşağıdaki log-normal dağılımından alınan veriler,P ( M = Günlük normal ) = 0.10.1P(M=Log-normal)=0.1

resim açıklamasını buraya girin

posterior şöyle davranır:

resim açıklamasını buraya girin

Kesintisiz çizgi, veri noktalarının farklı çekimleri için ortanca posterior olasılığı gösterir . Çok az veya hiç veri için inançların önceki inançlara yakın olduğunu unutmayın. Yaklaşık 250 veri noktası için, algoritma neredeyse her zaman verinin log-normal dağılımından alındığından emindir.N

Denklemleri uygularken, yoğunluk yerine kütle yoğunluklarıyla çalışmak iyi bir fikir olacaktır. Ama aksi halde oldukça basit olmalı. İşte araziler oluşturmak için kullanılan kod:

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


4

Muhtemelen profesyonel istatistikçi olmayan analistlere yardım etmek için oldukça pragmatik bir şey arıyorsunuz ve qq çizimlerine, yoğunluk çizimlerine, vb. Bakmak gibi standart keşif tekniklerini yapmaları için onları harekete geçirecek bir şeye ihtiyacınız var gibi görünüyor.

Bu durumda neden orijinal veriler üzerinde ve günlük dönüştürülmüş verilerde bir normallik testi (Shapiro-Wilk ya da her neyse) yapmıyorsunuz ve ikinci p değeri daha yüksekse analistin bir günlük dönüşümü kullanmayı düşünmesi için bir bayrak kaldırın. ? Bir bonus olarak, yoğunluk çizgisi grafiğinin ve ham ve dönüştürülen verilerin qqnorm grafiğinin 2 x 2 grafiğini tükürün.

Bu, teknik olarak göreceli olasılıkla ilgili sorunuza cevap vermeyecektir, ancak ihtiyacınız olan her şeyin bu olup olmadığını merak ediyorum.


Zeki. Belki bu yeterlidir ve olasılık hesaplamalarını açıklama ihtiyacını ortadan kaldırır .... Teşekkürler.
Harvey Motulsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.