Lấy mẫu CDF nghịch đảo cho phân phối hỗn hợp


9

Phiên bản ngắn ngoài ngữ cảnh

Đặt là biến ngẫu nhiên với CDF F ( ) { θ  y = 0  θ + ( 1 - θ ) × CDF log-bình thường ( ; μ , σ )  y> 0y

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

Giả sử tôi muốn mô phỏng các bản vẽ của bằng phương pháp CDF nghịch đảo. Điều đó có thể không? Hàm này không chính xác có nghịch đảo. Sau đó, một lần nữa lại có lấy mẫu biến đổi nghịch đảo để phân phối hỗn hợp của hai phân phối bình thường cho thấy rằng có một cách đã biết để áp dụng lấy mẫu biến đổi nghịch đảo ở đây.y

Tôi biết phương pháp hai bước, nhưng tôi không biết làm thế nào để áp dụng nó vào tình huống của mình (xem bên dưới).


Phiên bản dài với nền

Tôi đã trang bị mô hình sau cho phản hồi có giá trị véc tơ, , sử dụng MCMC (cụ thể là Stan):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

Trong đó lập chỉ mục quan sát, là ma trận tương quan và là vectơ của các yếu tố dự đoán / hồi quy / tính năng.N R xiNRx

Đó là, mô hình của tôi là một mô hình hồi quy trong đó phân phối có điều kiện của phản hồi được giả sử là một copula Gaussian với các biên log-log thông thường được bơm bằng không. Tôi đã đăng về mô hình này trước đây; Hóa ra Song, Li và Yuan (2009, gated ) đã phát triển nó và họ gọi nó là GLM vector, hay VGLM. Sau đây là thông số kỹ thuật của chúng gần với nguyên văn như tôi có thể nhận được: MyF K G m z q R Γ

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)
FKtương ứng với của họ , của tôi tương ứng với và của tôi tương ứng với của họ ; các chi tiết ở trang 62 (trang 3 của tệp PDF) nhưng về mặt khác thì giống hệt với những gì tôi đã viết ở đây.GmzqRΓ

Phần không phồng lên gần như theo đặc điểm kỹ thuật của Liu và Chan (2010, chưa được chỉnh sửa ).

Bây giờ tôi muốn mô phỏng dữ liệu từ các tham số ước tính, nhưng tôi hơi bối rối về cách thực hiện. Đầu tiên tôi nghĩ rằng tôi chỉ có thể mô phỏng trực tiếp (theo mã 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])
    }
}

mà không sử dụng ở tất cả. Tôi muốn thử thực sự sử dụng ma trận tương quan mà tôi ước tính.R

Ý tưởng tiếp theo của tôi là lấy số và sau đó chuyển chúng trở lại . Điều này dường như cũng trùng khớp với các câu trả lời trong Tạo mẫu từ Copula trong lấy mẫu RBivariate để phân phối được thể hiện trong định lý copula của Sklar? . Nhưng cái quái gì là ở đây? Lấy mẫu biến đổi nghịch đảo để phân phối hỗn hợp của hai phân phối bình thường làm cho nó có vẻ như điều này là có thể, nhưng tôi không biết làm thế nào để làm điều đó.y F - 1zyF1


@ Xi'an đó là một copula Gaussian, để ước tính sự phụ thuộc giữa các thành phần . y
Shadowtalker

1
Chủ đề bạn tham khảo về lấy mẫu từ hỗn hợp Normals áp dụng trực tiếp cho vấn đề của bạn mà không cần sửa đổi thiết yếu: thay vì sử dụng CDF nghịch đảo của Normals, hãy sử dụng CDF nghịch đảo của hai thành phần. CDF nghịch đảo của nguyên tử tại là hàm hằng, luôn bằng . 0y=00
whuber

@whuber Tôi chỉ bối rối về cách sử dụng các CDF nghịch đảo của hai thành phần: tôi vẽ gì, tôi rút nó từ đâu, và sau đó tôi cắm mỗi thứ vào cái gì?
Shadowtalker

1
@ Xi'an độc đáo giải thích rằng trong câu trả lời của mình cho câu hỏi hỗn hợp thông thường: bạn sử dụng một phương sai đồng nhất để chọn thành phần hỗn hợp và sau đó bạn rút ra một giá trị từ thành phần đó (theo bất kỳ cách nào bạn muốn). Trong trường hợp của bạn, thật dễ dàng để rút ra một giá trị từ thành phần đầu tiên: luôn luôn là ! Để rút ra một giá trị từ thành phần thứ hai, hãy sử dụng bất kỳ trình tạo số ngẫu nhiên hợp lý nào bạn muốn. Trong mỗi trường hợp, bạn kết thúc với một số: không có "cắm" để thực hiện; toàn bộ mục tiêu của việc tạo số ngẫu nhiên là để có được số đó. 0
whuber

@whuber câu trả lời mới xóa nó cho tôi. Cảm ơn cả hai người.
Shadowtalker

Câu trả lời:


5

Câu trả lời cho phiên bản dài với nền:

