{"id":7,"date":"2013-04-12T07:29:30","date_gmt":"2013-04-12T07:29:30","guid":{"rendered":"http:\/\/candrea.ch\/blog\/?p=7"},"modified":"2013-05-29T15:24:19","modified_gmt":"2013-05-29T13:24:19","slug":"multiple-varying-coefficients-with-multiple-group-level-predictors","status":"publish","type":"post","link":"https:\/\/candrea.ch\/blog\/multiple-varying-coefficients-with-multiple-group-level-predictors\/","title":{"rendered":"Multiple varying coefficients with multiple group-level predictors"},"content":{"rendered":"<div><\/div>\n<div>Ever tried to set up a multilevel model for e.g. classical educational settings?<\/div>\n<div><\/div>\n<div>I do it with <a href=\"http:\/\/cran.r-project.org\" target=\"_blank\">R<\/a> and <a href=\"http:\/\/mcmc-jags.sourceforge.net\" target=\"_blank\">JAGS<\/a> using the <a href=\"http:\/\/cran.r-project.org\/web\/packages\/rjags\/index.html\">rjags<\/a> package. If you want to use a sort of <a href=\"http:\/\/www.openbugs.info\" target=\"_blank\">BUGS<\/a> language on Mac OS X together with <a href=\"http:\/\/cran.r-project.org\" target=\"_blank\">R<\/a>\u00a0you have to use <a href=\"http:\/\/mcmc-jags.sourceforge.net\" target=\"_blank\">JAGS<\/a>.<\/div>\n<div><\/div>\n<div>My book recommendation for everything about Multilevel Models is\u00a0\u00a0&#8220;Data Analysis Using Regression and Multilevel\/Hierarchical Models (2007)&#8221; by Andrew Gelman.<\/div>\n<div><\/div>\n<div>I was able to set up the BUGS code of the book running in <a href=\"http:\/\/mcmc-jags.sourceforge.net\" target=\"_blank\">JAGS<\/a>.<\/div>\n<div><\/div>\n<div>But be carefulI. There is an error in the BUGS code of Chapter 17.2 of the aforementioned book.<\/div>\n<div><\/div>\n<div>The error is in the file &#8220;17.2_Bugs_codes.bug&#8221; in the section &#8220;# Multiple varying coefficients with multiple group-level predictors&#8221; on line 131:<\/div>\n<div><\/div>\n<div>\n<pre class=\"striped:false lang:default decode:true\">B.raw[j,1:K] ~ dnorm (B.raw.hat[j,], Tau.B.raw[,])<\/pre>\n<\/div>\n<div>should be:&nbsp;<\/p>\n<pre class=\"striped:false lang:default decode:true\">B.raw[j,1:K] ~ dmnorm (B.raw.hat[j,], Tau.B.raw[,])<\/pre>\n<\/div>\n<div><\/div>\n<div>as on page 380, line 6 of the book.<\/div>\n<div><\/div>\n<div>A second error is on line 138:<\/div>\n<div><\/div>\n<div>\n<pre class=\"striped:false lang:default decode:true\">G[k,l] &lt;- xi[k] + G.raw[k,l]<\/pre>\n<\/div>\n<div><\/div>\n<div>should be:&nbsp;<\/p>\n<pre class=\"striped:false lang:default decode:true crayon-selected\">G[k,l] &lt;- xi[k] * G.raw[k,l]<\/pre>\n<\/div>\n<div><\/div>\n<div>The complete corrected code looks like:<\/div>\n<div>\n<pre class=\"lang:default decode:true crayon-selected\" title=\"Multiple varying coefficients with multiple group-level predictors\"># Multiple varying coefficients with multiple group-level predictors\r\nmodel {\r\n  for (i in 1:n){\r\n    y[i] ~ dnorm(y.hat[i], tau.y)\r\n    y.hat[i] &lt;- inprod(B[classid[i],],X[i,])\r\n  }\r\n  tau.y &lt;- pow(sigma.y, -2)\r\n  sigma.y ~ dunif(0, 100)\r\n\r\n  for (k in 1:K){\r\n    for (j in 1:J){\r\n      B[j,k] &lt;- xi[k] * B.raw[j,k]\r\n    }\r\n    xi[k] ~ dunif(0, 100)\r\n  }  \r\n  for (j in 1:J){\r\n    B.raw[j,1:K] ~ dmnorm(B.raw.hat[j,], Tau.B.raw[,]) #this line is erroneous in 17.2_Bugs_codes.bug!\r\n    for (k in 1:K){\r\n      B.raw.hat[j,k] &lt;- inprod(G.raw[k,], U[j,])\r\n    }\r\n  }\r\n  for (k in 1:K){\r\n    for (l in 1:L){\r\n      G[k,l] &lt;- xi[k] * G.raw[k,l] #this line is erroneous in 17.2_Bugs_codes.bug!\r\n      G.raw[k,l] ~ dnorm(0, .0001)\r\n    }\r\n  }\r\n\r\n  Tau.B.raw[1:K,1:K] ~ dwish(W[,], df)\r\n  df &lt;- K+1\r\n  Sigma.B.raw[1:K,1:K] &lt;- inverse(Tau.B.raw[,])\r\n  for (k in 1:K){\r\n    for (k.prime in 1:K){\r\n      rho.B[k,k.prime] &lt;- Sigma.B.raw[k,k.prime]\/\r\n        sqrt(Sigma.B.raw[k,k]*Sigma.B.raw[k.prime,k.prime])\r\n    }\r\n    sigma.B[k] &lt;- abs(xi[k])*sqrt(Sigma.B.raw[k,k])\r\n  }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ever tried to set up a multilevel model for e.g. classical educational settings? I do it with R and JAGS using the rjags package. If you want to use a sort of BUGS language on Mac OS X together with R\u00a0you have to use JAGS. My book recommendation for everything about Multilevel Models is\u00a0\u00a0&#8220;Data Analysis &hellip; <a href=\"https:\/\/candrea.ch\/blog\/multiple-varying-coefficients-with-multiple-group-level-predictors\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Multiple varying coefficients with multiple group-level predictors<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-r"],"_links":{"self":[{"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/posts\/7"}],"collection":[{"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":15,"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/posts\/7\/revisions"}],"predecessor-version":[{"id":51,"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/posts\/7\/revisions\/51"}],"wp:attachment":[{"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/media?parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/categories?post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/candrea.ch\/blog\/wp-json\/wp\/v2\/tags?post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}