[R] how to use quadrature to integrate some complicated functions

David Winsemius dwinsemius at comcast.net
Tue Nov 8 17:20:57 CET 2011


On Nov 8, 2011, at 9:43 AM, R. Michael Weylandt wrote:

> Have you tried wrapping it in a function and using integrate()? R is  
> pretty good at handling numerical integration. If integrate() isn't  
> good for you, can you say more as to why?
>
> Michael
>
>
> On Nov 6, 2011, at 4:15 PM, JeffND <Zuofeng.Shang.5 at nd.edu> wrote:
>
>> Hello to all,
>>
>> I am having trouble with intregrating a complicated uni-dimensional  
>> function
>> of the following form
>>
>> Phi(x-a_1)*Phi(x-a_2)*...*Phi(x-a_{n-1})*phi(x-a_n).
>>
>> Here n is about 5000, Phi is the cumulative distribution function of
>> standard normal,
>> phi is the density function of standard normal, and x ranges over
>> (-infty,infty).
>>

The density of a standard normal is very tractable mathematically. Why  
wouldn't you extract the arguments and sum them before submitting to  
integration ... which also might not be needed since pnorm could  
economically provide the answer. Perhaps with limits a, b:

suitable_norm_factor*
    pnorm(
      dnorm( sum(x-a_1, x-a_2, ..., x-a_{n-1}, x-a_n) ), a,  
lower.tail=FALSE) ) -
    pnorm(
      dnorm( sum(x-a_1, x-a_2, ..., x-a_{n-1}, x-a_n) ), b,  
lower.tail=FALSE) ) )


>> My idea is to to use quadrature to handle this integral. But since  
>> Phi has
>> not cloaed form,
>> I don't know how to do this effeciently. I appreciate very much if  
>> someone
>> has any ideas about it.

If efficiency is desired ... use mathematical theory to maximum extent  
before resorting to pickaxes.

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list