Sir,
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
Query on finding root
4 messages · ASHLIN VARKEY, John C Nash, Rolf Turner +1 more
Homework?
On 2023-08-25 12:47, ASHLIN VARKEY wrote:
Sir,
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
[[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.
1 day later
On Fri, 25 Aug 2023 22:17:05 +0530
ASHLIN VARKEY <ashlinvarkey at 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. cheers, 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
This doesn't look like homework to me -- too specific. The posting guide <https://www.r-project.org/posting-guide.html> says that the list is not intended for "Basic statistics and classroom homework" -- again, this doesn't seem to fall into that category. tl;dr, I think the difference between the two approaches is just whether the lower or upper tail is considered (i.e., adding lower.tail = FALSE to pdavies(), or more simply taking (1-x), makes the two answers agree). If you look at the source code for pdavies() you'll see that it's essentially doing the same uniroot() calculation that you are. ## Q(u)=(c*u^lamda1)/((1-u)^lamda2) mean <- 28353.7 # mean calculated from data lambda1 <- .03399381 # estimates c, lambda1 and lambda2 calculated from data lambda2 <- .1074444 c <- 26104.50 library(Davies)# using package params <- c(c,lambda1,lambda2) u <- pdavies(x = mean, params = params, lower.tail = FALSE) u fun <- function(u) { with(as.list(params), (c*u^lambda1)/((1-u)^lambda2)) - mean } curve(fun, from = 0.01, to = 1) uniroot <- uniroot(fun,c(0.01,1)) abline(h = 0) uniroot$root
On 2023-08-27 5:40 p.m., Rolf Turner wrote:
On Fri, 25 Aug 2023 22:17:05 +0530 ASHLIN VARKEY <ashlinvarkey at 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. cheers, Rolf Turner
Dr. Benjamin Bolker Professor, Mathematics & Statistics and Biology, McMaster University Director, School of Computational Science and Engineering (Acting) Graduate chair, Mathematics & Statistics > E-mail is sent at my convenience; I don't expect replies outside of working hours.