web-dev-qa-db-ja.com

R:nlsで自然対数の方程式を使用する

良い一日、

私は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(バツ/305)+ c(バツ/3052 + d ln305/バツ)+ f ln2305/バツ

方程式を使用するためにRで次の構文を使用することは正しいですか?

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

Rのnls()でこの関数を使用するという考えです。事前に感謝します!

9
wernerfeuer

Rでは、logは自然対数です。計算機では、logは通常、10を底とする対数を意味します。 Rでそれを実現するには、log10 関数。

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

logは自然対数なので、数式については正しいようです。

19
alko989

さらに、私はあなたのモデルが

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)
4
user20637

Rでは、logは対数を計算します。デフォルトでは自然対数、log10は一般的な(つまり、基数10)対数を計算し、log2はバイナリ(つまり、基数2)対数を計算します。一般的な形式log(x、base)は、baseを使用して対数を計算します。( "R Documentation")

0