[R] Query on finding root

Rolf Turner ro||turner @end|ng |rom po@teo@net
Sun Aug 27 23:40:31 CEST 2023

On Fri, 25 Aug 2023 22:17:05 +0530
ASHLIN VARKEY <ashlinvarkey using gmail.com> wrote:

> Sir,

Please note that r-help is a mailing list, not a knight! 😊️

> I want to solve the equation Q(u)=mean, where Q(u) represents the
> quantile function. Here my Q(u)=(c*u^lamda1)/((1-u)^lamda2), which is
> the quantile function of Davies (Power-pareto) distribution.  Hence I
> want to solve , *(c*u^lamda1)/((1-u)^lamda2)=28353.7....(Eq.1)*
> where lamda1=0.03399381, lamda2=0.1074444 and c=26104.50. When I used
> the package 'Davies' and solved Eq 1, I got the answer u=0.3952365.
> But when I use the function  'uniroot' to solve the Eq.1, I got a
> different answer which is  u=0.6048157.  Why did this difference
> happen?  Which is the correct method to solve Eq.1. Using the value
> of *u *from the first method my further calculation was nearer to
> empirical values.  The R-code I used is herewith. Kindly help me to
> solve this issue.
> R-code
> Q(u)=(c*u^lamda1)/((1-u)^lamda2)
> mean=28353.7 # mean calculated from data
> lamda1=.03399381 # estimates c, lamda1 and lamda2 calculated from data
> lamda2=.1074444
> c=26104.50
> library(Davies)# using package
> params=c(c,lamda1,lamda2)
> u=pdavies(28353.7,params)
> u
> fun=function(u){((26104.50*u^0.03399381)/((1-u)^0.1074444))-28353.7}
> uniroot= uniroot(fun,c(0.01,1))
> uniroot

As Prof. Nash has pointed out, this looks like homework.

Some general advice:  graphics can be very revealing, and are easy to
effect in R.  Relevant method: plot.function(); relevant utility:
abline().  Look at the help for these.


Rolf Turner

Honorary Research Fellow
Department of Statistics
University of Auckland
Stats. Dep't. (secretaries) phone:
         +64-9-373-7599 ext. 89622
Home phone: +64-9-480-4619

More information about the R-help mailing list