Chẩn đoán MCMC Geweke


14

Tôi đang chạy một bộ lấy mẫu của Metropolis (C ++) và muốn sử dụng các mẫu trước đó để ước tính tốc độ hội tụ.

Một chẩn đoán dễ thực hiện mà tôi tìm thấy là chẩn đoán Geweke , tính toán sự khác biệt giữa hai phương tiện mẫu được chia cho lỗi tiêu chuẩn ước tính của nó. Sai số chuẩn được ước tính từ mật độ phổ ở mức 0.

Zn=θ¯Aθ¯B1nASθA^(0)+1nBSθB^(0),

Trong đó , B là hai cửa sổ trong chuỗi Markov. Tôi đã làm một số nghiên cứu trên là gì ^ S Một θ ( 0 )^ S B θ ( 0 ) nhưng nhận được vào một mớ hỗn độn của tài liệu về mật độ phổ năng lượng và sức mạnh mật độ quang phổ nhưng tôi không phải là một chuyên gia về các chủ đề này; Tôi chỉ cần một câu trả lời nhanh: những đại lượng này có giống như phương sai mẫu không? Nếu không, công thức tính toán chúng là gì?ABSθA^(0)SθB^(0)

Một nghi ngờ khác về chẩn đoán Geweke này là làm thế nào để chọn ? Tài liệu trên cho biết rằng nó là một số chức năng θ ( X ) và nên bao hàm một sự tồn tại của một mật độ quang phổ ^ S Một θ ( 0 )θθ(X)SθA^(0) , nhưng để thuận tiện, tôi đoán cách đơn giản nhất là sử dụng chức năng nhận dạng (tự sử dụng mẫu). Điều này có đúng không?

Gói R coda có một mô tả nhưng nó không chỉ định cách tính các giá trị S


bạn có thể nhìn vào can đảm của codachức năng geweke.diagđể xem nó làm gì ...
Ben Bolker

Câu trả lời:


4

Bạn có thể xem qua mã cho geweke.diaghàm trong codagói để xem phương sai được tính như thế nào, thông qua lệnh gọi spectrum.ar0hàm.


Dưới đây là một động lực ngắn của việc tính toán mật độ phổ của quá trình AR ( ) ở mức 0.p

Các mật độ quang phổ của một AR ( trình) ở tần số λpλ được cho bởi biểu thức: nơiαjlà các thông số tự hồi quy.

f(λ)=σ2(1j=1pαjexp(2πιjλ))2
αj

p0

f(0)=σ2(1j=1pαj)2

Tính toán sau đó sẽ trông giống như thế này (thay thế các công cụ ước tính thông thường cho các tham số):

tsAR2 = arima.sim(list(ar = c(0.01, 0.03)), n = 1000)  # simulate an AR(2) process
ar2 = ar(tsAR2, aic = TRUE)  # estimate it with AIC complexity selection

# manual estimate of spectral density at zero
sdMan = ar2$var.pred/(1-sum(ar2$ar))^2

# coda computation of spectral density at zer0
sdCoda = coda::spectrum0.ar(tsAr2)$spec

# assert equality
all.equal(sdCoda, sdMan)

0

Kiểm tra trang wikipedia . Bạn sẽ thấySxx(ω), đó là mật độ quang phổ. Trong trường hợp của bạn, bạn nên sử dụngSxx(0).

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.