[R] integration function

Peter Ehlers ehlers at ucalgary.ca
Sat Jun 25 19:07:58 CEST 2011


On 2011-06-25 08:48, li li wrote:
> Hi all,
>     Can anyone please take a look at the following two functions.
> The answer does not seem to be right.
>     Thank you very much!
>
> f1<- function(x)
>
>      {integrand<- function (x, mu){
>
>      dnorm(x, mean=mu, sd=1)*dnorm(mu, mean=2, sd=1)
>
>                                     }
>
>      integrate(integrand, -Inf, Inf,x)$val
>
>      }
>
>
> f2<- function(x)
>
>      {integrand<- function (x, mu){
>
>      dnorm(x, mean=mu, sd=1)*mu^2*dnorm(mu, mean=2, sd=1)
>
>                                     }
>
>      integrate(integrand, -Inf, Inf,x)$val
>
>      }

Your x and mu will get mightily confused.
The argument x in f1 is in fact used as the argument mu
in integrand() because, as the help page clearly indicates,
additional arguments follow the lower/upper limits in integrate().

A cleaner version of what you're doing is the following:

  f1 <- function(mu){
    integrand <- function (x, mu){
      dnorm(x, mean=mu, sd=1) * dnorm(mu, mean=2, sd=1)
    }
    integrate(integrand, -Inf, Inf, mu)[["value"]]
  }

But then again, you could just evaluate dnorm(mu, 2, 1).
So I suspect that you want something different.

Ditto for f2.

Peter Ehlers

>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list