Regressão Linear Simples com Exemplo

1 - Introdução

Descobrir uma fórmula para prever o faturamente do seu negócio é algo bem atrativo para o dono, grupo de sócios ou acionistas. Essa fómula mágica pode ser bem simples como uma equação de reta (equação do primeiro grau) naquele velho formato \(y = a*(x) + b\). Essa equação pode ser deduzida de uma planilha com dados observados no dia-a-dia do negócio. Vamos explorar um pouco da metodologia dos mínimos quadrados (Least Square Method), desenvolvendo um exemplo matemáticamente e, em seguida, utilizar uma ferramenta como o R para validar nosso desenvolvimento e plotar um gráfico.

2 - O exemplo da rede de Pizzarias Salão do Armando

O restaurante Salões de Pizza Armando é uma rede de restaurantes de comida italiana em cinco estados. As localizações mais bem sucedidas dos restaurantes da rede Armando estão próximos a campis universitários. Os gestores acreditam que as vendas trimestrais nesses restaurantes (vamos chamar-las de y ) estão relacionadas positivamente com o tamanho da população estudantil (que vamos chamar de x). Assim sendo, supomos que os restaurantes próximos a campis vão gerar mais vendas do que aqueles que estão mais afastados dos campis universitários, afinal os restaurantes próximos contam com população estudantil maior. Usando a análise de regressão, criemos uma equação (modelo) que mostre como e quanto a variável y vendas é dependente da variável x de população estudantil.

planilha de dados das vendas trimestrais do restaurante Salões de pizza do Armando:

Restaurante Populacao Vendas
1 2 58
2 6 105
3 8 88
4 8 118
5 12 117
6 16 137
7 20 157
8 20 169
9 22 149
10 26 202

3 Equação de Regressão Linear Simples:

3.1 Na teoria tudo é muito bonito

Num mundo ideal, deveria existir uma equação da reta que interpolaria toda a núvem de pontos e que deveria seguir a seguinte forma: \[ y = \beta_0 + \beta_1*x + \epsilon \]

Sendo:

  • \(y\) o valor estimado da venda
  • \(\beta_0\) é um valor de constante para que o resultante ponto toque o eixo y (ou seja, onde x vale 0 portanto ponto (0,y) ).
  • \(\beta_1\) é a inclinação da reta, ou seja, o coeficiente angular da reta.
  • \(\epsilon\) é a parcela de erro

4 Equação de Regressão Estimada:

4.1 Na prática, o negócio é estimar

Como não vivemos em um mundo ideal, e sim no mundo real de ifinitas possíbilidades de desconhecidas variáveis afetando o fenômeno, e equação da reta que irá descrever será estimada. \[{\hat y} = b_0 + b_1* (x)\]

Os valores para montar essa equação, ou seja, encontrar os valores de \(b_0\) e \(b_1\), devemos usar os dados das colunas vendas e população (pares x,y) fornecidos pela tabela gerando e traçando uma reta que se ajuste o melhor possível ao número de pontos visíveis no gráfico (se ajuste o melhor possível à núvem de pontos).

5 O Método dos Mínimos Quadrados:

Para desenvolver esse cálculo utilizando um método matemático. Vamos recorrer ao Método dos Mínimos Quadrados

  1. O critério dos mínimos quadrados: \[min\sum(y_i - \hat y_i)^2\] Onde:
  • \(y_i\) é valor observado da variável dependente para a i-ésima observação
  • \(\hat y_i\) é o valor estimado da variável dependente para a i-ésima observação.
  1. A inclinação \(b_1\) da equação de regressão estimada. \[b_1 = {\sum_{i=0}^{n} (x_i - \bar x)*(y_i - \bar y) \over \sum_{i=0}^{n} (x_i - \bar x)^2} \] Onde:
  • \(b_1\) é o valor da inclinação da reta
  • \(x_i\) é o valor da variável independente da i-ésima observação
  • \(y_i\) é o valor da variável dependente para a i-ésima observação
  • \(\bar x\) é o valor médio da variável independente.
  • \(\bar y\) é o valor médio da variável dependente.
  • \(i\) é o contador, enumerador da observação
  • \(n\) é o número total de observações.
  1. A intersecção \(b_0\) da equação de regressão estimada. \[b_0 = \bar y - b_1*(\bar x) \] Onde:
  • \(b_0\) é o valor da constante que resulta onde a reta toca o eixo y
  • \(x_i\) é o valor da variável independente da i-ésima observação
  • \(y_i\) é o valor da variável dependente para a i-ésima observação
  • \(\bar x\) é o valor médio da variável independente.
  • \(\bar y\) é o valor médio da variável dependente.

