Hello,
  I want to write a function calculating posterior probability.
  Can anyone help have a look at the following program? Here function f is
what I eventually
need. It is related to function f1, f2 and f3. The argument x is a vector.
I get evaluation errors here.
  Thank you very much!


> f1 <- function(p, x, i)
+   {
+     b <- p*dnorm(x[i], 2,1)
+     a <- (1-p)*dnorm(x[i], 0,1)
+     r <- a/(a +b)
+     return(r)
+    }
>
> f2 <- function (p,x)
+   {
+    a <- p*dnorm(x, 2,1)
+    b <- (1-p)*dnorm(x,0,1)
+    prod(a+b)
+   }
>
> f3 <- function(x,alpha, beta)
+     {
+       integrand <- function(p,x,alpha, beta)
+           {
+            f2(p,x)*dbeta(p, alpha, beta)
+          }
+       integrate(Vectorize(integrand, Vectorize.args =c("p")),  0,1, x,
alpha, beta)$val
+      }
>
> f <- function(x, i, alpha, beta)
+    {
+    integrand <-function(p,x,i, alpha, beta)
+      {
+        f1(p, x, i)*f2(p,x)*dbeta(p, alpha, beta)
+       }
+
+    integrate(Vectorize(integrand,vectorize.args =c("p")),  0, 1,x,i,
alpha, beta)$val/f3(x, alpha, beta)
+      }
>
> w<- seq(-2,2,by=0.1)
> prob <- numeric(length(w))
> for (i in 1:length(w)) { prob[i] <- f(w,i,2,3)}
Error in eval(expr, envir, enclos) :
  ..1 used in an incorrect context, no ... to look in

	[[alternative HTML version deleted]]


