Làm cách nào để có được dự đoán cho một biến cụ thể trong WinBUGS?


10

Tôi là người dùng mới của WinBUGS và có một câu hỏi để được giúp đỡ. Sau khi chạy đoạn mã sau, tôi nhận được các tham số beta0thông qua beta4(số liệu thống kê, mật độ), nhưng tôi không biết làm thế nào để có được dự đoán về giá trị cuối cùng hmà tôi đặt NAđể mô hình hóa trong mã.

Có ai có thể cho tôi một gợi ý? Bất kỳ lời khuyên sẽ được đánh giá rất cao.


model {
for(i in 1: N) {
CF01[i] ~ dnorm(0, 20)
CF02[i]  ~ dnorm(0, 1)
h[i] ~ dpois (lambda [i])
log(lambda [i]) <- beta0 + beta1*CF03[i] + beta2*CF02[i] + beta3*CF01[i] + beta4*IND[i]
}
beta0 ~ dnorm(0.0, 1.0E-6)
beta1 ~ dnorm(0.0, 1.0E-6)
beta2 ~ dnorm(0.0, 1.0E-6)
beta3 ~ dnorm(0.0, 1.0E-6)
beta4  <- log(p)
p ~ dunif(lower, upper)
}

INITS
list(beta0 = 0, beta1 = 0, beta2 = 0, beta3 = 0, p = 0.9)

DATA(LIST)
list(N = 154, lower = 0.80, upper = 0.95,

h = c(1, 4, 1, 2, 1, 2, 1, 1, 1, 3, 3, 0, 0, 0, 2, 0, 1, 0, 4, 2,
3, 0, 2, 1, 1, 2, 2, 2, 3, 4, 2, 3, 1, 0, 1, 3, 3, 3, 1, 0, 1,
0, 5, 2, 1, 2, 1, 3, 3, 1, 1, 0, 2, 2, 0, 3, 0, 0, 3, 2, 2, 2,
1, 0, 3, 3, 1, 1, 1, 2, 1, 0, 1, 2, 1, 2, 0, 2, 1, 0, 0, 2, 5,
0, 2, 1, 0, 2, 1, 2, 2, 2, 0, 3, 2, 1, 3, 3, 3, 3, 0, 1, 3, 3,
3, 1, 0, 0, 1, 2, 1, 0, 1, 4, 1, 1, 1, 1, 2, 1, 3, 0, 0, 1, 1,
1, 1, 0, 2, 1, 0, 0, 1, 1, 5, 1, 1, 1, 3, 0, 1, 1, 1, 0, 2, 1,
0, 3, 3, 0, 0, 1, 2, 6, NA),

CF03 = c(-1.575, 0.170, -1.040, -0.010, -0.750,
0.665, -0.250, 0.145, -0.345, -1.915, -1.515,
0.215, -1.040, -0.035, 0.805, -0.860, -1.775,
1.725, -1.345, 1.055, -1.935, -0.160, -0.075,
-1.305, 1.175, 0.130, -1.025, -0.630, 0.065,
-0.665, 0.415, -0.660, -1.145, 0.165, 0.955,
-0.920, 0.250, -0.365, 0.750, 0.045, -2.760,
-0.520, -0.095, 0.700, 0.155, -0.580, -0.970,
-0.685, -0.640, -0.900, -0.250, -1.355, -1.330,
0.440, -1.505, -1.715, -0.330, 1.375, -1.135,
-1.285, 0.605, 0.360, 0.705, 1.380, -2.385, -1.875,
-0.390, 0.770, 1.605, -0.430, -1.120, 1.575, 0.440,
-1.320, -0.540, -1.490, -1.815, -2.395, 0.305,
0.735, -0.790, -1.070, -1.085, -0.540, -0.935,
-0.790, 1.400, 0.310, -1.150, -0.725, -0.150,
-0.640, 2.040, -1.180, -0.235, -0.070, -0.500,
-0.750, -1.450, -0.235, -1.635, -0.460, -1.855,
-0.925, 0.075, 2.900, -0.820, -0.170, -0.355,
-0.170, 0.595, 0.655, 0.070, 0.330, 0.395, 1.165,
0.750, -0.275, -0.700, 0.880, -0.970, 1.155, 0.600,
-0.075, -1.120, 1.480, -1.255, 0.255, 0.725,
-1.230, -0.760, -0.380, -0.015, -1.005, -1.605,
0.435, -0.695, -1.995, 0.315, -0.385, -0.175,
-0.470, -1.215, 0.780, -1.860, -0.035, -2.700,
-1.055, 1.210, 0.600, -0.710, 0.425, 0.155, -0.525,
-0.565),

CF02 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 0.38, 0.06, -0.94,
-0.02, -0.28, -0.78, -0.95, 2.33, 1.43, 1.24, 1.26,
-0.75, -1.5, -2.09, 1.01, -0.05, 2.48, 2.48, 0.46,
0.46, -0.2, -1.11, 0.52, -0.37, 0.58, 0.86, 0.59,
-0.12, -1.33, 1.4, -1.84, -1.4, -0.76, -0.23,
-1.78, -1.43, 1.2, 0.32, 1.87, 0.43, -1.71, -0.54,
-1.25, -1.01, -1.98, 0.52, -1.07, -0.44, -0.24,
-1.31, -2.14, -0.43, 2.47, -0.09, -1.32, -0.3,
-0.99, 1.1, 0.41, 1.01, -0.19, 0.45, -0.07, -1.41,
0.87, 0.68, 1.61, 0.36, -1.06, -0.44, -0.16, 0.72,
-0.69, -0.94, 0.11, 1.25, 0.33, -0.05, 0.87, -0.37,
-0.2, -2.22, 0.26, -0.53, -1.59, 0.04, 0.16, -2.66,
-0.21, -0.92, 0.25, -1.36, -1.62, 0.61, -0.2, 0,
1.14, 0.27, -0.64, 2.29, -0.56, -0.59, 0.44, -0.05,
0.56, 0.71, 0.32, -0.38, 0.01, -1.62, 1.74, 0.27, 0.97,
1.22, -0.21, -0.05, 1.15, 1.49, -0.15, 0.05, -0.87,
-0.3, -0.08, 0.5, 0.84, -1.67, 0.69, 0.47, 0.44,
-1.35, -0.24, -1.5, -1.32, -0.08, 0.76, -0.57,
-0.84, -1.11, 1.94, -0.68),