5.1 -Resolução do exemplo no braço (sem ajuda do R)

Colocando as colunas (variáveis) na fórmula. + \(i\) é a unidade da rede de restaurantes. + \(x_i\) é a população de estudantes em milhares. + \(y_i\) são as vendas trimestrais em R$ x1.000

5.1.1 -Desenvolvendo usando o método dos mínimos quadrados manualmente

5.1.1.1 -Encontrando o valor médio das vendas trimestrais \(\bar y\) na amostra:

  • Temos 10 amostras, portanto \(n=10\) O valor da venda média das 10 amostras é \[\bar y = \sum_{i=1}^{n}{(y_i)\over n}\] então \[\bar y = {(58 + 105 + 88 + 118 + 117 + 137 + 157 + 169 + 149 + 202)\over 10 }\] \[\bar y = {(1.300)\over 10 } = {130}\]
  • Portanto o valor de venda média nas 10 amostras é \[\bar y = 130 \]

5.1.1.2 -Encontrando o valor médio da população de estudantes \(\bar x\) nas 10 amostras:

O valor da população média das 10 amostras é \[\bar x = \sum_{i=1}^{n=10}{(x_i)\over n}\] então

\[\bar x = {(2 + 6 + 8 + 8 + 12 + 16 + 20 + 20 + 22 + 26)\over 10 }\] \[\bar x = {(140)\over 10 } = {14}\]

  • Portanto valor médio da população de estudantes \(\bar x\) nas 10 amostras é \[\bar x = 14\]

5.1.1.3 Desenvolvendo os mínimos quadrados:

Restaurante i Populacao Xi Vendas Yi \(x_i - \bar x\) \(y_i - \bar y\) \((x_i - \bar x)*(y_i - \bar y)\) \((x_i - \bar x)^2\)
1 2 58 \(-12=(2 -14)\) \(-72=(58-130)\) \(864=((2-14)*(58-130))\) \(144=(-12)²\)
2 6 105 \(-8=(6-14)\) \(-25=(105-130)\) \(200=((6-14)*(105-130))\) \(64=(-8)^2\)
3 8 88 \(-6=(8-14)\) \(-42=(88-130)\) \(252=((8-14)*(88-130))\) \(36=(-6)²\)
4 8 118 \(-6=(8-14)\) \(-12=(118-130)\) \(72=((8-14)*(118-130))\) \(36=(-6)^2\)
5 12 117 \(-2=(12-14)\) \(-13=(117-130)\) \(26=((12-14)*(117-130))\) \(4=(-2)²\)
6 16 137 \(2=(16-14)\) \(7=(137-130)\) \(14=((16-14)*(137-130))\) \(4=(2)^2\)
7 20 157 \(6=(20-14)\) \(27=(157-130)\) \(162=((20-14)*(157-130))\) \(36=(6)^2\)
8 20 169 \(6=(20-14)\) \(39=(169-130)\) \(234=((20-14)*(169-130))\) \(36=(6)\)
9 22 149 \(8=(22-14)\) \(19=(149-130)\) \(152=((22-14)*(149-130))\) \(64=(8)^2\)
10 26 202 \(12=(26-14)\) \(72=(202-130)\) \(864=((26-14)*(202-130))\) \(144=(12)^2\)
:—–: :—–: :—–: :—–: :—–: :—–: :—–:
Total \(\sum x_i\) \(\sum y_i\) \(\sum(x_i - \bar x)(y_i - \bar y)\) \(\sum (x_i - \bar x)^2\)
valores 140 1.300 N/A N/A 2.840 568

Já sabemos que para encontrar \(\hat y = b_0 + b_1*x\), temos que encontrar primeiro a inclinação \(b_1\) e a partir dela, a constante \(b_0\). Vamos usar os valores da tabela.

\[b_1 = {\sum_{i=0}^{n=10} (x_i - \bar x)*(y_i - \bar y)\over \sum_{i=0}^{n=10} (x_i - \bar x)^2}\] \[ b_1 = {2.840 \over 568} \] \[ b_1 = 5 \] Agora vamos calcular \(b_0\): \[b_0 = \bar y - b_1*\bar x \] \[b_0 = {130 - 5*(14)}\] \[b_0 = 60\] Então a equação \({\hat y} = b_0 + b_1* x\) fica \[ \hat y = 60 + 5*x\] Podemos agoras por exemplo estimar, com nosso modelo, qual seria a quantidade de vendas se a rede do armando abrisse um restaurante em um ponto com população de estudantes de 16 mil estudantes: \[\hat y = b_0 + b_1*(x)\] \[\hat y = 60 + 5*(16)\] \[\hat y = 140\] ou seja, R$ 140.000,00

