Yöntem çok basit, bu yüzden basit kelimelerle açıklayacağım. İlk olarak, örneklemek istediğiniz bazı dağıtımların toplu dağıtım işlevini alın. Fonksiyon, giriş olarak değerini alır ve size elde etme olasılığının ne olduğunu söyler . Yani x X ≤ xFXxX≤x
FX(x)=Pr(X≤x)=p
bu fonksiyon fonksiyonunun tersine , , giriş ve olarak döndürür . 'lerin eşit olarak dağıtıldığına dikkat edin - biliyorsanız bu herhangi bir örnekleme için kullanılabilir . Yönteme ters dönüşüm örneklemesi denir . Fikir çok basit: ondan eşit örnek değerler kolaydır Eğer bazı numuneye istiyorum eğer öyleyse, , sadece değerler alan ve pas aracılığıyla elde etmek için 'inF−1XpxpFXF−1XU(0,1)FXu∼U(0,1)uF−1Xx
F−1X(u)=x
veya R (normal dağılım için)
U <- runif(1e6)
X <- qnorm(U)
Aşağıdaki CDF'ye bakmasını görselleştirmek için genellikle ekseninden değerlerin olasılıkları için eksenine bakma açısından dağılımları düşünüyoruz . Bu örnekleme yöntemi ile tersini yapıyoruz ve "olasılıklar" ile başlıyor ve bunları kendileriyle ilgili değerleri seçmek için kullanıyoruz. Kesikli dağılımların ile tedavi bir hat olarak ile bir noktada yaptığı yere bağlı olarak ve atama değerleri bu hat üzerinde yer (örneğin, ise veya ise numune için ).yxU01u00≤u<0.510.5≤u≤1Bernoulli(0.5)
Ne yazık ki, bu her zaman mümkün değildir, çünkü her fonksiyonun tersi yoktur, örneğin bu yöntemi iki değişkenli dağılımlarla kullanamazsınız. Ayrıca her durumda en verimli yöntem olmak zorunda değildir , birçok durumda daha iyi algoritmalar vardır.
Ayrıca nun dağılımı nedir . Yana tersidir ardından ve , yani evet değerleri kullanılarak elde edilen bu yöntem aynı dağılıma sahiptir . Bunu basit bir simülasyonla kontrol edebilirsinizF−1X(u)F−1XFXF - 1 X ( F X ( x ) ) = x XFX(F−1X(u))=uF−1X(FX(x))=xX
U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)