最近正在做一个简单的panel data probit模型.这个是根据Tony Lancaster 书"An Introduction to Modern Bayesian Econometics(2004)"上的代码改写.根据他的建
议,为了解决面板数据中的Incidental Parameter Problem,我改写了代码.代码可以参见307页.我把这个代码和初始值及数据(极小版)放在最后面了.
但是问题是,Tony的书里面只给了一个自变量x[i,j]的代码.数据是二维的(N*T).他在这个代码后面说道,如果自变量是一个向量,包含x=(x1,x2,x3,.......)的话,就是我的情况。必须对代码进行改写,数据也要变成3维的(N*T*K,K就是自变量的数量,比如=4).我不知道该如何改写代码和数据,请大家帮我看看吧.
另外我在网上找的关于WinBUGS的Panel data的例子和论文,都没有人处理过Incidental parameter problem.按照Tony的书上所说,这是一个可能导致偏差的问题,所以要解决。虽然他没有说是不是必须要解决.我做了两个模型,一个是非常简单的没有处理Incidental parameter Problem的,包含一个自变量x,另一个也是同样的自变量但是处理了Incidental parameter problem(我把这个复杂模型附载最后了).使用同样的数据,两个模型的结果beta值不一样,符号相反.我想一定有哪一个模型是错的。大家的意见呢?
模型简介:y[i,j]是公司在t期的进入情况(0或者1),x[i,j]是该公司t-1期或者t-2期的进入情况.也就是滞后一到两年的y.alpha是一个公司特性的变量,yr[j]是时间dummy variables.我关心的就是beta.当然还有其他一些自变量我先不放进去了.P=c(...)里面的0.076923约等于1/13.是prof david spiegelhalter建议我的.软件不能识别1/13,只能用数字.
议,为了解决面板数据中的Incidental Parameter Problem,我改写了代码.代码可以参见307页.我把这个代码和初始值及数据(极小版)放在最后面了.
但是问题是,Tony的书里面只给了一个自变量x[i,j]的代码.数据是二维的(N*T).他在这个代码后面说道,如果自变量是一个向量,包含x=(x1,x2,x3,.......)的话,就是我的情况。必须对代码进行改写,数据也要变成3维的(N*T*K,K就是自变量的数量,比如=4).我不知道该如何改写代码和数据,请大家帮我看看吧.
另外我在网上找的关于WinBUGS的Panel data的例子和论文,都没有人处理过Incidental parameter problem.按照Tony的书上所说,这是一个可能导致偏差的问题,所以要解决。虽然他没有说是不是必须要解决.我做了两个模型,一个是非常简单的没有处理Incidental parameter Problem的,包含一个自变量x,另一个也是同样的自变量但是处理了Incidental parameter problem(我把这个复杂模型附载最后了).使用同样的数据,两个模型的结果beta值不一样,符号相反.我想一定有哪一个模型是错的。大家的意见呢?
模型简介:y[i,j]是公司在t期的进入情况(0或者1),x[i,j]是该公司t-1期或者t-2期的进入情况.也就是滞后一到两年的y.alpha是一个公司特性的变量,yr[j]是时间dummy variables.我关心的就是beta.当然还有其他一些自变量我先不放进去了.P=c(...)里面的0.076923约等于1/13.是prof david spiegelhalter建议我的.软件不能识别1/13,只能用数字.
MODEL2 treating incidental parameter problem<br />
model{<br />
for( i in 1 : N ) {<br />
for( j in 1 : T ) {<br />
y[i, j] ~ dbern(mu[i, j])<br />
mu[i, j] <- phi(alpha[i] +beta * x[i, j] +beta.yr[j])}<br />
alpha[i] ~ dnorm(nu[i], 1)<br />
nu[i] <- lam [i, z[i]]<br />
z[i] ~ dcat (p[ ])<br />
lam[i, 1] <- -beta * x[i, 1]<br />
lam[i, 2] <- -beta * x[i, 2]<br />
lam[i, 3] <- -beta * x[i, 3]<br />
lam[i, 4] <- -beta * x[i, 4]<br />
lam[i, 5] <- -beta * x[i, 5]<br />
lam[i, 6] <- -beta * x[i, 6]<br />
lam[i, 7] <- -beta * x[i, 7]<br />
lam[i, 8] <- -beta * x[i, 8]<br />
lam[i, 9] <- -beta * x[i, 9]<br />
lam[i, 10] <- -beta * x[i, 10]<br />
lam[i, 11] <- -beta * x[i, 11]<br />
lam[i, 12] <- -beta * x[i, 12]<br />
lam[i, 13] <- -beta * x[i, 13]<br />
}<br />
for(j in 1:T){<br />
beta.yr[j] ~ dnorm(0,0.001)<br />
}<br />
beta ~ dnorm(0, 0.001)<br />
}<br />
<br />
init<br />
list(alpha=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),<br />
beta = 0,<br />
beta.yr = c(NA,0,0,0,0,0,0,0,0,0,0,0,0),<br />
)<br />
<br />
Data<br />
list(<br />
N=10,T=13,<br />
p=c(0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923),<br />
y=structure(<br />
.Data=c(<br />
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,<br />
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,<br />
1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,<br />
0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1,<br />
0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0,<br />
0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,<br />
0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,<br />
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<br />
0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,<br />
0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0),<br />
.Dim=c(10,13)<br />
),<br />
x=structure(<br />
.Data=c(<br />
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, <br />
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, <br />
1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, <br />
1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, <br />
1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, <br />
0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, <br />
1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, <br />
0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, <br />
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, <br />
1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0),<br />
.Dim=c(10,13) <br />
)<br />
)<br />
END