我正在使用 WinBugs 处理分层面板数据。假设关于学校表现的数据 - 具有自变量 logp 和排名的日志。所有学校都分为三类(猫),我需要每个类别的贝塔系数(因此是 HLM)。我想在模型中考虑特定时间和特定学校的影响。一种方法是在 mu[i] 下的变量列表中设置虚拟变量,但这会变得很混乱,因为我的学校数量高达 60 所。我相信一定有更好的方法来处理这个问题。
My data looks like the following:
school time logs logp cat rank
1 1 4.2 8.9 1 1
1 2 4.2 8.1 1 2
1 3 3.5 9.2 1 1
2 1 4.1 7.5 1 2
2 2 4.5 6.5 1 2
3 1 5.1 6.6 2 4
3 2 6.2 6.8 3 7
#logs = log(score)
#logp = log(average hours of inputs)
#rank - rank of school
#cat = section red, section blue, section white in school (hierarchies)
我的 WinBUGS 代码如下。
model {
# N observations
for (i in 1:n){
logs[i] ~ dnorm(mu[i], tau)
mu[i] <- bcons +bprice*(logp[i])
+ brank[cat[i]]*(rank[i])
}
}
}
# C categories
for (c in 1:C) {
brank[c] ~ dnorm(beta, taub)}
# priors
bcons ~ dnorm(0,1.0E-6)
bprice ~ dnorm(0,1.0E-6)
bad ~ dnorm(0,1.0E-6)
beta ~ dnorm(0,1.0E-6)
tau ~ dgamma(0.001,0.001)
taub ~dgamma(0.001,0.001)
}
正如您在上面的数据样本中看到的那样,随着时间的推移,我对学校有多次观察。如何修改代码以考虑时间和学校特定的固定效果。我过去使用过 STATA,我们得到 fe,be,i.time 选项来处理面板数据中的固定效果。但在这里我迷路了。