Perlu algoritma untuk menghitung kemungkinan relatif bahwa data adalah sampel dari distribusi normal vs lognormal


13

Katakanlah Anda memiliki seperangkat nilai, dan Anda ingin tahu apakah lebih besar kemungkinannya diambil sampelnya dari distribusi Gaussian (normal) atau sampel dari distribusi lognormal?

Tentu saja, idealnya Anda akan tahu sesuatu tentang populasi atau tentang sumber kesalahan eksperimental, sehingga akan memiliki informasi tambahan yang berguna untuk menjawab pertanyaan. Tapi di sini, anggaplah kita hanya memiliki satu set angka dan tidak ada informasi lain. Mana yang lebih mungkin: pengambilan sampel dari Gaussian atau pengambilan sampel dari distribusi lognormal? Berapa besar kemungkinannya? Apa yang saya harapkan adalah algoritma untuk memilih antara dua model, dan mudah-mudahan menghitung kemungkinan masing-masing model.


1
Ini bisa menjadi latihan yang menyenangkan untuk mencoba dan mengkarakterisasi distribusi melalui distribusi di alam / literatur yang diterbitkan. Kemudian lagi - itu tidak akan pernah lebih dari latihan yang menyenangkan. Untuk perawatan yang serius, Anda dapat mencari teori yang membenarkan pilihan Anda, atau memberikan cukup data- memvisualisasikan dan menguji kebaikan dari masing-masing kandidat.
JohnRos

3
Jika itu adalah masalah generalisasi dari pengalaman, saya akan mengatakan bahwa distribusi miring positif adalah tipe yang paling umum, terutama untuk variabel respons yang merupakan kepentingan utama, dan bahwa lognormal lebih umum daripada normal. J volume 1962 Ilmuwan berspekulasi diedit oleh ahli statistik terkenal IJ Good termasuk bagian anonim "Aturan kerja Bloggins", yang berisi pernyataan "Distribusi log normal lebih normal daripada normal". (Beberapa aturan lainnya sangat statistik.)
Nick Cox

Saya tampaknya menafsirkan pertanyaan Anda secara berbeda dari JohnRos dan anxoestevez. Bagi saya, pertanyaan Anda terdengar seperti tentang pemilihan model biasa , yaitu soal komputasi , di mana M merupakan distribusi normal atau log-normal dan D adalah data Anda. Jika pemilihan model bukan yang Anda cari, dapatkah Anda mengklarifikasi? P(MD)MD
Lucas

@ Lucas Saya pikir interpretasi Anda tidak jauh berbeda dari saya. Dalam kedua kasus Anda perlu melakukan asumsi apriori .
anxoestevez

2
Mengapa tidak menghitung rasio kemungkinan umum & memberi tahu pengguna saat log-normal?
Scortchi

Jawaban:


7

Anda dapat mengambil tebakan terbaik pada tipe distribusi dengan memasang setiap distribusi (normal atau lognormal) ke data dengan kemungkinan maksimum, kemudian membandingkan kemungkinan log di setiap model - model dengan kemungkinan log tertinggi yang paling cocok. Misalnya, dalam 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))]
}

Sekarang hasilkan angka dari distribusi normal dan paskan distribusi normal dengan ML:

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

Menghasilkan:

$par
[1] 10.218083  1.787379

$value
[1] -199.9697
...

Bandingkan kemungkinan log untuk ML fit dari distribusi normal dan lognormal:

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

Coba dengan distribusi lognormal:

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

Tugas tidak akan sempurna, tergantung pada n, mean dan sd:

> 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
Anda tidak perlu menemukan estimasi parameter kemungkinan maksimum secara numerik untuk normal atau log-normal (meskipun itu menunjukkan bagaimana Anda akan menggeneralisasi ide untuk membandingkan distribusi lain). Terlepas dari itu, pendekatan yang sangat masuk akal.
Scortchi

