R: Using equation with natural logarithm in nls
Asked Answered
S

3

21

Good day,

I am struggling with R and natural logarithm (ln). Firstly, I cannot find a ln(x) function in R. I have noticed that log(x) is the same as ln(x) (when using ln(x) with a calculator).

In R:

log(5) = 1.609438

And with a calculator:

ln(5) = 1.609438
log(5) = 0.69897

I'm trying to fit an equation in R (this is exactly how I found in the literature of 3 references):

y = a + b(x/305) + c(x/305)2 + d ln(305/x) + f ln2(305/x)

Is it correct to use the following syntax in R to use the equation?

y ~ a + b*(x/305) + c*((x/305)^2) + d*log(305/x) + f*(log(305/x))^2

The idea is to use this function with nls() in R. Thanks in advance!

Sherellsherer answered 19/6, 2014 at 10:59 Comment(2)
log in R means the natural logarithm. This is the convention of mathematicians, since "common" logarithms have no mathematical interest. The "ln" abbreviation is something that was introduced to make things less confusing to students.Varion
You do not need a calculator to find out what log does. You only need to read the documentation: help("log"). Your formula looks correct.Malfeasance
A
42

In R, log is the natural logarithm. In calculators, log usually means base 10 logarithm. To achieve that in R you can use the log10 function.

log(5)
## [1] 1.609438
log10(5)
## [1] 0.69897

As for your formula, it seems correct, since log is the natural logarithm.

Asparagus answered 19/6, 2014 at 11:19 Comment(1)
Thanks for the answer! I expected as much and just needed conformation. Thanks again!Sherellsherer
L
4

In addition I will point out that your model

y ~ a + b*(x/305) + c*((x/305)^2) + d*log(305/x) + f*(log(305/x))^2

is linear in the statistical sense of being linear in the coefficients; it doesn't need to be linear in x.

You don't need nls to fit this model, you could use lm().

But remember to look at the I() function to express terms like (x/305)^2.

ETA example:

aDF <- data.frame(x=abs(rnorm(100)), y=rnorm(100))
lm(y ~ 1 + I(x/305) + I((x/305)^2) + log(305/x) + I(log(305/x)^2), data=aDF)
Lubet answered 19/6, 2014 at 12:15 Comment(0)
S
1

In R, log computes logarithms, by default natural logarithms, log10 computes common (i.e., base 10) logarithms, and log2 computes binary (i.e., base 2) logarithms. The general form log(x, base) computes logarithms with base.("R Documentation")

Shaitan answered 3/9, 2019 at 16:3 Comment(1)
Please, format your answer. You can find info and tips about it at stackoverflow.com/help/how-to-answerAffluent

© 2022 - 2024 — McMap. All rights reserved.