2015-06-19 6 views
5

Ich kann nicht ganz herausfinden, wie die folgenden in einer Zeile zu tun:Format von R lm() Formel mit einer Transformation

data(attenu) 
x_temp = attenu$accel^(1/4) 
y_temp = log(attenu$dist) 
best_line = lm(y_temp ~ x_temp) 

Da die oben genannten Arbeiten, dachte ich, ich folgendes tun könnte:

data(attenu) 
best_line = lm(log(attenu$dist) ~ (attenu$accel^(1/4))) 

Aber das gibt den Fehler:

Error in terms.formula(formula, data = data) : invalid power in formula 

Es ist offensichtlich etwas, was ich vermisst habe, wenn vari umgewandelt unter Verwendung kann im Formelformat von R verwendet werden. Warum funktioniert das nicht?

+1

Für die Zukunft, können Sie auch 'lm (log (dist) ~ I (Beschl^(1/4)), data = attenu)' zu vermeiden, jedes Mal zu tun 'Dataset $ varname' . – thelatemail

Antwort

11

Sie suchen die Funktion I, so dass der Operator ^ als arithmetisch in der Formel behandelt wird, dh.

x <- runif(1:100) 
y <- x + rnorm(100,0, 3) 
lm(log(y) ~ I(x^(1/4)) 
+2

Danke! Ich habe heute etwas Neues gelernt. – nfmcclure

Verwandte Themen