Widziałem w samouczku o modelowaniu regresji następujące polecenie:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Co dokładnie robi to polecenie i jaka jest rola ~
(tylda) w poleceniu?
Widziałem w samouczku o modelowaniu regresji następujące polecenie:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Co dokładnie robi to polecenie i jaka jest rola ~
(tylda) w poleceniu?
Odpowiedzi:
Rzecz po prawej <-
to formula
przedmiot. Jest często używany do oznaczenia modelu statystycznego, w którym rzecz po lewej ~
to odpowiedź, a rzecz po prawej ~
to zmienne objaśniające. Tak więc w języku angielskim można powiedzieć coś w rodzaju „Gatunek zależy od długości osobników, szerokości osobników, długości płatków i szerokości płatków” .
myFormula <-
Częścią tej linii przechowuje formuła w obiekcie o nazwie myFormula
więc można go używać w innych częściach kodu R.
Inne typowe zastosowania obiektów formuł w języku R
lattice
Pakiet używa ich do określenia zmiennych na działce . Pakiet używa ich do określenia panele do kreślenia . Pakiet używa ich do niestandardowych evaulation .ggplot2
dplyr
lazyeval
winiety stanowi dobre wprowadzenie do formuły
R definiuje ~
operator (tylda) do użycia w formułach. Formuły mają wiele zastosowań, ale być może najczęstszym jest regresja:
library(datasets)
lm( myFormula, data=iris)
help("~")
lub help("formula")
nauczy cię więcej.
@Spacedman omówił podstawy. Omówmy, jak to działa.
Po pierwsze, będąc operatorem, zauważ, że jest to zasadniczo skrót do funkcji (z dwoma argumentami):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Może to być przydatne w przypadku np apply
. Poleceń rodzinnych.
Po drugie, możesz manipulować formułą jako tekstem :
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Po trzecie, możesz nim manipulować jako listę :
myFormula[[2]]
myFormula[[3]]
Wreszcie, istnieje kilka pomocnych sztuczek z formułami (zobacz help("formula")
więcej):
myFormula <- Species ~ .
Na przykład powyższa wersja jest taka sama jak wersja oryginalna, ponieważ kropka oznacza „wszystkie zmienne jeszcze nieużywane”. Spogląda na ramkę data.frame, której używasz w ostatecznym wywołaniu modelu, widzi, które zmienne istnieją w data.frame, ale nie są wyraźnie wymienione w formule, i zastępuje kropkę tymi brakującymi zmiennymi.
Species~.
, gatunek jest jedyną zmienną, która została użyta. Dlatego zależy to od każdej innej zmiennej w pliku data.frame.
myFormula <- Species ~ .
. Kiedy kropka nadal jest zastępowana zmiennymi z data.frame? Czy możesz podać przykład