Tạo mẫu ngẫu nhiên từ Cdf nghịch đảo mà không có dạng đóng


7

Tôi đang làm việc trên một bản phân phối cụ thể có cdf nghịch đảo không tồn tại ở dạng đóng. Cdf của phân phối được đưa ra bởi

F(x;d,m,p,α,β)=1(1+xm)dexp(βxα)1p(1+xm)dexp(βxα)

cho tích cực m,d,α,β0<p<1.

Vấn đề của tôi là tôi mới sử dụng Rgói và tôi cần tạo mẫu ngẫu nhiên từ phân phối bằng cách sử dụng R.


3
NB: Công thức này cho F không phải lúc nào cũng đưa ra một cdf: bạn phải giới hạn nó trong miền x0cho nó được xác định và hợp lệ.
whuber

Xin lỗi, tôi quên đặt nó. Đó là cdf với x≥0. Cảm ơn bạn @Whuber.
Soma

Đảo ngược F bạn sẽ phải giải quyết y=exp(βxα)/(1+xm)số vì đó là một phương trình siêu việt. Có lẽ một số kế hoạch chấp nhận / từ chối thông minh là theo thứ tự ở đây?
StijnDeVuyst

Bạn đã kiểm tra chủ đề này?
user603

Việc giải phương trình trực tiếp có thể có vấn đề và không chắc chắn đối với các lượng tử cao nhất q. Thay vào đó, giải quyết
log(1q)=log(1F(x;d,m,p,1,1))=log(1pp+ez(zm+1)d)
cho z0 và lấy x=(z/β)1/α. Một số lượng nhỏ các phép lặp Newton-Raphson sẽ giúp bạn đạt được kết quả chính xác cao. (Điều này rất đơn giản, bạn thậm chí có thể thực hiện nó trong một bảng tính.)
whuber

Câu trả lời:


3

Dưới đây là hai cách để tính xấp xỉ bằng số với nghịch đảo của cdf, giả sử rằng bạn đã đưa ra các lựa chọn cho m, d, α, và p. Cả hai phương pháp đều yêu cầu bạn có thể tính F (x) cho một x đã cho, vì vậy ...

m = 1
d = 2
a = 1
b = 2
p = 0.5
F = function(x) (1 - ((1+x^m)^-d) * exp(-b*x^a))  / 
    (1 - (p*(1+x^m)^-d) * exp(-b*x^a)) 

Phương pháp 1

Để tính InvF (a), giải phương trình F (x) = a

InvF1 = function(a) uniroot(function(x) F(x) - a, c(0,10))$root
InvF1(0.5)
[1] 0.1038906
F(InvF1(0.5))
[1] 0.4999983

Cách 2

Đánh giá y = F (x) cho một phạm vi x và sau đó khớp đường cong với x là hàm của y.

x = c(seq(0,3, 0.001), seq(3.1,10,0.1))
y = F(x)
InvF2 = approxfun(y, x)

InvF2(0.5)
[1] 0.1038916
F(InvF2(0.5))
[1] 0.5000011

Bạn có thể tăng độ chính xác cho InvF2bằng cách sử dụng lấy mẫu dày hơn x, đặc biệt đối với các giá trị nhỏ của x.

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.