R:在nls中使用自然对数方程

R:在nls中使用自然对数方程,r,nonlinear-functions,natural-logarithm,R,Nonlinear Functions,Natural Logarithm,你好 我正在与R和自然对数(ln)作斗争。首先,我在R中找不到ln(x)函数。我注意到log(x)与ln(x)相同(当使用ln(x)和计算器时) 在R中: 使用计算器: ln(5) = 1.609438 log(5) = 0.69897 我试图在R中拟合一个方程(这正是我在3篇参考文献中发现的): y=a+b(x/305)+c(x/305)2+d ln(305/x)+f ln2(305/x) 在R中使用以下语法来使用公式是否正确 y ~ a + b*(x/305) + c*((x/305)^2

你好

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

在R中:

使用计算器:

ln(5) = 1.609438
log(5) = 0.69897
我试图在R中拟合一个方程(这正是我在3篇参考文献中发现的):

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

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

y ~ a + b*(x/305) + c*((x/305)^2) + d*log(305/x) + f*(log(305/x))^2
其思想是将此函数与R中的nls()一起使用。
提前谢谢

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

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

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

此外,我将指出你的模型

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之类的术语

ETA示例:

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)

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

log
在R中表示自然对数。这是数学家的惯例,因为“普通”对数没有数学意义。“ln”缩写是为了减少学生对事物的混淆而引入的。你不需要计算器来找出
log
的作用。您只需阅读文档:
帮助(“日志”)
。你的公式看起来正确。谢谢你的回答!我也有同样的期望,只是需要确认。再次感谢!请格式化你的答案。你可以在以下网址找到相关信息和提示:
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)