CF01 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, -0.117, -0.211, -0.333, -0.229, -0.272,
-0.243, -0.148, 0.191, -0.263, -0.239, -0.168,
-0.381, -0.512, -0.338, -0.296, 0.067, 0.104,
-0.254, -0.167, -0.526, -0.096, -0.43, 0.013,
-0.438, -0.297, -0.131, -0.098, -0.046, -0.063,
-0.194, -0.155, -0.645, -0.603, -0.374, -0.214,
-0.165, -0.509, -0.171, -0.442, -0.468, -0.289,
-0.427, -0.519, -0.454, 0.046, -0.275, -0.401,
-0.542, -0.488, -0.52, -0.018, -0.551, -0.444,
-0.254, -0.286, 0.048, -0.03, -0.015, -0.219,
-0.029, 0.059, 0.007, 0.157, 0.141, -0.035, 0.136,
0.526, 0.113, 0.22, -0.022, -0.173, 0.021, -0.027,
0.261, 0.082, -0.266, -0.284, -0.097, 0.097, -0.06,
0.397, 0.315, 0.302, -0.026, 0.268, -0.111, 0.084,
0.14, -0.073, 0.287, 0.061, 0.035, -0.022, -0.091,
-0.22, -0.021, -0.17, -0.184, 0.121, -0.192,
-0.24, -0.283, -0.003, -0.45, -0.138, -0.143,
0.017, -0.245, 0.003, 0.108, 0.015, -0.219, 0.09,
-0.22, -0.004, -0.178, 0.396, 0.204, 0.342, 0.079,
-0.034, -0.122, -0.24, -0.125, 0.382, 0.072, 0.294,
0.577, 0.4, 0.213, 0.359, 0.074, 0.388, 0.253, 0.167),

IND = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0))

Không phải bạn chỉ yêu cầu giá trị của lambda [N] sao?
whuber

@whuber vâng, tôi nghĩ điều đó đúng, nhưng về cơ bản hơn, bạn cần có những điều bạn muốn dự đoán (nghĩa là có phân phối sau) khác với những điều bạn đã quan sát. Bạn có thể đưa ra dự đoán một cách rõ ràng trong winbugs hoặc trong quá trình hậu xử lý bằng cách sử dụng các mẫu của betas.
atiretoo - phục hồi monica

