Here is an example showing how to use variable transformation:

        k <- 5

        myfn <- function(x, k) exp(-k * x^2)  # this is the integrand over
(-Inf, +Inf)

        # Integration using `integrate' function

        ans1 <- integrate(myfn, lower=-Inf, upper=Inf, k=k)$val

        # Now we integrate using Gauss-Hermite quadrature

        require(statmod)

        n <- 10

        gherm <- gauss.quad(n, kind="hermite")

        myfn.new <- function(x) 1

        mu <- 0

        sigma <- 1/sqrt(k)

        # following line shows how to use variable transformation 

        ans2 <- sum(gherm$weights * sigma * myfn.new(sigma*gherm$nodes +
mu))  

        ans2

        all.equal(ans1, ans2)
         
Hope this helps,
Ravi.

-----Original Message-----
From: Ines Azaiez [mailto:iaza...@mit.edu] 
Sent: Thursday, April 15, 2010 11:32 AM
To: Ravi Varadhan; r-help-boun...@stat.math.ethz.ch; r-help@r-project.org
Subject: RE: [R] Gaussian Quadrature Numerical Integration In R

Hi Ravi,
Thanks for your response. I already considered the change of variables but I
was wondering if there were already a function in R which do the same thing
in an optimized way. My function f(x) is complicated so adding a change of
variable makes the algorithm takes a lot of time to give outputs.
Thanks,
Iazaiez.
________________________________________
From: Ravi Varadhan [rvarad...@jhmi.edu]
Sent: Wednesday, April 14, 2010 12:50 PM
To: Ines Azaiez; r-help-boun...@stat.math.ethz.ch; r-help@r-project.org
Subject: RE: [R] Gaussian Quadrature Numerical Integration In R

Just do a variable transformation. If your function is f(x), your new
function would be:
        f'(x) = sigma * f(sigma * x + mu).  You can integrate f'(x) using
the Hermite quadrature.

Ravi.

-----Original Message-----
From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On
Behalf Of Ines Azaiez
Sent: Tuesday, April 13, 2010 9:25 PM
To: r-help-boun...@stat.math.ethz.ch; r-help@r-project.org
Subject: [R] Gaussian Quadrature Numerical Integration In R

Hi All,

I am trying to use A Gaussian quadrature over the interval (-infty,infty)
with weighting function W(x)=exp(-(x-mu)^2/sigma) to estimate an integral.
Is there a way to do it in R? Is there a function already implemented which
uses such weighting function.
I have been searching in the statmode package and I found the function
"gauss.quad(100, kind="hermite")" which uses the weighting function
W(x)=exp(-x^2). Is there a more general version of this weighting function
(using mu and sigma)?

Thanks for your help

Iazaiez
______________________________________________
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.

Reply via email to