혼합 분포에 대한 역 CDF 샘플링


9

상황에 맞지 않는 짧은 버전

허락하다 y CDF와 함께 임의 변수

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

내가 무승부를 시뮬레이션하고 싶다고 가정 해 봅시다. y역 CDF 방법을 사용합니다. 가능합니까? 이 함수는 정확히 역수를 갖지 않습니다. 그런 다음 다시 두 개의 정규 분포의 혼합 분포에 대한 역변환 샘플링이 있습니다. 여기에서 역변환 샘플링을 적용하는 알려진 방법이 있음을 나타냅니다.

2 단계 방법을 알고 있지만 내 상황에 적용하는 방법을 모르겠습니다 (아래 참조).


배경이있는 긴 버전

벡터 값 응답에 다음 모델을 적용했습니다. yi=(y1,,yK)i, MCMC (특히 Stan)를 사용하는 경우 :

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

어디 i 인덱스 N 관찰, R 상관 행렬이고 x 예측 변수 / 회귀 변수 / 기능으로 구성된 벡터입니다.

즉, 내 모델은 반응의 조건부 분포가 0으로 팽창 된 로그 정규 마진을 갖는 가우시안 copula로 가정되는 회귀 모델입니다. 이전에이 모델에 대해 게시했습니다. Song, Li 및 Yuan (2009, gated )이이를 개발했으며이를 벡터 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 그들의에 해당 Gm, 나의 z 그들의에 해당 q, 그리고 내 R 그들의에 해당 Γ; 자세한 내용은 62 페이지 (PDF 파일의 3 페이지)에 있지만 여기에 쓴 것과 동일합니다.

제로 팽창 된 부분은 대략 Liu와 Chan (2010, ungated ) 의 사양을 따릅니다 .

이제 추정 된 매개 변수의 데이터를 시뮬레이션하고 싶지만 어떻게 처리 해야할지 조금 혼란 스럽습니다. 먼저 시뮬레이션 할 수 있다고 생각했습니다.y 직접 (R 코드로) :

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조금도. 실제로 추정 한 상관 관계 매트릭스를 사용하려고합니다.

내 다음 아이디어는 z 그런 다음 다시 y. 이것은 또한 Sklar의 copula 정리로 표현 된 분포에 대한 RBivariate 샘플링 에서 Copula에서 샘플을 생성 하는 답변과 일치하는 것 같습니다 . . 하지만 도대체 뭐야F1여기? 두 정규 분포의 혼합 분포에 대한 역변환 샘플링 은 이것이 가능하다고 들리지만 어떻게해야할지 모르겠습니다.


@ Xi'an 그것은 가우시안 copula입니다. y구성 요소.
shadowtalker

1
법선 혼합에서 샘플링에 대해 참조하는 스레드는 필수 수정없이 문제에 직접 적용됩니다. 법선의 역 CDF를 사용하는 대신 두 성분의 역 CDF를 사용하십시오. 원자의 역 CDFy=0 상수 함수이며 항상 0.
whuber

@ whuber 나는 두 구성 요소의 역 CDF를 사용하는 방법 에 대해 혼란스러워 합니다. 무엇을 그리고, 무엇을 그리며, 각각에 무엇을 연결합니까?
shadowtalker

1
@ Xi'an은 일반적인 혼합 질문에 대한 대답에서 균일 한 변량을 사용하여 혼합 구성 요소를 선택한 다음 해당 구성 요소에서 원하는 방식으로 값을 그립니다. 귀하의 경우 첫 번째 구성 요소에서 값을 얻는 것이 매우 쉽습니다. 항상 항상0! 두 번째 성분에서 값을 그리려면 원하는 로그 정규 난수 생성기를 사용하십시오. 각각의 경우에 숫자를 입력해야합니다. 달성 할 "플러그인"이 없습니다. 난수 생성의 전체 목표는 해당 숫자를 얻는 것입니다.
whuber

@ whuber 새로운 대답은 나를 위해 그것을 정리했습니다. 둘 다 감사합니다.
shadowtalker

