วิธีการแปลงผกผันทำงานอย่างไร


21

วิธีการผกผันทำงานอย่างไร
สมมติว่าฉันมีตัวอย่างสุ่มมีความหนาแน่นมากกว่าและดังนั้นจึงมี CDFใน(0,1)แล้วตามด้วยวิธีการผกผันที่ฉันได้รับการกระจายของเป็นF_X X1,X2,...,Xnf(x;θ)=1θx(1θ)θ
0<x<1FX(x)=x1/θ(0,1)XFX1(u)=uθ

ดังนั้นมีการกระจายของ ? นี่เป็นวิธีการกลับด้านหรือไม่uθX

u<-runif(n)
x<-u^(theta)

3
ดูกระทู้ของเราในหนึ่งน่าจะเปลี่ยน
whuber

1
ใช่แม้ว่าโดยปกติแล้วจะเรียกว่า ลองหาฟังก์ชันการแจกแจงของเพื่อดูว่าทำไมมันถึงทำงาน F1(U)
dsaxton

คำตอบ:


20

วิธีนี้ง่ายมากดังนั้นฉันจะอธิบายด้วยคำพูดง่ายๆ ขั้นแรกให้ใช้ฟังก์ชันการแจกแจงสะสม ของการแจกแจงบางอย่างที่คุณต้องการตัวอย่าง ฟังก์ชันทำหน้าที่ป้อนค่าและบอกคุณว่าความน่าจะเป็นที่จะได้รับคืออะไร ดังนั้น x X xFXxXx

FX(x)=Pr(Xx)=p

ผกผันของฟังก์ชั่นฟังก์ชั่นดังกล่าวจะใช้เป็น 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 xFX1pxpFXFX1U(0,1)FXuU(0,1)uFX1x

FX1(u)=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 )yxU01u00u<0.510.5u1Bernoulli(0.5)

ป้อนคำอธิบายรูปภาพที่นี่

น่าเสียดายที่สิ่งนี้ไม่สามารถทำได้เสมอไปเนื่องจากไม่ใช่ทุกฟังก์ชั่นที่มีค่าผกผันของมันเช่นคุณไม่สามารถใช้วิธีนี้กับการแจกแจงตัวแปร นอกจากนี้ยังไม่จำเป็นต้องเป็นวิธีที่มีประสิทธิภาพสูงสุดในทุกสถานการณ์ในหลายกรณีอัลกอริทึมที่ดีกว่าอยู่

คุณถามว่าการกระจายของคืออะไร เนื่องจากเป็นค่าผกผันของดังนั้นและดังนั้นใช่ค่าที่ได้รับโดยใช้ วิธีการดังกล่าวมีการจัดจำหน่ายเช่นเดียวกับXคุณสามารถตรวจสอบสิ่งนี้ได้ด้วยการจำลองสถานการณ์แบบง่าย ๆF - 1 X F X F X ( F - 1 X ( u ) ) = u F - 1 X ( F X ( x ) ) = x XFX1(u)FX1FXFX(FX1(u))=uFX1(FX(x))=xX

U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)

คำตอบที่ดี. วิธีนี้ใช้ได้เมื่อคุณมีการกระจายเช่นชี้แจง Cauchy, เรขาคณิต Pareto, Logistic, สุดขีดราคา Weibullฯลฯ ตัวอย่างเช่นคุณไม่สามารถหารูปแบบปิดสำหรับการกระจายปกติ ดังนั้นคุณจะไม่สามารถใช้วิธีนี้ คุณอาจจะลองใช้วิธีการอื่น ๆ เช่นการปฏิเสธวิธี
Abbas Salimi

2
คุณสามารถใช้วิธีการแปลงผกผันกับการแจกแจงแบบปกติ มีการใช้งานจำนวนมากออกมีสำหรับเป็นCDF ผกผันปกติ ตัวอย่างเช่นคุณสามารถเขียน CDF ผกผันตามปกติโดยใช้ฟังก์ชั่นเสริมข้อผิดพลาด การใช้ตัวอย่างของERFC อยู่ที่นี่ อย่าเขียนรหัสตัวเอง ใช้ห้องสมุด ที่ไม่มีสูตรฟอร์มปิดอยู่ไม่ได้หมายความว่าคุณไม่สามารถใช้การประมาณค่าตัวเลขคุณภาพสูง
Matthew Gunn

2

ใช่มีการกระจายของX XUθX

สองจุดเพิ่มเติมเกี่ยวกับสัญชาตญาณที่อยู่เบื้องหลังวิธีการแปลงผกผันอาจมีประโยชน์

(1) เพื่อให้เข้าใจว่าหมายถึงอะไรจริงๆโปรดอ้างอิงกราฟในคำตอบของ Tim เพื่อช่วยให้ฉันเข้าใจฟังก์ชัน quantile (inverse CDF)F1

(2) [โปรดเพียงแค่เพิกเฉยต่อไปนี้หากมันทำให้เกิดความสับสนมากขึ้นแทนความชัดเจน]

Letตัวแปรสุ่ม (RV) ที่มีอย่างต่อเนื่องและเพิ่มขึ้นอย่างเคร่งครัด CDF Fจากนั้น หมายเหตุเกี่ยวกับสัญกรณ์:คือ rv ดังนั้นฟังก์ชันของ rv ,คือ rv นั่นเอง F F ( X ) Unif ( 0 , 1 ) X X F ( X )XF

F(X)Unif(0,1)

XXF(X)

ตัวอย่างเช่นถ้าคุณจะพลิกคำถามเพื่อที่คุณจะมีการเข้าถึงและต้องการที่จะสร้างมาตรฐานเครื่องแบบแล้ว(0,1) อนุญาตเรียกสิ่งนี้ว่าตัวแปรสุ่มUดังนั้น กลับมาที่คำถามของคุณคุณมีงานที่ตรงข้าม: การสร้างออกจากUดังนั้น X 1 / θยูนิฟ( 0 , 1 ) U U = X 1 / θ X U X = U θXX1/θUnif(0,1)U

U=X1/θ
XU
X=Uθ

PS ทางเลือกชื่อสำหรับวิธีนี้คือการแปลงอินทิกรัลแบบน่าจะเป็น, การสุ่มตัวอย่างการแปลงผกผัน, การแปลงเชิงปริมาณและในบางแหล่ง "ทฤษฎีบทพื้นฐานของการจำลอง"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.