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]]


