Come tracciare un intervallo di confidenza in r
Un intervallo di confidenza è un intervallo di valori che probabilmente contiene un parametro della popolazione con un certo livello di confidenza.
Questo tutorial spiega come tracciare un intervallo di confidenza per un set di dati in R.
Esempio: tracciare un intervallo di confidenza in R
Supponiamo di avere il seguente set di dati in R con 100 righe e 2 colonne:
#make this example reproducible set.seed(0) #create dataset x <- rnorm(100) y <- x*2 + rnorm(100) df <- data.frame(x = x, y = y) #view first six rows of dataset head(df) xy 1 1.2629543 3.3077678 2 -0.3262334 -1.4292433 3 1.3297993 2.0436086 4 1.2724293 2.5914389 5 0.4146414 -0.3011029 6 -1.5399500 -2.5031813
Per creare un grafico della relazione tra x e y, possiamo prima adattare un modello di regressione lineare:
model <- lm(y ~ x, data = df)
Successivamente, possiamo creare un grafico della retta di regressione lineare stimata utilizzando la funzione abline() e la funzione lines() per creare le bande di confidenza effettive:
#get predicted y values using regression equation newx <- seq(min(df$x), max(df$x), length.out=100) preds <- predict(model, newdata = data.frame(x=newx), interval = 'confidence') #create plot of x vs. y, but don't display individual points (type='n') plot(y ~ x, data = df, type = 'n') #add fitted regression line abline(model) #add dashed lines for confidence bands lines(newx, preds[,3], lty = 'dashed', col = 'blue') lines(newx, preds[,2], lty = 'dashed', col = 'blue')
La linea nera mostra la retta di regressione lineare adattata mentre le due linee blu tratteggiate mostrano gli intervalli di confidenza.
Facoltativamente, è anche possibile riempire l’area tra le linee dell’intervallo di confidenza e la linea di regressione lineare stimata utilizzando il seguente codice:
#create plot of x vs. y plot(y ~ x, data = df, type = 'n') #fill in area between regression line and confidence interval polygon(c(rev(newx), newx), c(rev(preds[,3]), preds[,2]), col = 'grey', border = NA) #add fitted regression line abline(model) #add dashed lines for confidence bands lines(newx, preds[,3], lty = 'dashed', col = 'blue') lines(newx, preds[,2], lty = 'dashed', col = 'blue')
Ecco il codice completo dall’inizio alla fine:
#make this example reproducible set.seed(0) #create dataset x <- rnorm(100) y <- x*2 + rnorm(100) df <- data.frame(x = x, y = y) #fit linear regression model model <- lm(y ~ x, data = df) #get predicted y values using regression equation newx <- seq(min(df$x), max(df$x), length.out=100) preds <- predict(model, newdata = data.frame(x=newx), interval = 'confidence') #create plot of x vs. y plot(y ~ x, data = df, type = 'n') #fill in area between regression line and confidence interval polygon(c(rev(newx), newx), c(rev(preds[,3]), preds[,2]), col = 'grey', border = NA) #add fitted regression line abline(model) #add dashed lines for confidence bands lines(newx, preds[,3], lty = 'dashed', col = 'blue') lines(newx, preds[,2], lty = 'dashed', col = 'blue')
Risorse addizionali
Cosa sono gli intervalli di confidenza?
Come utilizzare la funzione abline() in R per aggiungere linee rette ai grafici