6 Obtendo o modelo da equação linear usando R

6.1 A função `r lm() ` do R

6.1.1 Descobrindo \(b_0\) e \(b_1\) com o R:

Através da função lm (linear model), podemos fazer o R calcular para nós os valores de \(b_0\) e \(b_1\), fornecendo como entrada a planilha de vendas x população. Como já haviamos carregado a planilha de vendas x população anteriormente na variável tabela_formatada, vamos utiliza-la no código abaixo.

## 
## Call:
## lm(formula = tabela_formatada$Vendas ~ tabela_formatada$Populacao, 
##     data = tabela_formatada)
## 
## Coefficients:
##                (Intercept)  tabela_formatada$Populacao  
##                         60                           5

Como podemos per, o R nos fala que Coefficients tem valor \(b_0\) = 60 - onde intercepta e valor de coeficiênte inclinação de reta \(b_1\) = 5 . Portanto, comprovando nosso \(\hat y = 60 + 5*(x)\) obtido no desenvolvimento manual do exercício.

6.2 A função `r abline() ` do R

6.2.1 Desenhando no R a reta da função \(\hat y = b_0 + B_1*(x)\) :

Agora vamos usar a função abline do R em conjunto com a função lm e plot vistas acima no código anterior para traçar a reta do modelo \(\hat y = 60 + 5*(x)\) no gráfico de núvem de pontos formado pelos valores de vendas e população:

## 
## Call:
## lm(formula = tabela_formatada$Vendas ~ tabela_formatada$Populacao, 
##     data = tabela_formatada)
## 
## Coefficients:
##                (Intercept)  tabela_formatada$Populacao  
##                         60                           5

7 Coeficiente de determinação \(r²\):

Nosso objetivo, uma vez gerado nosso modelo, é conseguir medir a qualidade do mesmo para acertar em suas estimativas.

7.1 Introdução

Como podemos verificar, a equação \(\hat y = 60 + 5*(x)\) para estimar um valor aproximado para as Vendas trimestrais de cada unidade da rede de restaurantes em função da População Estudantil próxima. Contudo observe que, se comprarmos , para uma dada população de estudantes, o valor medido e o valor estimado são diferentes.

Vamos tomar como exemplo, o restaurante 1 da rede Armando:

7.1.0.1 Restaurante 1 Medido:

Restaurante População Vendas Trimestre
\(i\) \(x_i\) \(y_i\)
—————- ————— ———————-
1 2 58

7.1.0.2 Restaurante 1 Estimado por \(\hat y_1 = 60 + 5*(x_1)\) :

  • \(x_1\) é 2, portanto \[ \hat y_1 = 60 + 5*(2)\] \[ \hat y_1 = 60 + 10\] \[ \hat y_1 = 70\]
Restaurante População Vendas Trimestre
\(i\) \(x_i\) \(y_i\)
—————- ————— ———————-
1 2 70

A diferença entre o valor de vendas medido \(y_1 = 58\) e o valor de vendas estimado pelo modelo \(\hat y_i = 60 + 5*(x_i)\) , que é \(\hat y_1 = 70\) para a observação \(i\) é chamado de resíduo. Neste caso então, para o restaurante 1, o erro ou resíduo é:

\[Resíduo_1 = \hat y_1 - y_1\] \[ Resíduo_1 = 70 - 58 \] \[ Resíduo_1 = 12 \] A soma dos quadrados de todos os resíduos, ou seja, a soma da imprecisão de todos os pontos medidos comparados aos respectivos valores estimados pelo nosso modelo gera a soma dos quadrados dos resíduos e representa a quantidade de erros minimizada pelo método dos mínimos quadrados.

7.2 Soma dos Quadrados dos Resíduos \(SQRes\) :

Também conhecida como Residual sum of Squares (RSS), os resíduos são os erros, a diferença entre o valor medido e o valor estimado na observação, como demonstrado acima \(Resíduo_1 = \hat y_1 - y_1\). Portanto como queremos futuramente mensurar a eficácia da regressão linear do nosso exemplo, teremos de obter a soma dos erros de todas as observações, fomando um somatório \(SQRes = \sum_{i=1}^{n}(y_i - \hat y_i)²\) que será desenvolvido manualmente abaixo:

7.2.1 Desenvolvendo o somatório \(SQRes\) manualmente sem ajuda o R:

