[R] problem in metro_hasting function‏

Bert Gunter bgunter.4567 at gmail.com
Thu Dec 10 22:26:05 CET 2015


...

Note that if your parameters are uniform on [0, ...] you might be
getting into trouble with (1/param) in your priors and likelihood.

Or you might just be over-parameterized -- your data can't support
your model and you are getting near singularities in your
approximations.

Cheers,
Bert


Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Thu, Dec 10, 2015 at 1:16 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
> Sara:
>
> Always cc your reply to the list, which I have done here.
>
> No, I cannot help you. Others may be able to now. (They may still need
> your data, however).
>
> Cheers,
> Bert
>
>
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Thu, Dec 10, 2015 at 12:35 PM, hms Dreams <cute_loomaa at hotmail.com> wrote:
>> No, it is not a homework..
>>
>> The 3 paramters I want to estimate it are : alpha,gam and delta, the range
>> of them >0
>>
>> here my code:
>>
>>
>> library("MHadaptive")
>>
>>
>> baysianlog5=function (param,data)
>>
>>
>>          {  alpha=param[1]
>>
>>
>>           gam=param[2]
>>
>>
>>          delta=param[3]
>>
>>
>>           x=data
>>
>>            n =length(x)
>>
>>
>>
>> logl=n*log(alpha)+n*log(gam)+n*log(1/delta)+(alpha-1)*sum(log(x))-(gam+1)*sum(log(1+(1/delta)*x^alpha))
>>
>>
>>         p=prior5(param)
>>
>>
>>         return(logl+p) #return log(p(x|theta)p(theta))
>>
>>
>> }
>>
>>
>> #non informative prior using uniform
>>
>>
>> prior5=function(param)
>>
>>
>> {   alpha=param[1]
>>
>>
>>           gam=param[2]
>>
>>
>>          delta=param[3]
>>
>>
>>
>> prior_alpha=dunif(alpha,0, 1,log=TRUE)
>>
>>
>>  prior_gam=dunif(gam,0,.5,log=TRUE)
>>
>>
>> prior_delta=dunif(delta,0,.8,log=TRUE)
>>
>>
>> return(prior_alpha+ prior_gam +prior_delta)
>>
>>
>> }
>>
>>
>> alphaB5=c();    gamB5=c();deltaB5=c()
>>
>>
>> n=5 ; m=5
>>
>>
>> alpha=2;gam=3;delta=4 #initial values
>>
>>
>> v= runif(n,0,1)
>>
>>
>>   x =delta^(1/alpha)*((1-v)^(-1/gam)-1)^(1/alpha)# quantile
>>
>>
>> mc5 =Metro_Hastings(li_func=baysianlog5,
>> pars=c(.8,.2,.2),par_names=c('alpha','gamma','delta'),data=x )
>>
>>
>>
>>
>>
>>
>> #the output is
>> Error in optim(pars, li_func, control = list(fnscale = -1), hessian = TRUE,
>> :
>>   non-finite finite-difference value [1]
>>
>>
>> Can you help me
>> Sara
>>
>>> Date: Thu, 10 Dec 2015 11:23:56 -0800
>>> Subject: Re: [R] problem in metro_hasting function‏
>>> From: bgunter.4567 at gmail.com
>>> To: cute_loomaa at hotmail.com
>>> CC: r-help at r-project.org
>>>
>>> Heh, heh ...
>>>
>>> Uniform distributions are not necessarily "non-informative" priors
>>> (itself, a non-definition). See, e.g.
>>> http://www.stats.org.uk/priors/noninformative/YangBerger1998.pdf .
>>> For a basic argument, see:
>>> http://www.amstat.org/publications/jse/v12n2/zhu.pdf
>>>
>>> Further discussion is off-topic here (it's a statistical, not an R,
>>> question). I suggest you consult a local statistician for details.
>>>
>>> And your question itself is noninformative: how can one tell without
>>> knowing what you are trying to optimize, your data, your starting
>>> values, etc. (unless I have missed something obvious)?
>>>
>>> Finally, if this is homework, post elsewhere: this list has a no
>>> homework policy.
>>>
>>> Cheers,
>>> Bert
>>>
>>>
>>> Bert Gunter
>>>
>>> "The trouble with having an open mind is that people keep coming along
>>> and sticking things into it."
>>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>>
>>>
>>> On Thu, Dec 10, 2015 at 9:26 AM, hms Dreams <cute_loomaa at hotmail.com>
>>> wrote:
>>> > Hello,
>>> > I estimated three paramters using non informative prior(all paramters
>>> > following uniform distribution)
>>> >
>>> > the output is:
>>> > Error in optim(pars, li_func, control = list(fnscale = -1), hessian =
>>> > TRUE, :
>>> > non-finite finite-difference value [1]
>>> >
>>> > How can I solve it using uniform distribution for all paramters??
>>> >
>>> > (the same code is working when I use informative prior When I sugessted
>>> > other distriutions like gamma and exp.)
>>> >
>>> > Thank you
>>> >
>>> > [[alternative HTML version deleted]]
>>> >
>>> > ______________________________________________
>>> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> > https://stat.ethz.ch/mailman/listinfo/r-help
>>> > PLEASE do read the posting guide
>>> > http://www.R-project.org/posting-guide.html
>>> > and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list