Câu trả lời này cho phiên bản dài phần nào giải quyết một vấn đề khác và, vì dường như chúng ta gặp khó khăn khi xây dựng mô hình và vấn đề, tôi chọn cách viết lại nó ở đây, hy vọng chính xác.

Đối với , mục tiêu là mô phỏng các vectơ sao cho có điều kiện trên một đồng biến , với . Do đó, nếu muốn mô phỏng dữ liệu từ mô hình này, người ta có thể tiến hành như sau:1iIyi=(y1i,,yKi)xi

ykTôi= ={0 với xác suất logit-1(αkxTôi)đăng nhập(σkzkTôi+βkxTôi) với xác suất 1-logit-1(αkxTôi)
zTôi= =(z1Tôi,Giáo dục,zKTôi)~NK(0,R)

Trong ,1TôiTôi

  1. TạozTôi= =(z1Tôi,Giáo dục,zKTôi)~NK(0,R)
  2. Tạobạn1Tôi,Giáo dục,bạnKTôi~iidBạn(0,1)
  3. Lấy choykTôi= =Tôi{bạnkTôi>logit-1(αkxTôi)}đăng nhập{σkzkTôi+βkxTôi}1kK

Nếu ai quan tâm đến thế hệ từ sau của cho các , đây là một vấn đề khó khăn hơn, mặc dù khả thi bởi Gibbs lấy mẫu hoặc ABC.(α,β,μ,σ,R)ykTôi


1
Tôi biết tôi đang thiếu một cái gì đó. "Mọi thứ đều rõ ràng trong nhận thức muộn màng." Mục đích của tôi: Tôi quan tâm đến giá trị của , vì vậy, tôi thích vẽ từ phần sau của các tham số. Tôi muốn mô phỏng của để xem mô hình có phù hợp không. yF(yTôi|xTôi)y
Shadowtalker

1
Làm thế nào là vấn đề thứ hai khó khăn hơn nhiều? Tôi đã ước tính mô hình và tôi có các trận hòa sau. Chúng tôi có thể tiếp tục trò chuyện nếu bạn muốn, để tránh làm lộn xộn các bình luận ở đây.
Shadowtalker

1
Ồ, nói chung, vâng. May mắn thay, tôi có Stan và No-U-Turn Sampler đang làm việc chăm chỉ cho tôi ở đó.
Shadowtalker

7

Câu trả lời cho phiên bản ngắn ngoài ngữ cảnh:

X F  tương đương với  X = F - ( U )  khi  U U ( 0 , 1 )

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)θ, thế hệ của bạn là . Khác, khi , cuối cùng bạn tạo ra từ phần liên tục, cụ thể là log-normal trong trường hợp của bạn. Điều này có nghĩa là sử dụng thế hệ ngẫu nhiên đồng phục thứ hai, , độc lập với lần rút đồng phục thứ nhất và đặt để có được thế hệ log-log thông thường.Xx=0u>θvy=exp(μ+σΦ1(v))

Đây gần như là mã R của bạn

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

đang làm Bạn tạo Bernoulli với xác suất và nếu nó bằng , bạn biến nó thành log-normal. Vì nó bằng 1 với xác suất thay vào đó, bạn nên biến nó thành một mô phỏng log-normal khi nó bằng 0 thay vào đó, kết thúc bằng mã R đã sửa đổi:θki1θkTôi

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

Vì vậy, tất cả cùng nhau, quy trình mô phỏng của tôi sẽ là: 1) vẽ , 2) tính , sau đó 3) tính nếu và nếu không. Chính xác? u k = Φ ( z k ) y k = 0 u kq y k = F - 1 log-bình thường ( u k )zbạnk= =Φ(zk)yk= =0bạnkθyk= =Flog-bình thường-1(bạnk)
Shadowtalker

Không, không chính xác. Bạn vẽ một bộ đồng phục đầu tiên để quyết định từ đến log-normal, sau đó là một bộ đồng phục thứ hai trong trường hợp bạn đã quyết định cho một log-normal. Xem phiên bản chỉnh sửa của câu trả lời của tôi. 0
Tây An

Nhưng điều đó bỏ qua thành phần ; do đó câu hỏi của tôi. Tôi đã thực hiện một chỉnh sửa làm rõ, và cũng giải quyết lỗi trong mã giả của tôi. z
Shadowtalker

Câu trả lời của tôi là dành cho phiên bản ngắn và mã R bạn cung cấp. Tôi hy vọng nó sẽ giúp cho phiên bản dài, nhưng công thức của bạn cho mô hình chung vẫn không chính xác. Bạn nên xác định mô hình trên mà không cần sử dụng đồng phục ...y
Xi'an

Làm thế nào là mô hình không chính xác? Tôi vừa cắm vào công thức được cung cấp bởi bài báo mà tôi đã trích dẫn (tương ứng với trong ký hiệu của chúng). Điều đó có hợp lệ không? G 1 , Vượt , G mF1,Giáo dục,FKG1,Giáo dục,Gm
Shadowtalker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.