Ho visto in un tutorial sulla modellazione della regressione il seguente comando:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Cosa fa esattamente questo comando e qual è il ruolo di ~
(tilde) nel comando?
Ho visto in un tutorial sulla modellazione della regressione il seguente comando:
myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width
Cosa fa esattamente questo comando e qual è il ruolo di ~
(tilde) nel comando?
Risposte:
La cosa a destra di <-
è un formula
oggetto. Viene spesso usato per indicare un modello statistico, in cui la cosa a sinistra della ~
è la risposta e le cose a destra della ~
sono le variabili esplicative. Quindi in inglese diresti qualcosa del tipo "Le specie dipendono da Lunghezza sepale, Larghezza sepale, Lunghezza petalo e Larghezza petalo" .
La myFormula <-
parte di quella riga memorizza la formula in un oggetto chiamato in myFormula
modo da poterla utilizzare in altre parti del codice R.
Altri usi comuni degli oggetti formula in R
Il lattice
pacchetto li usa per specificare le variabili da tracciare .
Il ggplot2
pacchetto li utilizza per specificare i pannelli per la stampa .
Il dplyr
pacchetto li usa per l'evaulazione non standard .
lazyeval
vignetta offre una buona introduzione a ciò che è una formula
R definisce un ~
operatore (tilde) da utilizzare nelle formule. Le formule hanno tutti i tipi di usi, ma forse il più comune è per la regressione:
library(datasets)
lm( myFormula, data=iris)
help("~")
o help("formula")
ti insegnerà di più.
@Spacedman ha trattato le basi. Discutiamo come funziona.
Innanzitutto, essendo un operatore, nota che si tratta essenzialmente di un collegamento a una funzione (con due argomenti):
> `~`(lhs,rhs)
lhs ~ rhs
> lhs ~ rhs
lhs ~ rhs
Ciò può essere utile da sapere, ad esempio apply
, per i comandi familiari.
In secondo luogo, puoi manipolare la formula come testo :
oldform <- as.character(myFormula) # Get components
myFormula <- as.formula( paste( oldform[2], "Sepal.Length", sep="~" ) )
Terzo, puoi manipolarlo come un elenco :
myFormula[[2]]
myFormula[[3]]
Infine, ci sono alcuni trucchi utili con le formule (vedi help("formula")
di più):
myFormula <- Species ~ .
Ad esempio, la versione precedente è la stessa della versione originale, poiché il punto indica "tutte le variabili non ancora utilizzate". Questo esamina il data.frame che usi nella tua eventuale chiamata del modello, vede quali variabili esistono nel data.frame ma non sono esplicitamente menzionate nella tua formula e sostituisce il punto con quelle variabili mancanti.
Species~.
, la specie è l'unica variabile che è stata utilizzata. Pertanto, dipende da ogni altra variabile in data.frame.
myFormula <- Species ~ .
. Quando il punto sarà ancora sostituito con variabili da data.frame? Potresti fornire un esempio