Error running 2LevelUnordered Template in MCMCglmm and Rrstan
-
- Posts: 12
- Joined: Tue Jan 07, 2014 5:28 pm
Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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. Thanks for any help and best.
Kofi
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. Thanks for any help and best.
Kofi
-
- Posts: 1384
- Joined: Mon Oct 19, 2009 10:34 am
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
For your first model it looks like there was a problem generating the R script:
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:
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.
Code: Select all
Error: unexpected symbol in "Traceback (most recent"
Execution halted
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
-
- Posts: 12
- Joined: Tue Jan 07, 2014 5:28 pm
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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
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
-
- Posts: 1384
- Joined: Mon Oct 19, 2009 10:34 am
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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:
you should be able to eliminate the error when running MCMCglmm.
To clarify my comments about the Stan model:
Code: Select all
denom = sum(mydata$${n}) / length(mydata$${n})
if (denom == 1) {
write.dta(data.frame(${y}.new),file="newy.dta")
}
To clarify my comments about the Stan model:
- To set the base category for the response variable we use the relevel command.
- This requires the variable in question to be of type factor.
- We read the data from Stat-JR into R using the read.dta function in the foreign package.
- 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.
-
- Posts: 12
- Joined: Tue Jan 07, 2014 5:28 pm
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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
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
-
- Posts: 1384
- Joined: Mon Oct 19, 2009 10:34 am
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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.
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.
-
- Posts: 12
- Joined: Tue Jan 07, 2014 5:28 pm
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
Hi Chris,
This is a bit delayed but I did want to thank you for all the help provided
This is a bit delayed but I did want to thank you for all the help provided
-
- Posts: 1384
- Joined: Mon Oct 19, 2009 10:34 am
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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?
-
- Posts: 1
- Joined: Wed Oct 02, 2024 9:38 am
Re: Error running 2LevelUnordered Template in MCMCglmm and Rrstan
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