In einem Tutorial zur Regressionsmodellierung habe ich den folgenden Befehl gesehen:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Was genau macht dieser Befehl und welche Rolle spielt ~
(Tilde) im Befehl?
In einem Tutorial zur Regressionsmodellierung habe ich den folgenden Befehl gesehen:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Was genau macht dieser Befehl und welche Rolle spielt ~
(Tilde) im Befehl?
Antworten:
Das Ding rechts von <-
ist ein formula
Objekt. Es wird oft verwendet, um ein statistisches Modell zu bezeichnen, bei dem das Ding links von ~
der Antwort und das Ding rechts von ~
die erklärenden Variablen sind. Auf Englisch würde man also so etwas wie "Arten hängen von der Länge der Kelchblätter, der Breite der Kelchblätter, der Länge der Blütenblätter und der Breite der Blütenblätter ab" sagen .
Der myFormula <-
Teil dieser Zeile speichert die Formel in einem aufgerufenen Objekt, myFormula
damit Sie sie in anderen Teilen Ihres R-Codes verwenden können.
Andere häufige Verwendungen von Formelobjekten in R.
Das lattice
Paket verwendet sie, um die zu plottenden Variablen anzugeben .
Das ggplot2
Paket verwendet sie, um Panels zum Plotten anzugeben .
Das dplyr
Paket verwendet sie für nicht standardmäßige Auswertungen .
lazyeval
Vignette gibt eine gute Einführung in eine Formel
R definiert einen ~
(Tilde-) Operator zur Verwendung in Formeln. Formeln haben alle möglichen Verwendungszwecke, aber die häufigste ist die Regression:
library(datasets)
lm( myFormula, data=iris)
help("~")
oder help("formula")
wird dir mehr beibringen.
@Spacedman hat die Grundlagen abgedeckt. Lassen Sie uns diskutieren, wie es funktioniert.
Beachten Sie als Operator zunächst, dass es sich im Wesentlichen um eine Verknüpfung zu einer Funktion handelt (mit zwei Argumenten):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Dies kann hilfreich sein, um z apply
. B. Familienbefehle zu verwenden.
Zweitens können Sie die Formel als Text bearbeiten :
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Drittens können Sie es als Liste bearbeiten :
myFormula[[2]]
myFormula[[3]]
Schließlich gibt es einige hilfreiche Tricks mit Formeln (siehe help("formula")
mehr):
myFormula <- Species ~ .
Die obige Version ist beispielsweise dieselbe wie die Originalversion, da der Punkt "alle Variablen, die noch nicht verwendet wurden" bedeutet. Dabei wird der data.frame betrachtet, den Sie in Ihrem eventuellen Modellaufruf verwenden, welche Variablen im data.frame vorhanden sind, aber in Ihrer Formel nicht explizit erwähnt werden, und der Punkt wird durch diese fehlenden Variablen ersetzt.
Species~.
ist Spezies die einzige Variable, die verwendet wurde. Daher hängt es von jeder anderen Variablen im data.frame ab.
myFormula <- Species ~ .
. Wann wird der Punkt noch durch Variablen aus data.frame ersetzt? Könnten Sie ein Beispiel geben