[R] strange differences in vector operation versus manual calculation

Petr Savicky savicky at cs.cas.cz
Wed May 2 18:58:20 CEST 2012


On Wed, May 02, 2012 at 11:42:27AM -0400, Rajarshi Guha wrote:
> Hi, I'm running a calculation in two ways. The first way is to employ
> vectors and evaluate a function in one go. The second way is to break
> down the function into pieces and combine the pieces to the final
> answer.
> 
> Algebraically, they should give me the same result. But the final
> vector differs significantly. I must be missing something very
> obvious, but I just cannot see it
> 
> xx <- c(-9.56305825951348, -8.20220288142583, -6.84134750333818,
> -5.48049212525052,
>         -4.11963674716287)
> params <- structure(c(-7.9292094394, 4.9549173134, 4.738588416, 101.5743644892
>                      ), .Names = c("LOG_AC50", "HILL_COEF",
> "INF_ACTIVITY", "ZERO_ACTIVITY"
>                           ))
> yy <- params[4] + (params[3] - params[4])/(1 + 10^(params[1]-xx)^params[2])
> 
> t1 <-  10^(params[1]-xx)
> t2 <- params[3] - params[4]
> t3 <- (1+t1)^params[2]
> t4 <- t2/t3;
> t5 <- params[4] + t4
> 
> I would've expected yy and t5 to be the same; yet they are not

Hi.

The difference is caused by different placement of parenthesis.
Replacing

  (1 + 10^(params[1]-xx)^params[2])

by

  (1 + 10^(params[1]-xx))^params[2]

yields

  [1] 101.574364 101.057295  35.949148   6.428122   4.812942

which is equal to t5.

Petr Savicky.



More information about the R-help mailing list