การสุ่มตัวอย่าง CDF ผกผันสำหรับการแจกแจงแบบผสม


9

เวอร์ชันย่อที่ไม่อยู่ในบริบท

ปล่อยให้เป็นตัวแปรสุ่มด้วย CDF y

F(){θ y = 0 θ+(1θ)×CDFlog-normal(;μ,σ) y > 0

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

ฉันทราบวิธีสองขั้นตอน แต่ฉันไม่ทราบวิธีนำไปใช้กับสถานการณ์ของฉัน (ดูด้านล่าง)


รุ่นยาวที่มีพื้นหลัง

ฉันติดตั้งโมเดลต่อไปนี้สำหรับการตอบสนองที่มีค่าเวกเตอร์โดยใช้ MCMC (โดยเฉพาะสแตน):yi=(y1,,yK)i

θkilogit1(αkxi),μkiβkxiσk22F(){θ y = 0 θ+(1θ)×CDFlog-normal(;μ,σ) y > 0ukF(yk),zkΦ1(uk)zN(0,R)×kf(yk)(α,β,σ,R)priors

ที่จัดทำดัชนีการสังเกต ,คือเมทริกซ์สหสัมพันธ์, และเป็นเวกเตอร์ของตัวทำนาย / ถดถอย / คุณลักษณะiNRx

นั่นคือแบบจำลองของฉันเป็นแบบจำลองการถดถอยซึ่งการแจกแจงแบบมีเงื่อนไขของการตอบสนองนั้นเป็นโคคูล่าแบบเกาส์ซึ่งมีระยะขอบล็อกปกติแบบไม่พอง ฉันเคยโพสต์เกี่ยวกับรุ่นนี้มาก่อน ปรากฎว่า Song, Li และ Yuan (2009, gated ) ได้พัฒนามันขึ้นมาและพวกเขาเรียกมันว่า vector GLM หรือ VGLM ต่อไปนี้เป็นข้อกำหนดของพวกเขาใกล้เคียงกับคำต่อคำที่ฉันได้รับ: ของฉัน

f(y;μ,φ,Γ)=c{G1(y1),,Gm(ym)|Γ}i=1mg(yi;μi,φi)c(u|Γ)=|Γ|1/2exp(12qT(ImΓ1)q)q=(q1,,qm)T,qi=Φ1(ui)
FKสอดคล้องกับ ,ของฉันสอดคล้องกับของพวกเขา, และของฉันสอดคล้องกับของพวกเขา; รายละเอียดอยู่ในหน้า 62 (หน้า 3 ของไฟล์ PDF) แต่อย่างอื่นก็เหมือนกับสิ่งที่ฉันเขียนที่นี่GmzqRΓ

ชิ้นส่วนที่ไม่เป็นศูนย์จะเกะกะตามข้อกำหนดของ Liu and Chan (2010, ungated )

ตอนนี้ฉันต้องการจำลองข้อมูลจากพารามิเตอร์ที่ประมาณไว้ แต่ฉันสับสนเล็กน้อยว่าจะทำอย่างไร แรกฉันคิดว่าฉันสามารถจำลองโดยตรง (ในรหัส R):y

for (i in 1:N) {
    for (k in 1:K) {
        Y_hat <- rbinom(1, 1, 1 - theta[i, k])
        if (Y_hat == 1)
            Y_hat <- rlnorm(1, mu[i, k], sigma[k])
    }
}

ซึ่งไม่ได้ใช้เลย ฉันต้องการลองใช้เมทริกซ์สหสัมพันธ์ที่ฉันประเมินR

ความคิดต่อไปของฉันคือการใช้ดึงของแล้วแปลงพวกเขากลับไปYสิ่งนี้ดูเหมือนว่าจะตรงกับคำตอบในการสร้างตัวอย่างจาก Copula ในการสุ่มตัวอย่างRและBivariate สำหรับการแจกแจงที่แสดงในทฤษฎีบทร่วมของ Sklar? . แต่นี่ห่าอะไรคือที่นี่? การสุ่มตัวอย่างการแปลงผกผันสำหรับการกระจายตัวของการแจกแจงปกติสองครั้งทำให้มันฟังดูเหมือนเป็นไปได้ แต่ฉันไม่รู้ว่าจะทำอย่างไรzyF1


@ ซีอานมันเป็นตัวเชื่อมเกาส์เซียนสำหรับการประมาณการพึ่งพาระหว่างองค์ประกอบy
shadowtalker

1
เธรดที่คุณอ้างอิงเกี่ยวกับการสุ่มตัวอย่างจากชุดผสมของ Normals จะนำไปใช้โดยตรงกับปัญหาของคุณโดยไม่มีการแก้ไขที่สำคัญ: แทนที่จะใช้ CDFs ของ Normals แทนการใช้ Inverse CDF ของคอมโพเนนต์ทั้งสองของคุณ CDF ผกผันของอะตอมที่เป็นฟังก์ชั่นอย่างต่อเนื่องเสมอเท่ากับ0y=00
whuber

@ เมื่อไรฉันก็สับสนว่าจะใช้ Inverse CDFs ของทั้งสององค์ประกอบได้อย่างไร: ฉันจะวาดอะไรฉันจะวาดอะไรจากแล้วฉันจะเสียบแต่ละสิ่งเข้าไปยังอะไร
shadowtalker

1
@ ซีอานอธิบายเป็นอย่างดีว่าในคำตอบของเขาสำหรับคำถามผสมแบบธรรมดา: คุณใช้ชุดรูปแบบที่หลากหลายเพื่อเลือกส่วนประกอบชุดผสมจากนั้นคุณจะดึงค่าจากองค์ประกอบนั้น (ในแบบที่คุณชอบ) ในกรณีของคุณมันเป็นเรื่องง่ายมากที่จะดึงค่าจากองค์ประกอบแรก: มันคือเสมอ! ในการดึงค่าจากองค์ประกอบที่สองให้ใช้ตัวสร้างตัวเลขแบบสุ่มที่คุณต้องการ ในแต่ละกรณีคุณมีจำนวน: ไม่มี "การเสียบ" เพื่อให้บรรลุ; วัตถุประสงค์ทั้งหมดของการสร้างหมายเลขสุ่มคือการได้รับหมายเลขนั้น 0
whuber

@ เมื่อไรคำตอบใหม่จะลบทิ้งสำหรับฉัน ขอบคุณทั้งคู่
shadowtalker

คำตอบ:


5

คำตอบของเวอร์ชั่นยาวที่มีพื้นหลัง:

คำตอบของรุ่นยาวนี้จะแก้ไขปัญหาอื่นและเนื่องจากเราดูเหมือนจะมีปัญหาในการกำหนดรูปแบบและปัญหาฉันเลือกที่จะใช้ถ้อยคำใหม่ที่นี่หวังว่าถูกต้อง

สำหรับเป้าหมายคือเพื่อจำลองเวกเตอร์เช่นนั้นโดยมีเงื่อนไขใน covariate , กับR) ดังนั้นหากต้องการจำลองข้อมูลจากโมเดลนี้เราสามารถดำเนินการดังนี้:1iIyi=(y1i,,yKi)xi

yki={0 with probability logit1(αkxi)log(σkzki+βkxi) with probability 1logit1(αkxi)
zi=(z1i,,zKi)NK(0,R)

สำหรับ ,1iI

  1. สร้างzi=(z1i,,zKi)NK(0,R)
  2. สร้างu1i,,uKiiidU(0,1)
  3. สืบทอดมาสำหรับyki=I{uki>logit1(αkxi)}log{σkzki+βkxi}1kK

ถ้าใครสนใจรุ่นหลังจากให้นี่เป็นปัญหาที่ยากกว่าแม้ว่าจะเป็นไปได้ด้วยการสุ่มตัวอย่างของกิ๊บส์หรือ ABC(α,β,μ,σ,R)yki


1
ฉันรู้ว่าฉันพลาดอะไรบางอย่าง "ทุกอย่างชัดเจนในการเข้าใจถึงปัญหาหลังเหตุการณ์" ความตั้งใจของฉัน: ฉันสนใจในค่าดังนั้นใช่ฉันสนใจวาดจากหลังร่วมกันของพารามิเตอร์ ฉันต้องการให้จำลองของเพื่อดูว่าแบบจำลองนั้นพอดีหรือไม่ F(yi|xi)y
shadowtalker

1
ปัญหาที่สองนั้นยากกว่านี้มากแค่ไหน? ฉันได้ประเมินโมเดลแล้วและมีการดึงหลัง เราสามารถแชทต่อได้หากคุณต้องการหลีกเลี่ยงความคิดเห็นที่ยุ่งเหยิงที่นี่
shadowtalker

1
โดยทั่วไปแล้วใช่ โชคดีที่ฉันมี Stan และ No-U-Turn Sampler ทำงานหนักสำหรับฉันที่นั่น
shadowtalker

7

คำตอบของเวอร์ชั่นย่อนอกบริบท:

"Inverting" cdf ที่ไม่สามารถย้อนกลับได้ในแง่คณิตศาสตร์ (เช่นการกระจายแบบผสมของคุณ) เป็นไปได้ตามที่อธิบายไว้ในตำราเรียน Monte Carlo ส่วนใหญ่ (เช่นเดียวกับของเราดูเล็มม่า 2.4) หากคุณกำหนดอินเวอร์สทั่วไป จากนั้น ซึ่งหมายความว่าเมื่อมีการกระโดดของที่ ,สำหรับUกล่าวอีกนัยหนึ่งถ้าคุณวาดเครื่องแบบและมันเล็กกว่าสร้างของคุณ

F(u)=inf{xR; F(x)u}
XF is equivalent to X=F(U) when UU(0,1).
F(y)θy=0F(u)=0uθU(0,1)θXคือ 0 มิฉะนั้นเมื่อคุณจะสร้างจากส่วนต่อเนื่องนั่นคือบันทึกปกติในกรณีของคุณ นี่หมายถึงการใช้รุ่นที่สองแบบสุ่มเป็นอิสระจากชุดรูปวาดครั้งแรกและการตั้งค่าเพื่อให้ได้รุ่นปกติx=0u>θvy=exp(μ+σΦ1(v))

นี่คือสิ่งที่รหัส R ของคุณเกือบ

Y_hat <- rbinom(1, 1, theta[i, k]) if (Y_hat == 1) Y_hat <- rlnorm(1, mu[i, k], sigma[k])

กำลังทำ. คุณสร้าง Bernoulli ด้วยความน่าจะเป็นและถ้ามันมีค่าเท่ากับคุณจะเปลี่ยนมันให้เป็นบันทึกปกติ เพราะมันจะมีค่าเท่ากับ 1 มีโอกาสคุณควรแทนที่จะทำให้มันกลายเป็นแบบจำลองของระบบปกติเมื่อมันจะมีค่าเท่ากับศูนย์แทนลงท้ายด้วยรหัส R แก้ไข:θki1θki

Y_hat <- rbinom(1, 1, theta[i, k])
    if (Y_hat == 0)
        Y_hat <- rlnorm(1, mu[i, k], sigma[k])

ดังนั้นเมื่อรวมกันแล้วขั้นตอนการจำลองของฉันคือ: 1) วาด , 2) คำนวณจากนั้น 3) คำนวณถ้าและอย่างอื่น แก้ไข? zuk=Φ(zk)yk=0ukθyk=Flog-normal1(uk)
shadowtalker