Saya jarang menggunakan R atau konsep kemungkinan maksimum, jadi inilah pertanyaan mendasar. Saya tahu kita tidak bisa membandingkan AIC (atau BIC) dari pemasangan distribusi normal ke data vs log data, karena AIC atau BIC tidak akan sebanding. Kita harus mencocokkan dua model dengan satu set data (tanpa transformasi; tanpa pengecualian outlier dll), dan mentransformasikan data akan mengubah AIC atau BIC tanpa membuat perbandingan palsu. Bagaimana dengan ML? Apakah perbandingan ini sah?
Harvey Motulsky

Kami menemukan distribusi normal dan lognormal pas terbaik untuk data, kemudian menghitung probabilitas mengamati data dengan asumsi mereka dari distribusi tersebut (kemungkinan atau p(X|\theta)). Kami tidak mengubah data. Kami mencetak distribusi dengan probabilitas mengamati data tertinggi. Pendekatan ini sah tetapi memiliki kelemahan bahwa kita tidak menyimpulkan probabilitas model yang diberikan data p(M|X), yaitu probabilitas bahwa data berasal dari distribusi normal vs lognormal (misalnya p (normal) = 0,1, p (lognormal) = 0,9) tidak seperti pendekatan Bayesian.
waferthin

1
@ Harvey Cukup benar, tetapi tidak relevan - Anda bertanya tentang pemasangan distribusi normal vs log-normal ke data yang sama , & inilah yang dijawab whannymahoots. Karena jumlah parameter bebas adalah sama untuk kedua model, membandingkan AIC atau BIC mengurangi untuk membandingkan kemungkinan log.
Scortchi

@wannymahoots Apa pun yang masuk akal sebelumnya untuk pendekatan Bayesian dalam konteks ini - mengandalkan estimasi probabilitas relatif bahwa pengguna perangkat lunak berusaha menyesuaikan data normal atau log-normal - akan menjadi sangat tidak informatif sehingga akan memberikan hasil yang mirip dengan pendekatan hanya didasarkan pada kemungkinan.
Scortchi

11

M{Normal,Log-normal}X={x1,...,xN}

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

Bagian yang sulit adalah mendapatkan kemungkinan marjinal ,

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

p(θM)XY={logx1,...,logxNYX,

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

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

Contoh:

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

masukkan deskripsi gambar di sini

Menurut Murphy (2007) (Persamaan 203), kemungkinan marginal dari distribusi normal kemudian diberikan oleh

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

aN,bN,vNP(μ,σ2X,M=Normal)

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

Saya menggunakan hyperparameters yang sama untuk distribusi log-normal,

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

0.1P(M=Log-normal)=0.1

masukkan deskripsi gambar di sini

posterior berperilaku seperti ini:

masukkan deskripsi gambar di sini

N

Ketika menerapkan persamaan, itu akan menjadi ide yang baik untuk bekerja dengan kepadatan log, bukan kepadatan. Tetapi sebaliknya itu harus lurus ke depan. Berikut adalah kode yang saya gunakan untuk membuat plot:

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


4

Sepertinya Anda mencari sesuatu yang cukup pragmatis untuk membantu analis yang mungkin bukan ahli statistik profesional dan membutuhkan sesuatu untuk mendorong mereka melakukan apa yang seharusnya menjadi teknik eksplorasi standar seperti melihat plot qq, plot kepadatan, dll.

Dalam hal ini mengapa tidak hanya melakukan tes normalitas (Shapiro-Wilk atau apa pun) pada data asli, dan satu pada log mengubah data, dan jika nilai p kedua lebih tinggi menaikkan bendera untuk analis untuk mempertimbangkan menggunakan log transformasi ? Sebagai bonus, keluarkan grafik 2 x 2 dari plot garis kerapatan dan plot qqnorm dari data mentah dan yang diubah.

Ini tidak akan secara teknis menjawab pertanyaan Anda tentang kemungkinan relatif tetapi saya ingin tahu apakah itu yang Anda butuhkan.


Pintar. Mungkin ini sudah cukup, dan menghindari perlunya menjelaskan kemungkinan perhitungan .... Terima kasih.
Harvey Motulsky
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.