R - Regressão Linear

A análise de regressão é uma ferramenta estatística amplamente utilizada para estabelecer um modelo de relacionamento entre duas variáveis. Uma dessas variáveis ​​é chamada de variável preditora, cujo valor é obtido por meio de experimentos. A outra variável é chamada de variável de resposta, cujo valor é derivado da variável preditora.

Na Regressão Linear, essas duas variáveis ​​são relacionadas por meio de uma equação, onde o expoente (potência) de ambas as variáveis ​​é 1. Matematicamente, uma relação linear representa uma linha reta quando plotada como um gráfico. Uma relação não linear em que o expoente de qualquer variável não é igual a 1 cria uma curva.

A equação matemática geral para uma regressão linear é -

y = ax + b

A seguir está a descrição dos parâmetros usados ​​-

  • y é a variável de resposta.

  • x é a variável preditora.

  • a e b são constantes que são chamadas de coeficientes.

Passos para estabelecer uma regressão

Um exemplo simples de regressão é prever o peso de uma pessoa quando sua altura é conhecida. Para fazer isso, precisamos ter a relação entre altura e peso de uma pessoa.

As etapas para criar o relacionamento são -

  • Faça a experiência de recolher uma amostra dos valores observados de altura e peso correspondente.

  • Crie um modelo de relacionamento usando o lm() funções em R.

  • Encontre os coeficientes do modelo criado e crie a equação matemática usando estes

  • Obtenha um resumo do modelo de relacionamento para saber o erro médio na previsão. Também chamadoresiduals.

  • Para prever o peso de novas pessoas, use o predict() função em R.

Dados de entrada

Abaixo estão os dados de amostra que representam as observações -

# Values of height
151, 174, 138, 186, 128, 136, 179, 163, 152, 131

# Values of weight.
63, 81, 56, 91, 47, 57, 76, 72, 62, 48

Função lm ()

Esta função cria o modelo de relacionamento entre o preditor e a variável de resposta.

Sintaxe

A sintaxe básica para lm() função na regressão linear é -

lm(formula,data)

A seguir está a descrição dos parâmetros usados ​​-

  • formula é um símbolo que apresenta a relação entre x e y.

  • data é o vetor no qual a fórmula será aplicada.

Crie um modelo de relacionamento e obtenha os coeficientes

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(relation)

Quando executamos o código acima, ele produz o seguinte resultado -

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
   -38.4551          0.6746

Obtenha o Resumo do Relacionamento

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(summary(relation))

Quando executamos o código acima, ele produz o seguinte resultado -

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q     Median      3Q     Max 
-6.3002    -1.6629  0.0412    1.8944  3.9775 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -38.45509    8.04901  -4.778  0.00139 ** 
x             0.67461    0.05191  12.997 1.16e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared:  0.9548,    Adjusted R-squared:  0.9491 
F-statistic: 168.9 on 1 and 8 DF,  p-value: 1.164e-06

Função Predict ()

Sintaxe

A sintaxe básica para predizer () em regressão linear é -

predict(object, newdata)

A seguir está a descrição dos parâmetros usados ​​-

  • object é a fórmula que já foi criada usando a função lm ().

  • newdata é o vetor que contém o novo valor para a variável preditora.

Preveja o peso de novas pessoas

# The predictor vector.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)

# The resposne vector.
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

# Find weight of a person with height 170.
a <- data.frame(x = 170)
result <-  predict(relation,a)
print(result)

Quando executamos o código acima, ele produz o seguinte resultado -

1 
76.22869

Visualize a regressão graficamente

# Create the predictor and response variable.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)

# Give the chart file a name.
png(file = "linearregression.png")

# Plot the chart.
plot(y,x,col = "blue",main = "Height & Weight Regression",
abline(lm(x~y)),cex = 1.3,pch = 16,xlab = "Weight in Kg",ylab = "Height in cm")

# Save the file.
dev.off()

Quando executamos o código acima, ele produz o seguinte resultado -