-1

我可以在 WinBUGS14 中毫无问题地运行模型并获得结果,但是当我从 MatLab 运行相同的 WinBUGS 模型(如下所示)时出现问题。它看起来程序永远不会停止运行并且没有结果返回。

谁能帮我。任何建议将不胜感激。谢谢。

1) 我的 WinBUGS 代码 --- CHK_model.txt

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)
}

2) 我的 MatLab 代码

dataStruct = struct( ... 
    'N', 155, ...
    'lower', 0.80, ...
    'upper', 0.95, ...    
    'h',[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, nan], ...               
    'CF03',[-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',[nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
         nan, nan, nan, nan, nan, nan, 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',[nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
         nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, ...
         nan, -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',[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]);

Nchains = 3;
clear initStructs;

for i=1:Nchains
    S.beta0 = 0;
    S.beta1 = 0;
    S.beta2 = 0;
    S.beta3 = 0;
    S.P     = 0.9;  
    initStructs(i) = S;
end

bugsFolder = 'C:\Program Files\winbugs14\WinBUGS14';
[samples, stats] = matbugs(dataStruct, ...
        fullfile(pwd, 'CHK_model.txt'), ...
        'init', initStructs, ...
        'view', 0, 'nburnin', 1000, 'nsamples', 5000, ...
        'thin', 10, ...
        'monitorParams', {'theta', 'mu_theta', 'sigma_theta'}, ...
        'Bugdir', bugsFolder);
4

1 回答 1

0

@N t,非常感谢您的帮助。我不知道为什么我无法使用“发布您的答案”来回复您。所以我在这里回复:

我从一个网站 (http://code.google.com/p/matbugs/) 下载了 matbugs.m,根本没有碰过这个程序。

当我运行 Matlab 代码时(如我的帖子所示),计算转到 WinBUGS 接口并停在那里。弹出三个WinBUGS窗口:第一个是WinBUGS License窗口,第二个是Log窗口,第三个是Trap窗口。

1)这里是日志窗口;.... 数据加载 compile(3) 模型编译 inits(1,

2) 这里是Trap Wind ... (pc=764962F9H, fp=0028FB3CH) (pc=76496D39H, fp=0028FBB4H) (pc=764977C3H, fp=0028FC14H) (pc=76497BC9H, fp=0028FC24H) HostMenus.Loop [ 00003BDEH] .done BOOLEAN FALSE .f SET {0..5} .n INTEGER 0 .res INTEGER 0 .w HostWindows.Window NIL Kernel.Start [00002B8CH] .code PROCEDURE HostMenus.Loop

3) matbugs.m 的程序太长,无法在此处发布,但我使用的程序与此完全相同http://code.google.com/p/matbugs/source/browse/trunk/matbugs.m

再次感谢您的宝贵时间和建议!

于 2012-07-06T20:20:28.883 回答