On Mar 15, 2012, at 6:08 AM, Mauro Rossi wrote:

Dear R users,
first I take this opportunity to greet all the R community for your continuous efforts. I wrote a function to calculate the pdf and cdf of a custom distribution (mixed gamma model).
The function is the following:

pmixedgamma3 <- function(y, shape1, rate1, shape2, rate2, prev)
        {
        density.function<-function(x)
                {
                shape1=shape1
                rate1=rate1
                shape2=shape2
                rate2=rate2
                prev=prev
fun<-prev*((rate1^shape1)/gamma(shape1)*(x^(shape1-1))*exp(- rate1*x)) + (1-prev)*((rate2^shape2)/ gamma(shape2)*(x^(shape2-1))*exp(-rate2*x))
                return(fun)
                }
        den<-density.function(y)
        p.mixedgamma<-integrate(f=density.function,lower=0,upper=y)
        return(list(density=den,cumdensity=p.mixedgamma$value))
        }

Why doesn't this calculate cumdensity (p.mixedgamma) in case x is a vector?

You did not build the function in a manner that would vectorize, but perhaps the convenience vuntion would help here:

Vpmixedgamma3 <- Vectorize(pmixedgamma3)



For instance try:
pmixedgamma3(c(10,20),shape1=10,rate1=1,shape2=10,rate2=1,prev=0.5)


> Vpmixedgamma3(c(10,20),shape1=10,rate1=1,shape2=10,rate2=1,prev=0.5)
           [,1]      [,2]
density    0.12511   0.002908153
cumdensity 0.5420703 0.9950046


As you can see cumdensity is calculated just for the first x value.


--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to