R: Использование уравнения с натуральным логарифмом в nls

Добрый день,

Я борюсь с R и натуральным логарифмом (ln). Во-первых, я не могу найти функцию ln(x) в R. Я заметил, что log(x) совпадает с ln(x) (при использовании ln(x) с калькулятором).

In R:

log(5) = 1.609438

И с калькулятором:

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

Я пытаюсь подобрать уравнение в R (именно так я нашел в литературе 3 ссылки):

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

Правильно ли использовать следующий синтаксис в R для использования уравнения?

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

Идея состоит в том, чтобы использовать эту функцию с nls() в R. Заранее спасибо!


person wernerfeuer    schedule 19.06.2014    source источник
comment
log в R означает натуральный логарифм. Это соглашение математиков, поскольку десятичные логарифмы не представляют математического интереса. Аббревиатура ln была введена, чтобы не сбивать студентов с толку.   -  person James King    schedule 19.06.2014
comment
Вам не нужен калькулятор, чтобы узнать, что делает log. Вам нужно только прочитать документацию: help("log"). Ваша формула кажется правильной.   -  person Roland    schedule 19.06.2014


Ответы (3)


В R log — натуральный логарифм. В калькуляторах логарифм обычно означает логарифм по основанию 10. Для этого в R вы можете использовать функцию log10.

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

Что касается вашей формулы, то она кажется правильной, так как log — натуральный логарифм.

person alko989    schedule 19.06.2014
comment
Спасибо за ответ! Я ожидал этого и просто нуждался в конформации. Спасибо еще раз! - person wernerfeuer; 19.06.2014

В дополнение отмечу, что ваша модель

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

линейна в статистическом смысле линейности коэффициентов; он не должен быть линейным по x.

Вам не нужен nls, чтобы соответствовать этой модели, вы можете использовать lm().

Но не забудьте взглянуть на функцию I() для выражения таких терминов, как (x/305)^2.

Пример расчетного времени прибытия:

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)
person user20637    schedule 19.06.2014

В R log вычисляет логарифмы, по умолчанию натуральные логарифмы, log10 вычисляет обычные (т. е. по основанию 10) логарифмы, а log2 вычисляет двоичные (т. е. по основанию 2) логарифмы. Общая форма log(x, base) вычисляет логарифмы по основанию. ("Документация R")

person Jackson Thounaojam    schedule 03.09.2019
comment
Пожалуйста, отформатируйте свой ответ. Вы можете найти информацию и советы по этому поводу на странице stackoverflow.com/help/how-to-answer. - person Ignacio Lago; 03.09.2019