Como traçar uma curva de regressão polinomial em r


A regressão polinomial é uma técnica de regressão que usamos quando o relacionamento entre uma variável preditora e uma variável de resposta é não linear.

Este tutorial explica como traçar uma curva de regressão polinomial em R.

Relacionado: Os 7 tipos mais comuns de regressão

Exemplo: traçando uma curva de regressão polinomial em R

O código a seguir mostra como ajustar um modelo de regressão polinomial a um conjunto de dados e, em seguida, traçar a curva de regressão polinomial nos dados brutos em um gráfico de dispersão:

 #define data
x <- runif(50, 5, 15)
y <- 0.1*x^3 - 0.5 * x^2 - x + 5 + rnorm(length(x),0,10) 
 
#plot x vs. y
plot(x, y, pch= 16 , cex= 1.5 ) 
 
#fit polynomial regression model
fit <- lm(y ~ x + I(x^2) + I(x^3))
 
#use model to get predicted values
pred <- predict(fit)
ix <- sort(x, index. return = T )$ix

#add polynomial curve to plot
lines(x[ix], pred[ix], col=' red ', lwd= 2 )

traçar curva de regressão polinomial em R

Também podemos adicionar a equação de regressão polinomial ajustada ao gráfico usando a função text() :

 #define data
x <- runif(50, 5, 15)
y <- 0.1*x^3 - 0.5 * x^2 - x + 5 + rnorm(length(x),0,10) 
 
#plot x vs. y
plot(x, y, pch=16, cex=1.5) 
 
#fit polynomial regression model
fit <- lm(y ~ x + I(x^2) + I(x^3))
 
#use model to get predicted values
pred <- predict(fit)
ix <- sort(x, index. return = T )$ix

#add polynomial curve to plot
lines(x[ix], pred[ix], col=' red ', lwd= 2 )

#get model coefficients
coeff <- round(fit$coefficients, 2)

#add fitted model equation to plot
text(9, 200 , paste("Model: ", coeff[1], " + ", coeff[2],
                    "*x", "+", coeff[3], "*x^2", "+", coeff[4], "*x^3"), cex= 1.3 )

Observe que o argumento cex controla o tamanho da fonte do texto. O padrão é 1, então optamos por usar o valor 1,3 para facilitar a leitura do texto.

Recursos adicionais

Uma introdução à regressão polinomial
Como ajustar uma curva polinomial no Excel
Como realizar regressão polinomial em Python

Add a Comment

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