I don't know that this is your problem, but I see a potential scoping issue: It is not obvious to me where Dk is getting n0 and w. I've solved this kind of problem in the past by declaring n0 and w as explicit arguments to Dk and then passing them explicitly via "..." in "outer". In general, I prefer to avoid accessing globals from within functions. This may not help you here, but it might help in the future.

hope this helps. spencer graves

Scott Norton wrote:

I'm pulling my hair (and there's not much left!) on this one. Basically I'm
not getting the same result t when I "step" through the program and evaluate
each element separately than when I use the outer() function in the
FindLikelihood() function below.



Here's the functions:



Dk<- function(xk,A,B)

{

n0 *(A*exp(-0.5*(xk/w)^2) + B)

}



FindLikelihood <- function(Nk)

{

A <- seq(0.2,3,by=0.2)

B <- seq(0.2,3,by=0.2)

k <-7

L <- outer(A, B, function(A,B) sum( (Nk*log(Dk(seq(-k,k),A,B))) -
Dk(seq(-k,k),A,B) ))

return(L)

}





where Nk <- c(70 , 67 , 75 , 77 , 74 ,102,  75, 104 , 94 , 74 , 78 , 79 , 83
, 73 , 76)





Here's an excerpt from my debug session..





Nk



[1] 70 67 75 77 74 102 75 104 94 74 78 79 83 73 76




debug(FindLikelihood)





L<-FindLikelihood(Nk)



debugging in: FindLikelihood(Nk)


debug: {

A <- seq(0.2, 3, by = 0.2)

B <- seq(0.2, 3, by = 0.2)

k <- 7

L <- outer(A, B, function(A, B) sum((Nk * log(Dk(seq(-k,

k), A, B))) - Dk(seq(-k, k), A, B)))

return(L)

}

Browse[1]> n

debug: A <- seq(0.2, 3, by = 0.2)

Browse[1]> n

debug: B <- seq(0.2, 3, by = 0.2)

Browse[1]> n

debug: k <- 7

Browse[1]> n

debug: L <- outer(A, B, function(A, B) sum((Nk * log(Dk(seq(-k, k),

A, B))) - Dk(seq(-k, k), A, B)))

Browse[1]> sum((Nk * log(Dk(seq(-k, k),0.2,0.2))) - Dk(seq(-k, k), 0.2,
0.2))      # WHY DOES THIS LINE GIVE ME THE CORRECT RESULT WHEN I SUBSTITUTE
0.2, 0.2 FOR A AND B

[1] 2495.242

Browse[1]> outer(A, B, function(A, B) sum((Nk * log(Dk(seq(-k, k),

+ A, B))) - Dk(seq(-k, k), A, B)))

         [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]
[,8]

[1,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48    # BUT ELEMENT (1,1) WHICH SHOULD ALSO BE (A,B) = (0.2, 0.2),
GIVES THE INCORRECT RESULT????

[2,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[3,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[4,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[5,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[6,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[7,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[8,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[9,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[10,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[11,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[12,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[13,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[14,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[15,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48
58389.48

[,9] [,10] [,11] [,12] [,13] [,14] [,15]

[1,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[2,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[3,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[4,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[5,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[6,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[7,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[8,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[9,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[10,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[11,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[12,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[13,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[14,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

[15,] 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48 58389.48

Browse[1]>



As "commented" above, when I evaluate a single A,B element (i.e. A=0.2,
B=0.2) I get a different result than when I use OUTER() which should also be
evaluating at A=0.2, B=0.2??



Any help appreciated.  I know I'm probably doing something overlooking
something simple, but can anyone point it out???



Thanks!

-Scott



Scott Norton, Ph.D.

Engineering Manager

Nanoplex Technologies, Inc.

2375 Garcia Ave.

Mountain View, CA 94043

www.nanoplextech.com




[[alternative HTML version deleted]]


______________________________________________
[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

Reply via email to