Re: [R] dnorm and qnorm
Thank you all for the great help. I think the optimize function and approach solves my problem well. Edwin Sun -- View this message in context: http://r.789695.n4.nabble.com/dnorm-and-qnorm-tp3040427p3041962.html Sent from the R help mailing list archive at Nabble.com. __ 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.
Re: [R] dnorm and qnorm
There is no "reversing the dnorm function" -- dnorm is many to one in general (in the normal case, 2 to 1 except for the mean). How would you "reverse" dunif, for example?! However, with that understanding you could do a simple one dimensional search within the range you want via optimize(), as in > optimize(function(x)abs(dnorm(x) - .3286),lower=-5,upper = 0) ## or use > squared error $minimum [1] -0.6228337 $objective [1] 4.817833e-06 -- Bert On Fri, Nov 12, 2010 at 2:35 PM, Edwin Sun wrote: > > Hello all, > > I have a question about basic statistics. Given a PDF value of 0.328161, > how can I find out the value of -0.625 in R? It is like reversing the dnorm > function but I do not know how to do it in R. > >> pdf.xb <- dnorm(-0.625) > >> pdf.xb > [1] 0.328161 > >> qnorm(pdf.xb) > [1] -0.444997 > >> pnorm(pdf.xb) > [1] 0.628605 > > Many thanks, > > > Edwin > > > -- > View this message in context: > http://r.789695.n4.nabble.com/dnorm-and-qnorm-tp3040427p3040427.html > Sent from the R help mailing list archive at Nabble.com. > > __ > 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. > -- Bert Gunter Genentech Nonclinical Biostatistics __ 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.
Re: [R] dnorm and qnorm
Not sure if there's a pre-defined function for it, but use your basic math skills: the normal distribution is dnorm(x) = 1/(sqrt(2*pi)) * exp(-x^2/2), so the inverse function (on the interval [0, infinity] is f = function(x) {sqrt( -2*log(sqrt(2*pi) * x)) } Since the dnorm function is not 1-to-1, f is strictly speaking not the inverse (since the latter doesn't exist), but it is true that f(dnorm(x)) = abs(x). Test: x = seq(from = -2, to = 2, by = 0.01) plot(x, dnorm(x)) plot(x, f(dnorm(x))) > all.equal(abs(x), f(dnorm(x))) [1] TRUE Note again that f(dnorm(x)) = abs(x), not x, since the dnorm function is not 1-to-1. Peter On Fri, Nov 12, 2010 at 2:35 PM, Edwin Sun wrote: > > Hello all, > > I have a question about basic statistics. Given a PDF value of 0.328161, > how can I find out the value of -0.625 in R? It is like reversing the dnorm > function but I do not know how to do it in R. > >> pdf.xb <- dnorm(-0.625) > >> pdf.xb > [1] 0.328161 > >> qnorm(pdf.xb) > [1] -0.444997 > >> pnorm(pdf.xb) > [1] 0.628605 > > Many thanks, > > > Edwin > > > -- > View this message in context: > http://r.789695.n4.nabble.com/dnorm-and-qnorm-tp3040427p3040427.html > Sent from the R help mailing list archive at Nabble.com. > > __ > 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. > __ 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.
Re: [R] dnorm and qnorm
On Nov 12, 2010, at 5:35 PM, Edwin Sun wrote: Hello all, I have a question about basic statistics. Given a PDF value of 0.328161, how can I find out the value of -0.625 in R? It is like reversing the dnorm function but I do not know how to do it in R. pdf.xb <- dnorm(-0.625) pdf.xb [1] 0.328161 qnorm(pdf.xb) [1] -0.444997 pnorm(pdf.xb) [1] 0.628605 Since only at the mode of dnorm will there be a unique solution, you will need to decide on which side of zero you want to work, apparently the negative side from the expected answer. Then you can use optim or optimize to minimize the difference between dnorm() and 0.328161 for arguments over an appropriate range: > f <- function (x,a) (dnorm(x)-a)^2 > xmin <- optimize(f, c(-1, 0), tol = 0.0001, a =0.328161) > xmin $minimum [1] -0.6250044 $objective [1] 8.71397e-13 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.