La regressione lineare semplice: gli OUTLIERS
A tal proposito, prendiamo un dataset già esistente in R:
#il comando data() carica nel nostro environment il dataset "anscombe" presente in R
data(anscombe)
str(anscombe)
Modello di regressione lineare semplice:
#ricordiamo che la funzione R da usare per la regressione lineare è lm()
#lm() richiede la specificazione del modello (y ~ x)
mod1 <- lm(anscombe$y3 ~ anscombe$x3)
summary(mod1)
Vediamo ora la relazione tra la variabile dipendente y e quella indipendente x con un grafico a dispersione:
plot(anscombe$x3, anscombe$y3) # con "pch=20" abbiamo dei pallini pieni
abline(coefficients(mod1),col=2)
Notiamo un valore particolarmente anomalo rispetto agli altri. Visualizziamo quindi i residui:
plot(residuals(mod1), xlab="Osservazione", ylab = "Residui")
residuo per la terza osservazione e' un po' anomalo! Escludiamo quindi la terza osservazione, creando un database ridotto:
```html
no.out=anscombe[-3,]
``` Remark: il -3 prima dell virgola dentro le parentesi quadre mi fa escludere la riga n.3, ossia la terza osservazione. Ristimo quindi il modello con il database risotto, senza l'outlier: ```htmlmod1.noout <- lm(no.out$y3 ~ no.out$x3)
summary(mod1.noout)
``` Verifico di nuovo l'andamento dei residui: ```htmlplot(mod1.noout$residuals, xlab="Osservazione", ylab = "Residui")
``` Vediamo adesso in un unico grafico i miei dati e la retta di regressione stimata con il database completo (compreso outlier) e database ridotto (senza outlier): ```htmlplot(anscombe$x3, anscombe$y3, main = "Stima della retta di regressione",xlab = "X", ylab="Y")
abline(coefficients(mod1),col=2)
``` Remark: abline() aggiunge una retta ad un grafico già esistente dandogli i due coefficienti, abline() capisce i parametri della retta.
rettaabline(coefficients(mod1.noout),col=3)#legend ci inserisce una legenda nel grafico esistente
<legend>"topleft", c("Con outlier", "Senza outlier"),col = c("red", "green"), lwd = 1</legend>
# Quindi, uno o piu' outlier possono inficiare la nostra stima e portarci
# a conclusioni fuorvianti. Conviene percio' capire quando un dato e' da
# escludere o meno.
# Nel caso in questione, eliminare l'outlier vuol dire incrementare
# sensibilmente l'R^2, che addirittura assume valore 1, in quanto 2
# la retta interpola perfettamente tutti i dati.
# 14. Modello con variabile esplicativa dummy ---------------------------------
# Il regressore e' una variabile binaria.
# Riprendiamo il dataset "cascschool" che abbiamo analizzato la volta precendente..
dati <- read.csv("caschool.csv", header=T, dec=".", sep=",")
#Remark: read.csv() e' la funzioni in R per importare automaticamente un
dataset, #di cui specifico:
#header = T. Cioe' la prima riga avra' i nomi delle variabili e non
#verra' considerata come osservazione
#dec = "." e sep = ","
#Nota bene: quando si importa il db deve stare nella stessa cartella
#dello script R che abbiamo aperto
# Creiamo ora una Funzione indicatrice:
# ossia, una funzione che vale 1 se il rapporto studenti/insegnanti < 20
# e vale 0 altrove (quindi, quando quest'ultimo e' pari a 20 o e' maggiore)
dummy.str = I(dati$str<20)
mod2 <- lm(dati$testscr ~ dummy.str)
summary(mod2)
# Se plottiamo il diagramma a dispersione tra la variabile binaria e
# la variabile dipendente (punteggio medio dei test) e sovrapponiamo una retta,
# capiamo che, in tal caso, tale grafico non ha molto senso, in quanto
# beta1 non puo' essere vista come la pendenza della retta di regressione,
# dal momento che "dummy.str" non e' una variabile continua, bensi'
# una variabile binaria (puo'
plot(dummy.str, dati$testscr, xlim=c(-1,2), ylim=c(600,720), pch=20, ylab="Punteggio test")
abline(coefficients(mod2), lwd=3, col=2)
Quindi, quando D[i] (che può valere sia 1, sia 0, dove il pedice "i" sta ad indicare l'i-esima osservazione) è il regressore, abbiamo il seguente modello di regressione:
y[i] = beta0 + beta1*D[i] + e[i] dove i=1,...,n
Scindiamo in due casi diversi, quindi si ha che:
y[i] = beta0 + e[i] se D[i]=0
y[i] = beta0 + beta1 + e[i] se D[i]=1
La media condizionata dell'errore è pari a 0, a prescindere da quanto vale D[i], cioè: E(e|D[i])=0
Quindi, la media condizionata di Y[i] ove D[i]=1 è pari a:
E(Y[i]|D[i]=1)=beta0+beta1
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti di Analisi statistica multivariata su R
-
Statistica - Appunti
-
Matematica e statistica per l'economia - Appunti
-
Appunti dettagliati di Statistica