A. Pollice - STATISTICA MULTIVARIATA Modello lineare generale e modelli lineari generalizzati lm() La funzione lm() è utilizzata per la stima di modelli lineari generali, ovvero modelli di regressione, di analisi della varianza e della covarianza. Si utilizza il comando stima.mod<-lm(formula,data,...) dove data è il data frame che contiene le variabili da analizzare e formula specifica l’espressione del modello lineare in termini simbolici, tipicamente nella forma y~x1+...+xp dove y, x1,...,xp sono rispettivamente i vettori che contengono le osservazioni della variabile risposta (quantitativa) e di p variabili esplicative (non necessariamente quantitative). L’intercetta viene automaticamente inclusa nel modello stimato, e qualora si voglia ometterla bisogna specificare il modello nella forma y~-1+x1+...+xp Si possono includere nel modello termini che tengono conto delle interazioni tra variabili esplicative (ad esempio x1 e x2) nel modo seguente y~x1+...+xp+x1:x2 Inoltre si può specificare un modello "completo" che tenga conto di tutte le variabili esplicative e delle interazioni tra le stesse. Ad esempio per x1, x2 e x3 la formula y~x1*x2*x3 equivale alla formula y~x1+x2+x3+x1:x2+x2:x3+x1:x3+x1:x2:x3. Il risultato della funzione lm(), ovvero l'oggetto stima.mod, è una lista composta da numerosi elementi che riguardano tutti la stima del modello. I principali sono i vettori stima.mod$coefficient, che contiene la stima dei coefficienti del modello, stima.mod$residuals, che contiene i residui e stima.mod$fitted.values che contiene i valori teorici stimati con il modello di regressione. Vi sono diverse funzioni che possono essere applicate agli oggetti prodotti tramite la funzione lm(), in particolare summary(): risultato convenzionale di un'analisi di regressione; deviance(): somma dei quadrati dei residui; anova(): tabella di analisi della varianza riferita alla stima del modello; plot(): grafici diagnostici della bontà della stima del modello: • Grafico dei residui contro i valori teorici: può rivelare la presenza di una dipendenza residua sistematica non individuata dal modello lineare stimato. In un buon modello questo grafico dovrebbe apparire come completamente accidentale; • Normal q-q plot dei residui standardizzati: verifica visuale dell'assunzione di normalità della componente erratica del modello lineare. Quanto più i punti che rappresentano i residui ordinati giacciono in prossimità della linea q-q, tanto più plausibile è detta assunzione; • Grafico delle radici quadrate dei residui standardizzati contro i valori teorici: utile nell'individuazione di osservazioni anomale e per visualizzare strutture di dipendenza residue non individuate dal modello stimato; • Grafico delle distanze di Cook: misure dell'influenza di ciascuna osservazione individuale sulla stima dei parametri del modello. influence.measures(): misure diagnostiche per verificare la presenza di osservazioni anomale; predict(): valori teorici stimati per osservazioni diverse da quelle utilizzate per la stima del modello. Infine, oltre alle funzioni contenute nel package base della distribuzione di R vi sono altri tre packages scaricabili da CRAN che contengono molte altre funzioni utili per la stima di modelli lineari e la verifica del buon adattamento: acepack, car, lmtest. drop1(), add1(), step() Le funzioni drop1(mod, form,...) e add1(mod, form,...) permettono di eliminare/aggiungere singole variabili esplicative da/ad un modello lineare già stimato. Vanno specificati un modello di partenza (mod) e una formula (form) che individua le variabili da eliminare/aggiungere. Vengono stimati tutti i modelli ottenibili eliminando/aggiungendo al modello specificato una variabile di quelle indicate e vengono calcolati degli indici di adattamento per ciascun modello ottenuto. La funzione step(mod, form, direction=, keep=,...) sceglie le covariate del modello tramite un algoritmo stepwise basato sull'AIC (Akaike Information Criterion: AIC=-2*verosim. mass.+2*#param.), utilizzando iterativamente le funzioni drop1() e add1(). L'opzione direction= serve a scegliere la modalità di selezione delle variabili ("forward", "backward", "both"), mentre l'opzione keep= permette di specificare le variabili da tenere nel modello anche se scarsamente significative. aov() Calcola l'analisi della varianza. Sintassi analoga a quella della funzione lm(), produce come output una tradizionale tabella di analisi della varianza. Funzioni print() e summary() per oggetti creati tramite aov(). gls() [package nlme] La funzione gls(formula, data, correlation=, weights=,...) serve a stimare i parametri di un modello lineare generale attraverso il metodo dei minimi quadrati generalizzati. In tal caso si può assumere che le osservazioni siano correlate e/o non abbiano la stessa varianza. L'opzione correlation= permette di specificare un oggetto che individui la struttura della correlazione tra le osservazioni. Per informazioni sui diversi tipi di strutture di correlazione disponibili in R e sui comandi corrispondenti consultate ?corClasses. L'opzione weights= permette di specificare un oggetto che individui la struttura della variabilità delle osservazioni. Per informazioni sui diversi tipi di strutture di variabilità disponibili in R e sui comandi corrispondenti consultate ?varClasses. Funzioni print(), plot() e summary() per oggetti creati tramite gls(). glm() La funzione glm(formula, family =, data,...) serve per stimare i modello lineari generalizzati. In questo caso nella formula vengono specificate la variabile risposta e le variabili antecedenti presenti nel predittore lineare, mentre l'argomento family riguarda la distribuzione della variabile risposta e la funzione link. Per informazioni sulle diverse distribuzioni e funzioni link disponibili e sulla relativa sintassi consultate ?family. Il risultato della funzione glm() è una lista che contiene varie informazioni sul modello stimato. Anche in questo caso tra gli elementi principali della lista vi sono i vettori $coefficients, $residuals , $fitted.values, $deviance e $aic. Funzioni anova() e summary() per oggetti creati tramite glm().