วิธีการผกผันทำงานอย่างไร
สมมติว่าฉันมีตัวอย่างสุ่มมีความหนาแน่นมากกว่าและดังนั้นจึงมี CDFใน(0,1)แล้วตามด้วยวิธีการผกผันที่ฉันได้รับการกระจายของเป็นF_X
ดังนั้นมีการกระจายของ ? นี่เป็นวิธีการกลับด้านหรือไม่
u<-runif(n)
x<-u^(theta)
วิธีการผกผันทำงานอย่างไร
สมมติว่าฉันมีตัวอย่างสุ่มมีความหนาแน่นมากกว่าและดังนั้นจึงมี CDFใน(0,1)แล้วตามด้วยวิธีการผกผันที่ฉันได้รับการกระจายของเป็นF_X
ดังนั้นมีการกระจายของ ? นี่เป็นวิธีการกลับด้านหรือไม่
u<-runif(n)
x<-u^(theta)
คำตอบ:
วิธีนี้ง่ายมากดังนั้นฉันจะอธิบายด้วยคำพูดง่ายๆ ขั้นแรกให้ใช้ฟังก์ชันการแจกแจงสะสม ของการแจกแจงบางอย่างที่คุณต้องการตัวอย่าง ฟังก์ชันทำหน้าที่ป้อนค่าและบอกคุณว่าความน่าจะเป็นที่จะได้รับคืออะไร ดังนั้น x X ≤ x
ผกผันของฟังก์ชั่นฟังก์ชั่นดังกล่าวจะใช้เป็น input และผลตอบแทนxขอให้สังเกตว่า 's มีการกระจายอย่างสม่ำเสมอ - นี้สามารถนำมาใช้สำหรับการสุ่มตัวอย่างจากถ้าคุณรู้ว่า1} วิธีการที่เรียกว่าผกผันเปลี่ยนการสุ่มตัวอย่าง ความคิดนั้นง่ายมาก: มันง่ายที่จะสุ่มตัวอย่างค่าอย่างสม่ำเสมอจากดังนั้นถ้าคุณต้องการที่จะสุ่มตัวอย่างจากเพียงแค่เอาค่าและส่งผ่านจะได้รับ 's p x p F X F - 1 X U ( 0 , 1 ) F X u ∼ U ( 0 , 1 ) u F - 1 X x
หรือใน R (สำหรับการแจกแจงแบบปกติ)
U <- runif(1e6)
X <- qnorm(U)
ในการมองภาพมันดูที่ CDF ด้านล่างโดยทั่วไปเราคิดว่าการแจกแจงในแง่ของการดู -axis สำหรับความน่าจะเป็นของค่าจาก -axis ด้วยวิธีการสุ่มตัวอย่างนี้เราจะทำสิ่งที่ตรงกันข้ามและเริ่มต้นด้วย "ความน่าจะเป็น" และใช้มันเพื่อเลือกค่าที่เกี่ยวข้อง กับการกระจายต่อเนื่องคุณรักษาเป็นบรรทัดจากที่จะและค่าที่กำหนดบนพื้นฐานที่ไม่บางจุดอยู่บนบรรทัดนี้ (เช่นถ้าหรือถ้าสำหรับการสุ่มตัวอย่างจาก )x U 0 1 u 0 0 ≤ u < 0.5 1 0.5 ≤ u ≤ 1 B e r n o u l l i ( 0.5 )
น่าเสียดายที่สิ่งนี้ไม่สามารถทำได้เสมอไปเนื่องจากไม่ใช่ทุกฟังก์ชั่นที่มีค่าผกผันของมันเช่นคุณไม่สามารถใช้วิธีนี้กับการแจกแจงตัวแปร นอกจากนี้ยังไม่จำเป็นต้องเป็นวิธีที่มีประสิทธิภาพสูงสุดในทุกสถานการณ์ในหลายกรณีอัลกอริทึมที่ดีกว่าอยู่
คุณถามว่าการกระจายของคืออะไร เนื่องจากเป็นค่าผกผันของดังนั้นและดังนั้นใช่ค่าที่ได้รับโดยใช้ วิธีการดังกล่าวมีการจัดจำหน่ายเช่นเดียวกับXคุณสามารถตรวจสอบสิ่งนี้ได้ด้วยการจำลองสถานการณ์แบบง่าย ๆF - 1 X F X F X ( F - 1 X ( u ) ) = u F - 1 X ( F X ( x ) ) = x X
U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)
ใช่มีการกระจายของX X
สองจุดเพิ่มเติมเกี่ยวกับสัญชาตญาณที่อยู่เบื้องหลังวิธีการแปลงผกผันอาจมีประโยชน์
(1) เพื่อให้เข้าใจว่าหมายถึงอะไรจริงๆโปรดอ้างอิงกราฟในคำตอบของ Tim เพื่อช่วยให้ฉันเข้าใจฟังก์ชัน quantile (inverse CDF)
(2) [โปรดเพียงแค่เพิกเฉยต่อไปนี้หากมันทำให้เกิดความสับสนมากขึ้นแทนความชัดเจน]
Letตัวแปรสุ่ม (RV) ที่มีอย่างต่อเนื่องและเพิ่มขึ้นอย่างเคร่งครัด CDF Fจากนั้น หมายเหตุเกี่ยวกับสัญกรณ์:คือ rv ดังนั้นฟังก์ชันของ rv ,คือ rv นั่นเอง F F ( X ) ∼ Unif ( 0 , 1 ) X X F ( X )
ตัวอย่างเช่นถ้าคุณจะพลิกคำถามเพื่อที่คุณจะมีการเข้าถึงและต้องการที่จะสร้างมาตรฐานเครื่องแบบแล้ว(0,1) อนุญาตเรียกสิ่งนี้ว่าตัวแปรสุ่มUดังนั้น กลับมาที่คำถามของคุณคุณมีงานที่ตรงข้าม: การสร้างออกจากUดังนั้น X 1 / θ ∼ ยูนิฟ( 0 , 1 ) U U = X 1 / θ X U X = U θ
PS ทางเลือกชื่อสำหรับวิธีนี้คือการแปลงอินทิกรัลแบบน่าจะเป็น, การสุ่มตัวอย่างการแปลงผกผัน, การแปลงเชิงปริมาณและในบางแหล่ง "ทฤษฎีบทพื้นฐานของการจำลอง"