2014-06-19 17 views
6

Dzień dobry,R: Wykorzystując równanie z logarytmu naturalnego w nls

walczę z R i logarytmu naturalnego (ln). Po pierwsze, nie mogę znaleźć funkcji ln (x) w R. Zauważyłem, że log (x) jest taki sam jak ln (x) (przy użyciu ln (x) z kalkulatorem).

W R:

log(5) = 1.609438 

I z kalkulatora:

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

Próbuję dopasować równanie w R (jest to dokładnie jak znalazłem w literaturze 3 referencje) :

Y = A + b (x/) + C (x/) + d LN (/ x) + f LN (/ x)

jest to prawidłowe użycie następujących składnia w R, aby użyć równania?

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

Chodzi o to, aby skorzystać z tej funkcji z NLS() w R. Dzięki z góry!

+1

'log' w R oznacza logarytm naturalny. Jest to konwencja matematyków, ponieważ "wspólne" logarytmy nie mają żadnego interesu matematycznego. Skrót "ln" jest czymś, co zostało wprowadzone w celu uczynienia rzeczy mniej dezorientującymi dla uczniów. –

+2

Nie potrzebujesz kalkulatora, aby dowiedzieć się, co robi "log". Musisz tylko przeczytać dokumentację: 'help (" log ")'. Twoja formuła wygląda poprawnie. – Roland

Odpowiedz

13

W języku R, log jest logarytmem naturalnym. W kalkulatorach log zwykle oznacza logarytm podstawowy 10. Aby to osiągnąć w R możesz użyć funkcji log10.

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

chodzi o formule, wydaje się słuszne, gdyż log to logarytm naturalny.

+0

Dzięki za odpowiedź! Spodziewałem się takiej konformacji. Dzięki jeszcze raz! – wernerfeuer

4

Ponadto będę podkreślić, że model

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

jest liniowy w sensie statystycznym jest liniowa w współczynników; nie musi być liniowy na x.

Nie potrzebujesz nls do dopasowania tego modelu, możesz użyć lm().

Ale pamiętaj, aby spojrzeć na funkcję I(), aby wyrazić terminy takie jak (x/305)^2.

ETA przykład:

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)