[R] MH algorithm syntax help

ekwaters ekwaters at unimelb.edu.au
Mon Jan 19 23:42:42 CET 2009


Well spotted, the b is a muck up (what happens when you are basing stuff on
someone else's code). The bit you though might be a dimension mismatch seems
to work ok, but the bit that I was worried about from the start doesn't; the
reason I have sqrt of var y/ var x is because my posterior is for a reduced
major axis regression, that is the slope, but I somehow thought R might spit
that back at me. I might have to go back to the drawing board, and find a
different way of doing the posterior.

I get this, having fixed the algorithm.

> vx=sd(x)
> vy=sd(y)
> s2y=matrix(vy,m)
> s2x=matrix(vx,m)

> #begin MH sampling
> for(i in 2:m){
+ for(j in vy){s2y[i,j]=s2y[i-1,j]+rnorm(1,mean=0,sd=s2yscale[j]);acc=1}
+
if((post(y,x,s2ey[i-1],s2x,s2y[i])-post(y,x,s2ey[i-1],s2x,s2y[i-1]))<log(runif(1,min=0,max=1))){s2y[i,j]=s2y[i-1,j];
acc=0}
+ accrate[i,j]=(accrate[i-1,j]*(i-1)+acc)/i}
Error in x * s2y/s2x : non-conformable arrays

Ned


David Winsemius wrote:
> 
> The comma *before*  acc=1 ?
> 
> I also wondered whether (further up)  this should work:
> s2y[i,]=s2y[i-1]  # would think this to result in a dimension mismatch
> 
> This looks sketchy as well:
> s2y[i,j] = s2y[b[i-1,j] + rnorm(1,mean=0, sd=s2yscale[j])
>                ^ ^     ^  # unmatched sqr-brackets
> 
> It would be easier to run through a paren matching editor if you gave  
> the original loop code as well as the error output.
> -- 
> David Winsemius
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/MH-algorithm-syntax-help-tp21534889p21553281.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list