Como criar um intervalo de previsão em r


Um modelo de regressão linear pode ser útil para duas coisas:

(1) Quantificar a relação entre uma ou mais variáveis preditoras e uma variável de resposta.

(2) Use o modelo para prever valores futuros.

Com relação a (2) , quando usamos um modelo de regressão para prever valores futuros, muitas vezes queremos prever tanto um valor exato quanto um intervalo contendo um intervalo de valores prováveis. Este intervalo é denominado intervalo de predição .

Por exemplo, suponha que ajustamos um modelo de regressão linear simples usando horas estudadas como variável preditora e notas em exames como variável resposta. Usando esse modelo, poderíamos prever que um aluno que estuda 6 horas terá nota 91 no exame.

No entanto, como há incerteza em torno desta previsão, poderíamos criar um intervalo de previsão indicando que há 95% de chance de um aluno que estuda por 6 horas obter uma nota no exame entre 85 e 97 . Esse intervalo de valores é conhecido como intervalo de previsão de 95% e geralmente é mais útil para nós do que apenas saber o valor exato previsto.

Como criar um intervalo de previsão em R

Para ilustrar como criar um intervalo de previsão em R, usaremos o conjunto de dados integrado mtcars , que contém informações sobre as características de vários carros diferentes:

 #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

Primeiro, ajustaremos um modelo de regressão linear simples usando disp como variável preditora e mpg como variável de resposta.

 #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

A seguir, usaremos o modelo de regressão ajustado para prever o valor de mpg com base em três novos valores para 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 

A forma de interpretar esses valores é a seguinte:

  • Para um carro novo com EPA de 150, esperamos que ele tenha um mpg de 23,41759 .
  • Para um carro novo com EPA de 200, esperamos que ele tenha um mpg de 21,35683 .
  • Para um carro novo com EPA de 250, esperamos que ele tenha um mpg de 19,29607 .

A seguir, usaremos o modelo de regressão ajustado para criar intervalos de previsão em torno desses valores previstos:

 #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

A forma de interpretar esses valores é a seguinte:

  • O intervalo de previsão de 95% mpg para um carro com EPA de 150 está entre 16,62968 e 30,20549 .
  • O intervalo de previsão de 95% mpg para um carro com EPA de 200 está entre 14,60704 e 28,10662 .
  • O intervalo de previsão de 95% mpg para um carro com EPA de 250 está entre 12,55021 e 26,04194 .

Por padrão, R usa um intervalo de previsão de 95%. No entanto, podemos alterar isso como desejarmos usando o comando level . Por exemplo, o código a seguir demonstra como criar intervalos de previsão de 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

Observe que os intervalos de previsão de 99% são maiores que os intervalos de previsão de 95%. Isto faz sentido porque quanto maior o intervalo, maior a probabilidade de conter o valor previsto.

Como visualizar um intervalo de predição em R

O código a seguir demonstra como criar um gráfico com a seguinte funcionalidade:

  • Um gráfico de dispersão de pontos de dados para disponibilidade e mpg
  • Uma linha azul para a linha de regressão ajustada
  • Faixas de confiança cinza
  • Faixas de previsão vermelhas
 #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 usar um intervalo de confiança versus um intervalo de previsão

Um intervalo de predição captura a incerteza em torno de um único valor. Um intervalo de confiança captura a incerteza em torno dos valores médios previstos. Assim, um intervalo de predição será sempre maior que um intervalo de confiança para o mesmo valor.

Você deve usar um intervalo de predição quando estiver interessado em previsões individuais específicas, pois um intervalo de confiança produzirá um intervalo de valores muito estreito, resultando em uma probabilidade maior de que o intervalo não contenha o valor verdadeiro.

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *