Giải phương trình tích phân đơn giản bằng cách lấy mẫu ngẫu nhiên


8

Đặt là hàm không âm. Tôi đang quan tâm đến việc tìm kiếm mà Thông báo trước : tất cả những gì tôi có thể làm là lấy mẫu tại các điểm trong . Tôi có thể, tuy nhiên, lựa chọn các địa điểm nơi tôi mẫu ngẫu nhiên, nếu tôi để mong muốn. z [ 0 , 1 ] z 0 f ( x )fz[0,1]f [ 0 , 1 ] f

0zf(x)dx=1201f(x)dx
f[0,1]f

Câu hỏi:

  1. Có thể có được ước tính không thiên vị của sau khi có nhiều mẫu không? Nếu vậy, phương sai sở hữu nhỏ nhất của ước tính như vậy sau mẫu là gì?kzk
  2. Nếu không, các thủ tục có sẵn để ước tính và thời gian hội tụ liên quan của chúng là gì.z

Như Douglas Zare đã chỉ ra trong các bình luận, điều này có thể rất khó thực hiện nếu chức năng gần bằng 0 hoặc rất lớn. May mắn thay, chức năng tôi cần sử dụng cho chức năng này được giới hạn từ bên trên và bên dưới, vì vậy, giả sử rằng . Hơn nữa, chúng ta cũng có thể giả sử rằng là Lipschitz hoặc thậm chí khác biệt nếu điều đó có ích.f1f(x)2f


1
Nếu bạn không có thêm thông tin, bạn có thể có hành vi rất xấu. Hãy tưởng tượng rằng là trong khoảng từ đến vàThay đổi nhẹ về sẽ làm cho trung vị nhảy từ dưới lên trên . 0 1 / 3 2 / 3 1 / 3 0 f ( x ) d x 1 / 2. f 1 / 3 2 / 3f01/32/301/3f(x) dx1/2.f1/32/3
Douglas Zare

@robinson Bạn có thể cung cấp thêm thông tin về ? Hoặc bạn quan tâm đến việc giải quyết vấn đề cho bất kỳ mật độ ? fff

@DoumundZare - Cảm ơn bạn đã bình luận; xem chỉnh sửa của tôi.
robinson

@Procrastinator - Tôi đã chỉnh sửa câu hỏi với một ít thông tin hơn.
robinson

3
(+1) Để cập nhật. Chia bên trái sang bên phải, người ta có thể thấy rằng điều này làm giảm việc tìm trung vị của phân phối xác suất không xác định được hỗ trợ trên . [0,1]
Đức hồng y

Câu trả lời:


6

Như đức hồng y đã chỉ ra trong bình luận của ông, câu hỏi của bạn có thể được trình bày lại như sau.

Theo đại số đơn giản, phương trình tích phân có thể được viết lại thành trong đó là hàm mật độ xác suất được xác định là g g ( x ) = f ( x )

0zg(x)dx=12,
g
g(x)=f(x)01f(t)dt.

Đặt là biến ngẫu nhiên có mật độ . Theo định nghĩa, , do đó phương trình tích phân của bạn tương đương với có nghĩa là vấn đề của bạn có thể được nêu là:XgP{Xz}=0zg(x)dx

P{Xz}=12,

"Đặt là biến ngẫu nhiên có mật độ . Tìm trung vị của "XgX

Để ước tính trung vị của , sử dụng bất kỳ phương pháp mô phỏng nào để vẽ mẫu các giá trị của và lấy ước tính trung bình mẫu của bạn.XX

Một khả năng là sử dụng thuật toán Metropolis-Hastings để lấy mẫu các điểm có phân phối mong muốn. Do biểu thức của xác suất chấp nhận trong thuật toán Metropolis-Hastings, chúng ta không cần biết giá trị của hằng số chuẩn hóa của mật độ . Vì vậy, chúng tôi không phải thực hiện việc tích hợp này.01f(t)dtg

Mã dưới đây sử dụng một hình thức đặc biệt đơn giản của thuật toán Metropolis-Hastings được gọi là Bộ lấy mẫu độc lập, sử dụng một đề xuất có phân phối không phụ thuộc vào giá trị hiện tại của chuỗi. Tôi đã sử dụng các đề xuất đồng phục độc lập. Để so sánh, tập lệnh đưa ra mức tối thiểu Monte Carlo và kết quả được tìm thấy với tối ưu hóa tiêu chuẩn. Các điểm mẫu được lưu trữ trong vectơ chain, nhưng chúng tôi loại bỏ điểm đầu tiên tạo thành khoảng thời gian gọi là "burn in" của mô phỏng.10000

BURN_IN = 10000
DRAWS   = 100000

f = function(x) exp(sin(x))

chain = numeric(BURN_IN + DRAWS)

x = 1/2

for (i in 1:(BURN_IN + DRAWS)) {
    y = runif(1) # proposal
    if (runif(1) < min(1, f(y)/f(x))) x = y
    chain[i] = x
}

x_min = median(chain[BURN_IN : (BURN_IN + DRAWS)])

cat("Metropolis minimum found at", x_min, "\n\n")

# MONTE CARLO ENDS HERE. The integrations bellow are just to check the results.

A = integrate(f, 0, 1)$value

F = function(x) (abs(integrate(f, 0, x)$value - A/2))

