Be careful, I don't think your loglik function is vectorized correctly. In particular, it only works for single values of th1 and th2. If th1 or th2 are vectors, you will get a warning and the wrong answer. The problem is the subtraction u - th1, because u is already vector.
outer() expects that the function you pass in is vectorized and will work elementwise on arrays, not just single values. -roger _______________________________ UCLA Department of Statistics [EMAIL PROTECTED] http://www.stat.ucla.edu/~rpeng On Mon, 17 Mar 2003, Sundar Dorai-Raj wrote: > > > Murray Jorgensen wrote: > > Can some kind person point out my error here? I'm trying to set up a > > grid for a countour plot of a likelihood function. > > > > > u <- rnorm(20,9.5,2.5) > > > # sample of size 20 from N(9.5,2.5^2) > > > loglik <- function(th1,th2) { > > + n <- length(u) > > + -(n/2)*log(2*pi*th2^2)-0.5*sum((u-th1)^2/th2^2) > > + } > > > x <- seq(4.5,14.5,len=50) > > > y <- seq(0.5,6,len=50) > > > f <- outer(x, y, loglik(x,y)) > > Error in match.fun(FUN) : not function, character, or symbol: "loglik(x, > > y)" > > In addition: Warning message: > > longer object length > > is not a multiple of shorter object length in: u - th1 > > > loglik(9,2) > > [1] -44.56294 > > > is.function(loglik) > > [1] TRUE > > > > Thanks, > > > > Murray > > > Murray, > From ?outer: > > Details: > > `FUN' must be a function (or the name of it) which expects at > least two arguments and which operates elementwise on arrays. > > > Thus, use "loglik" and not "loglik(x,y)", as in: > > outer(x,y,loglik) > > Regards, > Sundar > > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help > ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help
