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は自然対数です。電卓では、対数は通常、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() を使用できます。

ただし、(x/305)^2 のような用語を表す I() 関数を確認することを忘れないでください。

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

R では、log は対数を計算します。デフォルトでは自然対数、log10 は常用 (つまり、10 を底とする) 対数を計算し、log2 は 2 進 (つまり、2 を底とする) 対数を計算します。一般的な形式 log(x, base) は、base を使用して対数を計算します ("R Documentation")

于 2019-09-03T16:03:59.040 に答える