Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Welcome to the forum for Stat-JR users. Feel free to post your question about Stat-JR here. The Centre for Multilevel Modelling take no responsibility for the accuracy of these posts, we are unable to monitor them closely. Do go ahead and post your question and thank you in advance if you find the time to post any answers!

We will add further support to the Stat-JR website, such as FAQs and tutorials, as soon as it is available; the Stat-JR website can be found here: http://www.bristol.ac.uk/cmm/software/statjr/
Post Reply
kofidlehman
Posts: 12
Joined: Tue Jan 07, 2014 5:28 pm

Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by kofidlehman »

Hi,
I am having trouble running Stat-jr 2LevelUnordered template in MCMCglmm and Rstan. I am able to run the Regression2 template in MCMCglmm but when I switch to the 2LevelUnordered template and try with MCMCglmm that fails. Switching to Rrstan also fails. I have attached the comments in the command file to see if I can get some help.
Stat-jr errors in MCMCglmm and Rstan.txt
(16.04 KiB) Downloaded 3935 times
Thanks for any help and best.
Kofi
ChrisCharlton
Posts: 1384
Joined: Mon Oct 19, 2009 10:34 am

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by ChrisCharlton »

For your first model it looks like there was a problem generating the R script:

Code: Select all

Error: unexpected symbol in "Traceback (most recent"
Execution halted
Would you be able to post what is generated (it should be in an output with a name like script.R)?

For the Stan model it looks like the data is not being transferred in the expected way:

Code: Select all

Error in relevel.default(mydata$ideal, 3) :
  'relevel' only for (unordered) factors
Calls: relevel -> relevel.default
Execution halted
The relevel command is being used here to set which value is used as the base category, however the variable in question is not a factor variable. This may be a problem with your original data, or something that has changed in the way that R imports data since the original template was written. I would suggest testing what happens when you load the dataset directly into R to see how the different variables are imported.
kofidlehman
Posts: 12
Joined: Tue Jan 07, 2014 5:28 pm

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by kofidlehman »

Hello Chris,
Thank you for the as usual quick prompt. Script R for the MCMCglmm is pasted below. But I am not sure I understand your comment about Rstan.

"The relevel command is being used here to set which value is used as the base category, however the variable in question is not a factor variable. This may be a problem with your original data, or something that has changed in the way that R imports data since the original template was written. I would suggest testing what happens when you load the dataset directly into R to see how the different variables are imported."

I am able to upload the data into Rstudio so I am not clear what I have to do to my data to get stat-jr's interface with rstan to read it. I am working to run the model in the rstudio's shell for rstan and hopefully gain some more insight about what might be the problem, nevertheless any additional clarity on your comment will be appreciated. Thanks a great deal for the superb assistance.
Kofi

Mcmcglmm Script R

Traceback (most recent call last):
File "C:\Program Files\StatJR\packages\R_MCMCglmm.py", line 232, in init
script = MakoTemplate(script).render(**args)
File "C:\Python27\lib\site-packages\mako\template.py", line 475, in render

File "C:\Python27\lib\site-packages\mako\runtime.py", line 882, in _render

File "C:\Python27\lib\site-packages\mako\runtime.py", line 919, in _render_context

File "C:\Python27\lib\site-packages\mako\runtime.py", line 946, in _exec_template

File "memory:0x17172da0L", line 100, in render_body
denom = sum(mydata$${n}) / length(mydata$${n})
File "C:\Python27\lib\site-packages\mako\runtime.py", line 229, in __str__

NameError: Undefined
ChrisCharlton
Posts: 1384
Joined: Mon Oct 19, 2009 10:34 am

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by ChrisCharlton »

Looking at the template history it looks like we removed a question specifying a denominator variable as none of the packages called by the template support this, however we appear to have missed removing a piece of code that assumes that this has been specified. I believe that if you remove the following lines from the template:

Code: Select all

denom = sum(mydata$${n}) / length(mydata$${n})
if (denom == 1) {
write.dta(data.frame(${y}.new),file="newy.dta")
}
you should be able to eliminate the error when running MCMCglmm.