ไม่ถูกต้อง คุณวาดชุดแรกเพื่อตัดสินใจระหว่างถึง log-normal จากนั้นชุดที่สองในกรณีที่คุณได้ตัดสินใจสำหรับ log-normal ดูคำตอบของฉันในเวอร์ชันที่แก้ไข 0
ซีอาน

แต่นั่นจะไม่สนใจองค์ประกอบดังนั้นคำถามของฉัน ฉันทำการแก้ไขที่ชัดเจนและแก้ไขข้อผิดพลาดในรหัสเทียมของฉันด้วย z
shadowtalker

คำตอบของฉันสำหรับรุ่นสั้นและรหัส R ที่คุณให้ไว้ ฉันหวังว่ามันจะช่วยสำหรับรุ่นยาว แต่สูตรของคุณสำหรับโมเดลร่วมยังคงไม่ถูกต้อง คุณควรกำหนดโมเดลของโดยไม่ใช้เครื่องแบบ ...y
ซีอาน

แบบจำลองนั้นไม่ถูกต้องอย่างไร ฉันเพิ่งเสียบของฉันลงในสูตรที่ได้จากกระดาษที่ฉันอ้างถึง (ตรงกับในรูปแบบของพวกเขา) มันไม่ถูกต้องเหรอ? F1,,FKG1,,Gm
shadowtalker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.