Hi, I guess that my problem has an obvious answer, but I have not been able to find it. Suppose I create a custom function, consisting of two beta-distributions: myfunction <- function(x) { dbeta(x,2,6) + dbeta(x,6,2) } How can I calculate the quantiles of myfunction? I have not seen any continous function treated in the docs, and applying the "quantile function" gives me an error (since it seems only to be defined on lists and atoms). Thank you in advance, Gerhard
Gerhard: Strictly speaking, it's quantiles of a custom "distribution", not function. There may be some way to handle your example easily, but, in general, you would need to solve the resulting integral equation. This is hard -- closed form solutions rarely exist; good approximations require work. So a standard approach is: simulate. Indeed, many simulation tricks (under the rubric of "variance reduction") have been developed exactly for such monte carlo integration. Consult a good reference or knowledgeable person for details. -- Bert On Tue, Jan 3, 2012 at 4:24 AM, Gerhard <feldspat at gmx.net> wrote:> Hi, > > I guess that my problem has an obvious answer, but I have not been able to > find it. > > Suppose I create a custom function, consisting of two beta-distributions: > > myfunction <- function(x) { > ?dbeta(x,2,6) + dbeta(x,6,2) > } > > How can I calculate the quantiles of myfunction? > > I have not seen any continous function treated in the docs, and applying the > "quantile function" gives me an error (since it seems only to be defined on > lists and atoms). > > Thank you in advance, > > Gerhard > > ______________________________________________ > R-help at 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.-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
On Jan 3, 2012, at 7:24 AM, Gerhard wrote:> Hi, > > I guess that my problem has an obvious answer, but I have not been > able to > find it. > > Suppose I create a custom function, consisting of two beta- > distributions: > > myfunction <- function(x) { > dbeta(x,2,6) + dbeta(x,6,2) > } >Given the symmetry of the beta function, I suspect that dividing by two would make that a real distribution.> How can I calculate the quantiles of myfunction?You could build a CDF using 'integrate'.> > I have not seen any continous function treated in the docs, and > applying the > "quantile function" gives me an error (since it seems only to be > defined on > lists and atoms).There is also a family of packages, all of whose names begin with "distr". They provide a variety of facilities for developing new distributions, both discrete and continuous. -- David Winsemius, MD West Hartford, CT
Gerhard wrote> > > Suppose I create a custom function, consisting of two beta-distributions: > > myfunction <- function(x) { > dbeta(x,2,6) + dbeta(x,6,2) > } > > How can I calculate the quantiles of myfunction? > > Thank you in advance, > > Gerhard > >Gehard, if do you want to know the quantiles of the new distribution created by "myfunction". Maybe you can also do: x <- seq(0,1,.01) # insert your 'x' q <- myfunction(x) # And: quantile(x) 0% 25% 50% 75% 100% 0.000000 1.476177 2.045389 2.581226 2.817425 # This gives the sample quantiles. You can also look foward to simulations (like Bert Gunter had suggested) to know better the properties of distributions quantiles obtained after 'myfunction'. ----- Victor Delgado cedeplar.ufmg.br P.H.D. student www.fjp.mg.gov.br reseacher -- View this message in context: http://r.789695.n4.nabble.com/calculate-quantiles-of-a-custom-function-tp4256887p4257551.html Sent from the R help mailing list archive at Nabble.com.
VictorDelgado wrote> > > quantile(x) > >Correcting to quantile(q) ----- Victor Delgado cedeplar.ufmg.br P.H.D. student www.fjp.mg.gov.br reseacher -- View this message in context: http://r.789695.n4.nabble.com/calculate-quantiles-of-a-custom-function-tp4256887p4257575.html Sent from the R help mailing list archive at Nabble.com.
Am Dienstag, 3. Januar 2012, 08:50:44 schrieb VictorDelgado:> VictorDelgado wrote > > > quantile(x) > > Correcting to > > quantile(q) > > -----Dear Victor, thank you for your answer. Best, Gerhard> Victor Delgado > cedeplar.ufmg.br P.H.D. student > www.fjp.mg.gov.br reseacher > -- > View this message in context: > http://r.789695.n4.nabble.com/calculate-quantiles-of-a-custom-function-tp42 > 56887p4257575.html Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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.
FWIW, the integral of a mixture density is the same mixture of the CDFs, so you can use the pbeta functions: pcustom <- function(x) (pbeta(x,2,6) + pbeta(x,6,2))/2 albyn Quoting Gerhard <feldspat at gmx.net>:> Am Dienstag, 3. Januar 2012, 19:51:36 schrieb Prof. Dr. Matthias Kohl: >> D <- AbscontDistribution(d = function(x) dbeta(x, 2, 6) + dbeta(x,6,2), >> low = 0, up = 1, withStand = TRUE) > > Dear all, > > thank you all again for your help. > > So, summing up, (in case this might be useful to other beginners - like me) > this is how it can be done: > > ############################ > library(distr) > > dcustom <- function(x) { > (dbeta(x,2,6) + dbeta(x,6,2))/2 # I need to divide by 2 to get 1 as > # result of integration; > } > > pcustom <- function(x) { > integrate(dmyspeaker,0,x)$value > } > > D <- AbscontDistribution(d = dcustom, low = 0, up = 1, withStand = TRUE) > > qcustom <- function(x){ > q(D)(x) > } > ############################ > > Best, > > Gerhard > > ______________________________________________ > R-help at 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. > >