To clarify my comments about the Stan model:
  1. To set the base category for the response variable we use the relevel command.
  2. This requires the variable in question to be of type factor.
  3. We read the data from Stat-JR into R using the read.dta function in the foreign package.
  4. To automatically create factor variables from variables imported in this way (using the convert.factors
    option) they need to have value labels associated with them.
kofidlehman
Posts: 12
Joined: Tue Jan 07, 2014 5:28 pm

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by kofidlehman »

Hello Chris,
Thank you again for the prompt response. This is where I am now.

Mcmcglmm:

1). For the MCMCglmm, I went into the template and entered the code you provided and that fixed the problem.
2). Unfortunately, It run into another problem having to do with the omitted category in the dependent and complained about relevel() not working . Same complaint that stan was giving. So using your comments on my Rstan problem as guide I changed this entry in the template "mydata$${y} <- relevel(mydata$${y}, ${base})" to "mydata$${y} <- relevel(as.factor(mydata$${y}), ${base})" right before "myModel <- MCMCglmm(${y} ~ -1 + trait + ${Rmmult(xs)}, random=~us(trait):${L2ID}, rcov = ~us(trait):units, family="categorical", prior=myprior, burnin=${burnin}, nitt=${iterations + burnin}, thin=${thinning}, data=mydata)" and that got me past that block to some results. Is that acceptable? I dont know r very well and google to find solutions so I need some assurance here. Thank you.

3). After getting results from Mcmcglmm, I noticed that MCMCglmm in stat-jr estimates the multinomial logit keeping the effect of the independent variable constrained across response categories. Is there a way to have the effect of the independent variable be unconstrained across responses in the 2levelUnordered template or do I have to look for another template?

Rstan:
1). For the rstan problem about relevel, I made the same modification that I made for MCMCglmm(namely added as.factor) to the relevel function and that seems to get me to some results. Again can you please let me know if that is acceptable? Best wishes.

Kofi
ChrisCharlton
Posts: 1384
Joined: Mon Oct 19, 2009 10:34 am

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by ChrisCharlton »

Adding the as.factor() call into R should be fine as an alternative to having the variable converted when loaded into R. You'd just have to make sure that the variable is suitable for this yourself (i.e. contains a set of discrete integer values). The advantage of using value labels is that the different factor levels would have string values attached to them, which usually carry through to the outputs. It would of course be a good idea to check the output generated by R to ensure that it is working as expected.

For the unconstrained independent variable I think you would need to write your own R code, which you could base on that generated by the template. You would need to look at the documentation for MCMCglmm to see whether this is supported there, otherwise you should be able to fit the models with MLwiN via R2MLwiN (https://www.bristol.ac.uk/cmm/software/r2mlwin/). See chapter 10 of the User guide replication examples and chapter 12 of the MCMC guide replication examples at https://www.bristol.ac.uk/cmm/software/ ... /examples/ for more details.
kofidlehman
Posts: 12
Joined: Tue Jan 07, 2014 5:28 pm

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by kofidlehman »

Hi Chris,
This is a bit delayed but I did want to thank you for all the help provided
ChrisCharlton
Posts: 1384
Joined: Mon Oct 19, 2009 10:34 am

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by ChrisCharlton »

Are you able to provide any further details regarding the models that you are trying to fit? Is the goal to fit them within MCMCglmm?
midnightsounds
Posts: 1
Joined: Wed Oct 02, 2024 9:38 am

Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan

Post by midnightsounds »

I find this issue with running the 2LevelUnordered template in MCMCglmm and RStan intriguing. It's fascinating how different templates and software packages can produce such varied results with the same data. I'm curious about what specific aspects of the 2LevelUnordered model might be causing issues in these particular implementations. The fact that the Regression2 template works fine in MCMCglmm but the 2LevelUnordered doesn't is particularly interesting - what key differences between these models could be triggering the error? I wonder if other users have encountered similar issues when moving between different hierarchical models or statistical software packages. It would be helpful to know more about the structure of Kofi's data and the specific research question they're trying to address. Has anyone else successfully run complex multilevel models in Stat-JR using MCMCglmm or RStan? I'd be particularly interested in hearing about any troubleshooting steps or workarounds others have found effective when dealing with similar errors in these statistical environments Make a Calendar
Post Reply