17

再会,

我正在与 R 和自然对数 (ln) 作斗争。首先,我在 R 中找不到 ln(x) 函数。我注意到 log(x) 与 ln(x) 相同(将 ln(x) 与计算器一起使用时)。

在 R 中:

log(5) = 1.609438

并使用计算器:

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

我试图在 R 中拟合一个方程(这正是我在 3 个参考文献中找到的方法):

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

在 R 中使用以下语法来使用等式是否正确?

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

这个想法是在 R 中将此函数与 nls() 一起使用。提前致谢!

4

3 回答 3

35

在 R 中,log是自然对数。在计算器中,log 通常表示以 10 为底的对数。要在 R 中实现这一点,您可以使用该log10功能。

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

至于你的公式,它似乎是正确的,因为log它是自然对数。

于 2014-06-19T11:19:31.397 回答
4

另外我会指出你的模型

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)
于 2014-06-19T12:15:37.933 回答
0

在 R 中,log 计算对数,默认情况下为自然对数,log10 计算常用(即以 10 为底)对数,log2 计算二进制(即,以 2 为底)对数。一般形式 log(x, base) 用 base 计算对数。(“R 文档”)

于 2019-09-03T16:03:59.040 回答