R viene fornito con diversi manuali, accessibili dal menu "Aiuto" di vanilla R in alto a destra durante l'esecuzione di R e anche in diversi punti online.
Il capitolo 11 di "An Introduction to R" contiene un paio di pagine sulle formule, ad esempio.
Non so che costituisce una risorsa "completa" ma copre molto * di ciò che è necessario sapere su come funzionano le formule.
* In effetti, praticamente tutto quello che forse il 95% degli utenti potrà mai utilizzare
Il riferimento canonico a formule in lingua S potrebbe essere
Chambers J.M., e Hastie T.J., eds. (1992), Modelli statistici in S. Chapman & Hall, Londra.
anche se l'origine del metodo viene da
Wilkinson G.N., e Rogers C.E. (1973). "Descrizione simbolica dei modelli fattoriali per l'analisi della varianza." Statistica Applicata, , 392-399
Una serie di recenti libri relativi alla R discutere formule, ma non so che io chiamerei nessuno di loro completo.
Ci sono anche numerose risorse online (ad esempio here) spesso con una buona dose di informazioni molto utili.
Detto questo, una volta che ci si sente a proprio agio nell'usare le formule in R e quindi avere un contesto in cui è possibile inserire più conoscenze, la pagina di aiuto contiene una quantità sorprendente di informazioni (insieme alle altre pagine a cui si collega). È un po 'conciso e criptico, ma una volta che hai una base più ampia di conoscenza del particolare modo di lavorare di R, può essere abbastanza utile.
Domande specifiche relative alle formule R (a seconda del loro contenuto) sono probabilmente in argomento su StackOverflow o CrossValidated - infatti ci sono alcune domande abbastanza avanzate relative alle formule da trovare già (uso di ricerche come [r] formula
potrebbe essere fruttuoso), e sarebbe utile avere più domande di questo tipo per aiutare gli utenti alle prese con questi problemi; se hai domande specifiche ti incoraggerei a chiedere.
Per quanto riguarda 'ridondante' e 'in conflitto', suppongo vuoi dire le cose come il fatto che non v'è più di un modo per specificare un modello senza intercetta: y ~ . -1
e y ~ . +0
sia il lavoro, per esempio, ma in un po 'diverso contesti ognuno ha un senso.Inoltre, c'è l'errore comune di dover isolare termini quadratici e di ordine superiore dall'interfaccia formula (per usare I(x^2)
come predittore in modo che sia passato l'interfaccia della formula illeso e sopravviva abbastanza da essere interpretato come un'espressione algebrica). Ancora una volta, una volta ottenuta una foto di ciò che accade dietro le quinte, sembra molto meno fastidioso.
Esempi specifici delle cose che ho appena citato:
lm(dist ~ . -1, data=cars) # "remove-intercept-term" form of no-intercept
lm(dist ~ . +0, data=cars) # "make-intercept-zero" form of no-intercept
lm(dist ~ speed + speed^2, data=cars) # doesn't do what we want here
lm(dist ~ speed + I(speed^2), data=cars) # gets us a quadratic term
lm(dist ~ poly(speed,2), data=cars) # avoid potential multicollinearity
Sono d'accordo che l'interfaccia formula poteva almeno usare un po 'ulteriori linee guida ed esempi migliori in ?formula
aiuto.
La ringrazio molto per questa risposta utile. Sono interessato a una panoramica più ampia, ero interessato a includere le specifiche delle variabili nidificate e degli effetti fissi rispetto a quelli casuali. E, non sono 'x + I (x^2)' e 'poly (x, 2)' equivalenti? La tua risposta suggerisce il contrario. Altri aspetti di interesse includono la specifica delle funzioni spline in funzioni come 'gam' (ad es. Con' s' e 'te'). – Abe
In riferimento alla seconda a ultimo paragrafo (circa lo spauracchio) l'uso di 'I' non si limita alla specificazione dei termini polinomiali - è anche necessario specificare altre trasformazioni variabili (tra cui additivo, moltiplicativo, log, esponenziale). – Abe
Questo è corretto per additivo e moltiplicativo, perché hanno un significato per l'interfaccia della formula. ma 'lm (dist ~ log (velocità), data = cars)' funziona come dovrebbe. –