[R] Bayesian functions for mle2 object

Ben Bolker bbolker at gmail.com
Mon Aug 29 20:50:32 CEST 2011


Billy.Requena <billy.requena <at> gmail.com> writes:

> 
> Hi everybody,
> 
> I'm interested in evaluating the effect of a continuous variable on the mean
> and/or the variance of my response variable. I have built functions
> expliciting these and used the 'mle2' function to estimate the coefficients,
> as follows:
> 
> func.1 <- function(m=62.9, c0=8.84, c1=-1.6)
> 	{
>  	s <- c0+c1*(x)
> 	-sum(dnorm(y, mean=m, sd=s,log=T))
> 	}
> 
> m1 <- mle2(func.1, method="SANN")
> 
> However, the estimation of the effect of x on the variance of y usually has
> dealt some troubles, resulting in no convergencies or sd of estimates
> extremely huge. I tried using different optimizers, but I still faced the
> some problems.
> 
> When I had similar troubles in 'GLMM' statistical universe, I used bayesian
> functions to solve this problem, enjoyning the flexibility of different
> start points to reach the maximum likelihood estimates. However, I have no
> idea which package or which function to use to solve the specific problem
> I'm facing now.
> Does anyone have a clue?
> Thanks in advance

  Unless I'm missing something, you can fit this model
(more easily) in gls() from the nlme package, which allows models
for heteroscedasticity.  See ?nlme::varConstPower

  gls(y~1,weights=varPower(power=1,form=~x),data)

 This gives you a standard deviation proportional to (t1+|v|);
that is, if the baseline residual standard deviation is S, then
the standard deviation is S*(t1+|v|), so S would correspond to
your c1 and S*t1 would correspond to your c0.

   Ben Bolker



More information about the R-help mailing list