@atiretoo Theo như tôi có thể nói, lambdas chính xác là những gì người ta muốn dự đoán: đây là mô hình tuyến tính tổng quát cho phân phối Poisson với liên kết nhật ký và lambdas là các tham số Poisson dự đoán. Họ đã không được quan sát. Tôi tin rằng tất cả những gì cần làm ở đây là đặt màn hình trên lambda [N].
whuber

@whuber, tôi muốn nói rằng màn hình h[N]thay vì lambda[N]... và bạn có được phân phối sau của giá trị dự đoán.
Tò mò

@tomek nhưng h[N]không phải là giá trị dự đoán: nó sẽ là một tập hợp các bản vẽ từ một tập hợp các phân phối Poisson dự đoán. Do đó, nó kết hợp sự biến đổi trong các tham số Poisson và biến thể từ chính các phân phối Poisson đó. Những gì có liên quan là phân phối sau lambda[N].
whuber

Câu trả lời:


6

Chỉ cần thêm biến hvào danh sách các tham số sẽ được theo dõi. Nếu bạn đang sử dụng gói như R2WinBUGS, sau đó thêm biến hvào danh sách được truyền cho parameters.to.saveđối số cho bugshàm. Sau đó nhìn vào giá trị cuối cùng của bạn trong h( giá trị NA) - bạn sẽ nhận được phân phối sau.

Đây là cách thông thường để đưa ra dự đoán trong suy luận Bayes ( xem thêm câu hỏi này ). Nó là tốt đẹp và đơn giản! Không còn phân tách đánh giá tham số và dự đoán. Tất cả mọi thứ được thực hiện cùng một lúc. Sự phân phối sau của các tham số được đưa ra bởi dữ liệu thực tế và được truyền đến các giá trị NA (dưới dạng "dự đoán").


Tomas, cảm ơn sự giúp đỡ của bạn. Tôi cố gắng theo dõi biến h trong Công cụ giám sát mẫu nhưng nó không hoạt động. Bạn có thể vui lòng giúp tôi một lần nữa? Sau đây là quy trình tôi đã thực hiện trong WinBUGS (Tôi không biết cách sử dụng R2WinBUGS): 1) chọn Mẫu trong Công cụ giám sát mẫu 2) gõ h vào ô trắng được đánh dấu nút 3) nhấp vào nút được đánh dấu tập 4) h không có trong danh sách các tham số tôi muốn theo dõi, trong khi các tham số khác (beta0, beta1, beta2, beta3, p) được hiển thị trong danh sách. Bạn có biết làm thế nào tôi có thể thêm "h" vào danh sách các tham số tôi muốn theo dõi không? Cảm ơn một lần nữa!
Bo Yu

@BoYu, tôi không biết cách thực hiện trực tiếp trong WinBUGS vì tôi chạy WinBUGS từ R, sử dụng gói R2WinBUGS. Nó thực tế hơn nhiều vì bạn chỉ có thể lưu tập lệnh R và chạy tất cả theo lô, cùng với việc tạo các biểu đồ của riêng bạn, v.v. Hãy xem ở đây để biết các tập lệnh ví dụ.
Tò mò

Điều đó nói rằng, chắc chắn cũng sẽ có thể có trong chính WinBUGS, nhưng tôi không biết làm thế nào (và tôi đoán hầu hết mọi người gọi nó từ R).
Tò mò

1
Trước hết, cảm ơn bạn, whuber, atiretoo và Tomas! Như whuber đã đề cập, vâng, đó là một mô hình tuyến tính tổng quát, biến h được trang bị phân phối Poisson với tốc độ khác nhau (lambda) được điều hòa với các yếu tố dự đoán khác nhau (CF01, CF02, CF03 và IND). Giá trị cuối cùng của h là những gì tôi cần biết và không được quan sát (được đánh dấu là NA), trong khi tất cả các giá trị khác của h được quan sát. Tôi nghĩ whuber là đúng, tôi cần đặt lambda làm tham số trong Công cụ giám sát mẫu và kiểm tra số liệu thống kê về giá trị cuối cùng của lambda, và tiếp tục nhận được dự đoán của tôi về h cuối cùng. Cảm ơn tất cả.
Bo Yu

1
@ Tomas, cảm ơn bạn rất nhiều. Vâng, bạn đúng! WinBUGS cung cấp dự đoán của h [N], bao gồm cả số liệu thống kê và mật độ xác suất. Tôi hiểu rồi Trân trọng,
Bo Yu
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.