답변:


5

배경이있는 긴 버전에 대한 답변 :

긴 버전에 대한이 답변은 다른 문제를 다소 해결하며 모델과 문제를 공식화하는 데 어려움이 있기 때문에 여기에서 올바르게 표현하기를 선택합니다.

에 대한 1iI목표는 벡터를 시뮬레이션하는 것입니다 yi=(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

후자의 세대에 관심이 있다면 (α,β,μ,σ,R) 주어진 ykiGibbs 샘플링 또는 ABC로 실행하기는 쉽지만 더 어려운 문제입니다.


1
뭔가 빠진 줄 알았습니다. "모든 것이 후시로 명백하다." 내 의도 : 나는 가치에 관심이있다F(yi|xi)그래서, 나는 매개 변수의 공동 후부에서 그리는 데 관심이 있습니다. 나는 시뮬레이션을 원한다y모델이 맞는지 확인합니다.
shadowtalker

1
두 번째 문제는 어떻게 더 어려워 집니까? 나는 이미 모델을 추정했으며 후방 그리기가 있습니다. 우리는 당신이 원한다면 여기에서 의견을 어지럽히 지 않도록 계속 대화 할 수 있습니다.
shadowtalker

1
아, 일반적 으로요 다행히 Stan과 No-U-Turn Sampler가 저를 위해 열심히 일하고 있습니다.
shadowtalker

7

문맥 외 짧은 버전에 대한 답변 :

대부분의 Monte Carlo 교과서에 설명 된 것처럼 수학적 의미에서 뒤집을 수없는 CDF (혼합 분포와 같은)를 "반전"하는 것이 가능합니다. ( 우리 와 마찬가지로 Lemma 2.4를 참조하십시오.) 일반화 된 역을 정의하는 경우

F(u)=inf{xR; F(x)u}
그때
XF is equivalent to X=F(U) when UU(0,1).
즉, F(y) 점프 θ ...에서 y=0, F(u)=0 ...에 대한 uθ. 다시 말해 유니폼을 입으면U(0,1) 그리고 그것은보다 작게 끝납니다 θ의 세대 X 이다 x=0. 그렇지 않으면u>θ, 연속 부분, 즉 귀하의 경우 로그 정규에서 생성됩니다. 이는 두 번째 균일 한 무작위 생성을 사용한다는 것을 의미합니다.v첫 번째 균일 한 드로우 및 설정과 무관 y=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를 생성합니다θki 그리고 그것이 같다면 1,이를 로그 노멀로 바꿉니다. 확률이 1과 같기 때문에θki대신 0 이되면 수정 된 R 코드로 끝나는 로그 정규 시뮬레이션으로 바꿔야 합니다.

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

모두 함께 모의 시뮬레이션 절차는 다음과 같습니다. 1) 그리기 z, 2) 계산 uk=Φ(zk)그런 다음 3) 계산 yk=0 만약 ukθyk=Flog-normal1(uk)그렇지 않으면. 옳은?
shadowtalker

아뇨. 첫 번째 유니폼을 그려서0log-normal, log-normal을 선택한 경우 두 번째 유니폼. 내 답변의 수정 된 버전을 참조하십시오.
시안

그러나 그것은 무시 z구성 요소; 따라서 내 질문. 나는 명확한 편집을하고 의사 코드의 실수를 해결했습니다.
shadowtalker

내 대답은 짧은 버전과 제공 한 R 코드에 대한 것입니다. 긴 버전에 도움이되기를 바랍니다. 그러나 관절 모델의 공식은 여전히 ​​잘못된 것입니다. 에 모델을 정의해야합니다y의 유니폼을 사용하지 않고 ...
Xi'an

그 모델은 어떻게 잘못 되었나요? 방금 연결했습니다F1,,FK 내가 인용 한 논문에서 제공 한 공식에 G1,,Gm그들의 표기법으로). 유효하지 않습니까?
shadowtalker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.