Como realizar a regressão por partes em r (passo a passo)


A regressão por partes é um método de regressão que costumamos usar quando há “pontos de interrupção” claros em um conjunto de dados.

O exemplo passo a passo a seguir mostra como realizar a regressão por partes em R.

Etapa 1: crie os dados

Primeiro, vamos criar o seguinte quadro de dados:

 #view DataFrame
df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),
                 y=c(2, 4, 5, 6, 8, 10, 12, 13, 15, 19, 24, 28, 31, 34, 39, 44))

#view first six rows of data frame
head(df)

  xy
1 1 2
2 2 4
3 3 5
4 4 6
5 5 8
6 6 10

Etapa 2: visualize os dados

A seguir, vamos criar um gráfico de dispersão para visualizar os dados:

 #create scatterplot of x vs. y
plot(df$x, df$y, pch= 16 , col=' steelblue ')

Podemos ver que a relação entre x e y parece mudar abruptamente em torno de x = 9 .

Etapa 3: ajustar o modelo de regressão por partes

Podemos usar a função segmented() do pacote segmentado em R para ajustar um modelo de regressão por partes ao nosso conjunto de dados:

 library (segmented)

#fit simple linear regression model
fit <- lm(y ~ x, data=df)

#fit piecewise regression model to original model, estimating a breakpoint at x=9
segmented. fit <- segmented(fit, seg.Z = ~x, psi= 9 )

#view summary of segmented model
summary( segmented.fit )

Call: 
segmented.lm(obj = fit, seg.Z = ~x, psi = 9)

Estimated Break-Point(s):
         East. St.Err
psi1.x 8.762 0.26

Meaningful coefficients of the linear terms:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.32143 0.48343 0.665 0.519    
x 1.59524 0.09573 16.663 1.16e-09 ***
U1.x 2.40476 0.13539 17.762 NA    
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.6204 on 12 degrees of freedom
Multiple R-Squared: 0.9983, Adjusted R-squared: 0.9978 

Convergence achieved in 2 iter. (rel. changes 0)

A função segmented() detecta um ponto de interrupção em x = 8,762.

O modelo de regressão por partes ajustado é:

Se x ≤ 8,762: y = 0,32143 + 1,59524*(x)

Se x > 8,762: y = 0,32143 + 1,59524*(8,762) + (1,59524+2,40476)*(x-8,762)

Por exemplo, suponha que temos um valor de x = 5 . O valor estimado seria:

  • y = 0,32143 + 1,59524*(x)
  • y = 0,32143 + 1,59524*(5)
  • y = 8,297

Ou suponha que temos um valor de x = 12 . O valor estimado seria:

  • y = 0,32143 + 1,59524*(8,762) + (1,59524+2,40476)*(12-8,762)
  • y = 27,25

Etapa 4: Visualize o modelo final de regressão por partes

Podemos usar o código a seguir para visualizar o modelo final de regressão por partes sobre nossos dados originais:

 #plot original data
plot(df$x, df$y, pch= 16 , col=' steelblue ')

#add segmented regression model
plot(segmented. fit , add= T )

Parece que o modelo de regressão por partes se ajusta muito bem aos dados.

Recursos adicionais

Os tutoriais a seguir fornecem informações adicionais sobre modelos de regressão em R:

Como realizar regressão linear simples em R
Como realizar regressão linear múltipla em R
Como realizar regressão logística em R
Como realizar regressão quantílica em R
Como realizar regressão ponderada em R

Add a Comment

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