cat("Optimize minimum found at", optimize(F, c(0, 1))$minimum, "\n")

Đây là một số kết quả:

Metropolis minimum found at 0.6005409 
Optimize minimum found at 0.601365

Mã này có nghĩa là điểm khởi đầu cho những gì bạn thực sự cần. Do đó, sử dụng cẩn thận.


Cảm ơn câu trả lời của bạn. Tôi không biết R, vì vậy tôi không chắc làm thế nào để phân tích những gì bạn đang làm. Bạn có thể nói bằng từ / công thức thủ tục của bạn? Cảm ơn bạn. Cụ thể, tôi tự hỏi liệu bạn có tôn trọng ràng buộc rằng điều duy nhất bạn có thể làm là đánh giá f - ví dụ, bạn không được phép tích hợp , (mặc dù bạn chắc chắn có thể hình thành xấp xỉ Monte-Carlo cho tích phân dựa trên đánh giá ngẫu nhiên). f
robinson

Có, tôi chỉ đang đánh giá để có được ước tính Monte Carlo. f
Zen

Mã chỉ là một ví dụ. Cú pháp R tương tự như các ngôn ngữ khác. Bất kỳ tuyên bố cụ thể mà bạn không hiểu? Kiểm tra trang Wikipedia về thuật toán Metropolis-Hastings. Tất nhiên, ý tưởng chung là quan trọng hơn. Bạn có thể lấy mẫu từ bằng bất kỳ phương pháp nào bạn có sẵn. f/f
Zen

Bạn đã tham gia một khóa học giới thiệu về các quy trình ngẫu nhiên, bao gồm các chuỗi Markov thời gian rời rạc?
Zen

1
BTW: Những người trì hoãn thế giới, hãy đoàn kết lại! Nhưng không phải hôm nay ...
Zen

3

Chất lượng của xấp xỉ tích phân, ít nhất là trong trường hợp đơn giản là 1D, được đưa ra bởi (Định lý 2.10 trong Niederreiter (1992) ): trong đó là mô đun liên tục của hàm (liên quan đến tổng biến thiên và có thể dễ dàng biểu thị cho các hàm Lipshitz) và là sự khác biệt (cực kỳ) hoặc chênh lệch tối đa giữa tỷ lệ số lần truy cập theo chuỗi

|1Nn=1Nf(xn)01f(u)du|ω(f;DN(x1,,xN))
ω(f;t)=sup{|f(u)f(v)|:u,v[0,1],|uv|t,t>0}
DN(x1,,xN)=supu|1Nn1{xn[0,u)}u|=12N+maxn|xn2n12N|
x1,,xNcủa một khoảng thời gian bán mở và số đo Lebesgue của nó . Biểu thức đầu tiên là định nghĩa và biểu thức thứ hai là thuộc tính của các chuỗi 1D trong (Định lý 2.6 trong cùng một cuốn sách).[0,u)u[0,1]

Vì vậy, rõ ràng để giảm thiểu sai số trong phép tính gần đúng tích phân, ít nhất là trong RHS của phương trình của bạn, bạn cần lấy . Xoay các đánh giá ngẫu nhiên, chúng có nguy cơ có một khoảng cách ngẫu nhiên tại một tính năng quan trọng của chức năng.xn=(2n1)/2N

Một bất lợi lớn cho phương pháp này là bạn phải cam kết giá trị để tạo ra chuỗi phân phối đồng đều này. Nếu bạn không hài lòng với chất lượng gần đúng mà nó cung cấp, tất cả những gì bạn có thể làm là nhân đôi giá trị của và đạt tất cả các điểm giữa của các khoảng được tạo trước đó.NN

Nếu bạn muốn có một giải pháp trong đó bạn có thể tăng số điểm dần dần, bạn có thể tiếp tục đọc cuốn sách đó và tìm hiểu về trình tự van der Corput và nghịch đảo triệt để. Xem trình tự sai lệch thấp trên Wikipedia, nó cung cấp tất cả các chi tiết.

Cập nhật: để giải quyết cho , xác định tổng một phần Tìm sao cho và nội suy để tìm Nội suy này giả định rằng là liên tục. Nếu thêm có thể phân biệt hai lần, thì phép tính gần đúng này bằng cách tích hợp mở rộng bậc hai để kết hợp và và giải phương trình bậc ba cho .z

Sk=1Nn=1kf(2n12N).
kzN=2k-1
Sk12SN<Sk+1,
f()f()Sk-1Sk+2z
zN=2k12N+SN/2SkN(Sk+1Sk).
f()f()Sk1Sk+2z

1
Tôi thích ý chính của điều này. Tôi nghĩ sẽ hữu ích khi làm rõ hơn chiến lược mà bạn đề xuất để giải quyết câu hỏi của OP. Hiện tại, câu trả lời đọc (với tôi) chủ yếu như thể nó đang giải quyết cách tính RHS của phương trình trong câu hỏi.
hồng y

1
(+1) Cập nhật đẹp. có thể được xem đơn giản là một xấp xỉ Riemann-sum với tích phân trong đó chúng ta sử dụng giá trị của tại điểm giữa của mỗi khoảng được xác định bởi phân vùng, thay vì điểm cuối trái hoặc phải. :-) fSNf
hồng y

Đúng; thật thú vị mặc dù tổng Riemann này có sự biện minh tối ưu này.
StasK
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.