Come creare un intervallo di previsione in r
Un modello di regressione lineare può essere utile per due cose:
(1) Quantificare la relazione tra una o più variabili predittive e una variabile di risposta.
(2) Utilizzare il modello per prevedere i valori futuri.
Per quanto riguarda (2) , quando utilizziamo un modello di regressione per prevedere valori futuri, spesso vogliamo prevedere sia un valore esatto sia un intervallo contenente un intervallo di valori probabili. Questo intervallo è chiamato intervallo di previsione .
Ad esempio, supponiamo di adattare un semplice modello di regressione lineare utilizzando le ore studiate come variabile predittiva e i punteggi degli esami come variabile di risposta. Utilizzando questo modello, potremmo prevedere che uno studente che studia per 6 ore otterrà un punteggio di 91 all’esame.
Tuttavia, poiché vi è incertezza attorno a questa previsione, potremmo creare un intervallo di previsione che indichi che esiste una probabilità del 95% che uno studente che studia per 6 ore ottenga un punteggio all’esame compreso tra 85 e 97 . Questo intervallo di valori è noto come intervallo di previsione del 95% e spesso ci è più utile della semplice conoscenza dell’esatto valore previsto.
Come creare un intervallo di previsione in R
Per illustrare come creare un intervallo di previsione in R, utilizzeremo il set di dati mtcars integrato, che contiene informazioni sulle caratteristiche di diverse auto diverse:
#view first six rows of mtcars head(mtcars) # mpg cyl disp hp drat wt qsec vs am gear carb #Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 #Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 #Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 #Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 #Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 #Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Innanzitutto, adatteremo un semplice modello di regressione lineare utilizzando disp come variabile predittrice e mpg come variabile di risposta.
#fit simple linear regression model model <- lm(mpg ~ disp, data = mtcars) #view summary of fitted model summary(model) #Call: #lm(formula = mpg ~ availability, data = mtcars) # #Residuals: # Min 1Q Median 3Q Max #-4.8922 -2.2022 -0.9631 1.6272 7.2305 # #Coefficients: #Estimate Std. Error t value Pr(>|t|) #(Intercept) 29.599855 1.229720 24.070 < 2e-16 *** #disp -0.041215 0.004712 -8.747 9.38e-10 *** #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 3.251 on 30 degrees of freedom #Multiple R-squared: 0.7183, Adjusted R-squared: 0.709 #F-statistic: 76.51 on 1 and 30 DF, p-value: 9.38e-10
Successivamente, utilizzeremo il modello di regressione adattato per prevedere il valore di mpg sulla base di tre nuovi valori per disp .
#create data frame with three new values for avail new_disp <- data.frame(disp= c(150, 200, 250)) #use the fitted model to predict the value for mpg based on the three new values #for avail predict(model, newdata = new_disp) #1 2 3 #23.41759 21.35683 19.29607
Il modo di interpretare questi valori è il seguente:
- Per un’auto nuova con un EPA di 150, ci aspettiamo che abbia un mpg di 23,41759 .
- Per un’auto nuova con un EPA di 200, ci aspettiamo che abbia un mpg di 21,35683 .
- Per un’auto nuova con un EPA di 250, ci aspettiamo che abbia un mpg di 19,29607 .
Successivamente, utilizzeremo il modello di regressione adattato per creare intervalli di previsione attorno a questi valori previsti:
#create prediction intervals around the predicted values predict(model, newdata = new_disp, interval = " predict ") # fit lwr upr #1 23.41759 16.62968 30.20549 #2 21.35683 14.60704 28.10662 #3 19.29607 12.55021 26.04194
Il modo di interpretare questi valori è il seguente:
- L’intervallo di previsione del 95% di mpg per un’auto con un EPA di 150 è compreso tra 16,62968 e 30,20549 .
- L’intervallo di previsione del 95% di mpg per un’auto con un EPA di 200 è compreso tra 14,60704 e 28,10662 .
- L’intervallo di previsione del 95% di mpg per un’auto con un EPA di 250 è compreso tra 12,55021 e 26,04194 .
Per impostazione predefinita, R utilizza un intervallo di previsione del 95%. Possiamo però modificarlo a nostro piacimento utilizzando il comando level . Ad esempio, il codice seguente illustra come creare intervalli di previsione al 99%:
#create 99% prediction intervals around the predicted values predict(model, newdata = new_disp, interval = " predict ", level = 0.99 ) # fit lwr upr #1 23.41759 14.27742 32.55775 #2 21.35683 12.26799 30.44567 #3 19.29607 10.21252 28.37963
Tieni presente che gli intervalli di previsione del 99% sono più ampi degli intervalli di previsione del 95%. Ciò ha senso perché più ampio è l’intervallo, maggiore è la probabilità che contenga il valore previsto.
Come visualizzare un intervallo di previsione in R
Il codice seguente illustra come creare un grafico con le seguenti funzionalità:
- Un grafico a dispersione di punti dati per disponibilità e mpg
- Una linea blu per la retta di regressione adattata
- Fasce di sicurezza grigie
- Bande di previsione rosse
#define dataset data <- mtcars[, c("mpg", "disp")] #create simple linear regression model model <- lm(mpg ~ disp, data = mtcars) #use model to create prediction intervals predictions <- predict(model, interval = " predict ") #create dataset that contains original data along with prediction intervals all_data <- cbind(data, predictions) #load ggplot2 library library(ggplot2) #createplot ggplot(all_data, aes(x = disp, y = mpg)) + #define x and y axis variables geom_point() + #add scatterplot points stat_smooth(method = lm) + #confidence bands geom_line(aes(y = lwr), col = "coral2", linetype = "dashed") + #lwr pred interval geom_line(aes(y = upr), col = "coral2", linetype = "dashed") #upr pred interval
Quando utilizzare un intervallo di confidenza rispetto a un intervallo di previsione
Un intervallo di previsione cattura l’incertezza attorno a un singolo valore. Un intervallo di confidenza cattura l’incertezza attorno ai valori medi previsti. Pertanto, un intervallo di previsione sarà sempre più ampio di un intervallo di confidenza per lo stesso valore.
È necessario utilizzare un intervallo di previsione quando si è interessati a previsioni individuali specifiche, poiché un intervallo di confidenza produrrà un intervallo di valori troppo ristretto, con conseguente maggiore probabilità che l’intervallo non contenga il valore reale.