On 17.02.2011 22:10, li li wrote:
Hi all,
    I have some some problem with regard to finding the integral of a
function containing an indicator function.
please see the code below:

func1<- function(x, mu){
   (mu^2)*dnorm(x, mean = mu, sd = 1)*dgamma(x, shape=2)}
m1star<- function(x){
    integrate(func1, lower = 0, upper = Inf,x)$val}
T<- function(x){
    0.3*dnorm(x)/(0.3*dnorm(x)+0.7*m1star(x))}

func2<- function(x,c){(T(x)<=c)*0.3*dnorm(x)}
func3<- function(x,c){(T(x)<= c)*(0.3*dnorm(x)+0.7*m1star(x))}
numer<- function(c){
    integrate(func2, -Inf, Inf, c)$val}

denom<- function(c){
    integrate(func3, lower, Inf,c)$val}



The error message is as below :

numer(0.5)
Error in integrate(func1, lower = 0, upper = Inf, x) :
   the integral is probably divergent


Several problems:

1. Your m1star does not work vectorized which is required here.
This can be fixed by changing the function as follows:

m1star <- function(x){
sapply(x, function(x) integrate(func1, lower = 0, upper = Inf, x = x)$val)
}

2. You will find that func2 calculates T(x). Note that T(x) is not undefined for x=0.

I have not investigated further, but my guess is that your problem needs some rethinking ...

Best,
Uwe Ligges





Thank you very much!
    Hannah

        [[alternative HTML version deleted]]

______________________________________________
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