Para fazer a soma dos quadrados dos resíduos das 10 observações, basta executar a soma das linhas (observações) da coluna quadrados do Resíduo na planilha abaixo executando, portanto o seguinte somatório:

\[SQRes = \sum_{i=1}^{n=10} (y_i - \hat y_i)^2\]

Restaurante População Vendas Trimestre Vendas Estimadas Residuo Quadrado do Residuo
\(i\) \(x_i\) \(y_i\) \(\hat y_i = 60 + 5*(x_i)\) \(y_i - \hat y_i\) \((y_i - \hat y_i)^2\)
—————- ————— ———————- ———————- ————- ————————
1 2 58 \(70 = 60 +5*(2)\) \((58-70)=-12\) \((58 - 70)^2=144\)
2 6 105 \(90 = 60 + 5*(6)\) \((105-90)=15\) \((105-90)^2=225\)
3 8 88 \(100 = 60 + 5*(8)\) \((88-100)=-12\) \((88-100)^2=144\)
4 8 118 \(100 = 60 + 5*(8)\) \((118-100)=18\) \((118-100)²=324\)
5 12 117 \(120 = 60 + 5*(12)\) \((117-120)=-3\) \((117-120)^2=9\)
6 16 137 \(140 = 60 + 5*(16)\) \((137-140)=-3\) \((137-140)²=9\)
7 20 157 \(160 = 60 + 5*(20)\) \((157-160)=-3\) \((157-160)²=9\)
8 20 169 \(160 = 60 + 5*(20)\) \((169-160)=9\) \((169-160)^2=81\)
9 22 149 \(170 = 60 + 5*(22)\) \((149-170)=-21\) \((149-170)²=441\)
10 26 202 \(190 = 60 + 5*(26)\) \((202-190)=12\) \((202-190)^2=144\)
—————- ————— ———————- ———————- ————- ————————
SQRes \(\sum_{i=1}^{n=10} (y_i - \hat y_i)^2\) 1.530

\[SQRes = {\sum_{i=1}^{n=10} (y_i - \hat y_i)^2} = ({144+225+144+324+9+9+9+81+441+144}) = 1.530\] Portanto \[SQRes = 1.530\] é o erro para se utilizar a equação de regressão estimada \(\hat y = 60 + 5*(x)\) para estimar vendas.

7.3 Soma dos Quadrados Total \(SQTot\):

Também conhecida como Total Sum of Squares (TSS) nos diz quanto de variação existe na variável dependente, no caso, em Vendas Trimestrais.

7.3.1 Desenvolvendo o somatório \(SQTot\) manualmente sem ajuda o R:

Lembrando que o valor médio das vendas trimestrais \(\bar y\) é a média das vendas observadas: \[\bar y = {\sum_{i=1}^{n=10} y_i \over n }\] \[\bar y = {54+105+88+118+117+137+157+169+149+202\over 10} = {1.300\over 10}=130\] \(\bar y = 130\)

\[SQTot = \sum_{i=1}^{n=10} (y_i - \bar y)^2\]

Restaurante População Vendas Trimestre Desvio Desvio Elevado ao Quadrado
\(i\) \(x_i\) \(y_i\) \(y_i - \bar y\) \((y_i - \bar y)^2\)
—————- ————— ———————- —————- ————————————-
1 2 58 \(-72=(58-130)\) \(5.184=(58-130)^2\)
2 6 105 \(-25=(105-130)\) \(625=(105-130)^2\)
3 8 88 \(-42=(88-130)\) \(1.764=(88-130)\)
4 8 118 \(-12=(118-130)\) \(144=(118-130)^2\)
5 12 117 \(-13=(117-130)\) \(169=(117-130)²\)
6 16 137 \(7=(137-130)\) \(49=(137-130)^2\)
7 20 157 \(27=(157-130)\) \(729=(157-130)²\)
8 20 169 \(39=(169-130)\) \(1.521=(169-130)²\)
9 22 149 \(19=(149-130)\) \(361=(149-130)²\)
10 26 202 \(72=(202-130)\) \(5.184=(202-130)²\)
—————- ————— ———————- —————– ————————————
SQTot \(\sum_{i=1}^{n=10}(y_i - \bar y)^2\) 15.730

7.4 Soma dos Quadrados da Regressão \(SQReg\):

7.4.1 Desenvolvendo o somatório \(SQReg\) manualmente sem ajuda o R:

\[SQReg = \sum_{i=1}^{n=10} (\hat y_i - \bar y)^2\]

