Como traçar um intervalo de confiança em r
Um intervalo de confiança é um intervalo de valores que provavelmente contém um parâmetro populacional com um certo nível de confiança.
Este tutorial explica como traçar um intervalo de confiança para um conjunto de dados em R.
Exemplo: traçando um intervalo de confiança em R
Suponha que temos o seguinte conjunto de dados em R com 100 linhas e 2 colunas:
#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
Para criar um gráfico da relação entre xey, podemos primeiro ajustar um modelo de regressão linear:
model <- lm(y ~ x, data = df)
A seguir, podemos criar um gráfico da linha de regressão linear estimada usando a função abline() e a função lines() para criar as faixas de confiança reais:
#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')
A linha preta mostra a linha de regressão linear ajustada enquanto as duas linhas azuis tracejadas mostram os intervalos de confiança.
Opcionalmente, você também pode preencher a área entre as linhas do intervalo de confiança e a linha de regressão linear estimada usando o seguinte código:
#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')
Aqui está o código completo do início ao fim:
#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')
Recursos adicionais
O que são intervalos de confiança?
Como usar a função abline() em R para adicionar linhas retas aos gráficos