2013-04-30 29 views
22

Esistono molti modi ridondanti e talvolta contrastanti per specificare le formule in R. Esiste un riferimento completo ma conciso per mappare i modelli concettuali alla sintassi R rispetto a ?formula?Esiste un riferimento migliore per le formule di r di? Formula?

Sono interessato a una visione ampia, compresa la sintassi utilizzata per specificare le formule di non-lineare e modelli gerarchici, come glm, lmer, gam, earth, tra cui (/) per la nidificazione, random e fixed effetti nei modelli misti e s e te per le spline e altri trovati in pacchetti popolari.

risposta

23

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.

+0

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

+0

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

+0

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. –