O valor da venda média das 10 amostras é \(\bar y = \sum_{i=1}^{n}{(yi)\over n}\), então \[\bar y = {(58 + 105 + 88 + 118 + 117 + 137 + 157 + 169 + 149 + 202)\over 10 }\] \[\bar y = {(1.300)\over 10 }\] Portanto o valor de venda média nas 10 amostras é \[\bar y = 130 \] Tendo em mãos o valor de venda média \(\bar y = 130\), vamos desenvolver a soma dos quadrados da regressão:

Restaurante População Vendas Trimestre Quadrado Venda estimada - Venda média
\(i\) \(x_i\) \(y_i\) \((\hat y_i - \bar y)^2\)
—————- ————— ———————- ——————————–
1 2 58 \((70 - 130)^2=3.600\)
2 6 105 \((90 - 130)^2=1.600\)
3 8 88 \((100 - 130)^2=900\)
4 8 118 \((100 - 130)^2=900\)
5 12 117 \((120 - 130)^2=100\)
6 16 137 \((140 - 130)^2=100\)
7 20 157 \((160 - 130)^2=900\)
8 20 169 \((160 - 130)^2=900\)
9 22 149 \((170 - 130)^2=1.600\)
10 26 202 \((190 - 130)^2=3.600\)
—————- ————— ———————- —————–
SQReg 14.200

7.5 Soma dos Quadrados Total em função das Somas dos Quadrados de Regressão e Resíduo:

É possível obter um destes 3 coeficiêntes:

  • \(SQTot\)
  • \(SQReg\)
  • \(SQRes\)

Sabendo o valor de pelo menos dois deles. A soma dos quadrados totais leva este nome porque ela é a união de 2 componentes: a soma dos quadrados da regressão e, a soma dos quadrados dos resíduos. Portanto \[SQTot = {SQReg + SQRes}\] \[ 15.730 = {14.200 + 1.530} \] A razão entre Soma dos Quadrados da Regressão* e Soma dos Quadrados Totais** nos dará uma métrica de desempenho do modelo de regressão, como veremos a seguir.

7.6 Chegando finalmente no Coeficiente de determinação \(r²\):

Podemos estabelecer uma razão de eficiência, gerando uma espécie de nota de 0 a 100, da nossa equação de regressão para estimar as vendas do restaurante. Essa razão é chamada de Coeficiênte de Determinação representada por \(r²\). \[ r^2 = {SQReg \over SQTot}\] Quando geramos esta razão, ela pode ser interpretada como a soma dos quadrados totais que pode ser explicada usando a equação de regressão estimada. ### Desenvolvendo o coeficiênte de determinação \(r²\) manualmente sem ajuda o R: No exemplo anterior \[ r² = {SQReg \over SQTot} = { 14.200 \over 15.730 } = 0,9027 = 90,27\%\]

7.6.1 Desenvolvendo o coeficiênte de determinação \(r²\) no R com `r sum((predict(modelo_obtido) - mean(tabela_formatada$Vendas))^2)/sum((tabela_formatada$Vendas - mean(tabela_formatada$Vendas))^2)`.

## [1] 0.9027336

Isso quer dizer que a equação \(\hat y = 60 + 5*(x)\) consegue explicar \(90,27\%\) da variabilidade das vendas. Isso quer dizer que a equação linear tem um ajuste excelente ao problema.

Contudo, para que o modelo tenha significancia estatística, devemos considerar o tamanho da amostra e a distribuição amostral apropriada. Um grande valor de $r²$ apenas nos diz que as observações se agrupam mais estreitamente nas proximidade da reta.

8 Coeficiente de Correlação Amostral \(r_{xy}\):

Pode-se identificar a intensidade de associação entre as variáveis População Estudantil e Vendas Trimestrais , ou seja, a correlação entre as variáveis \(x\) e \(y\) através da equação:

\[r_{x,y} = { (sinal{b_1})* \sqrt{r²} }\] Onde:

  • \(b_1\) é a inclinação da equação da reta.
  • \(r_{x,y}\) pode varia de -1 a + 1.

8.0.1 Desenvolvendo o coeficiênte de correlação \(r_{x,y}\) manualmente sem ajuda o R:

Tomando nosso exemplo, a equação de regressão linear estimada encontrada \(\hat y = 60 + 5*(x)\) tem inclinação da reta positiva já que \(b_1\) vale \(+5\), temos: \[ r_{x,y} = {sinal_{b1}*\sqrt{r²}} \] \[ r_{x,y} = +\sqrt{0,9027} \] \[ r_{x,y} = + 0,9501 \] Portanto com \(r_{x,y} = +0,9501\) há uma forte correlação linear positiva entre a variável Vendas Trimestrais e População Estudantil.

Miguel Sues Xve Penteado

15/10/2018