1. Elaborar um plano de marketing com base no dados: Advertising

Os dados Advertising mostram as vendas (sales) em mil unidades para um produto particular como resultado do orçamento (budget) em mil dolares alocado a publicidade em mídia para TV, rádio e jornal. Suponha que, no nosso pápel de Analista de Dados, nos seja solicitado para sugerir, com base nesses dados, um plano de marketing para o próximo ano que resultará no aumento de vendas de produtos.

Que informação seria útil para fornecer tal recomendação? Aqui estão algumas perguntas importantes que poderíamos procurar abordar:

  1. Existe uma relação entre o orçamento em publicidade e as vendas?
    Nosso primeiro objetivo deve ser determinar se os dados fornecem evidências de uma associação entre gastos com publicidade e vendas. Se a evidência é fraca, então alguém poderia argumentar que nenhum dinheiro deveria ser gasto em publicidade!

  2. Quão forte é a relação entre o orçamento em publicidade e vendas?
    Assumindo que existe uma relação entre publicidade e vendas, gostaríamos de saber a força desse relacionamento. Em outras palavras, dado um certo orçamento em publicidade, podemos prever vendas com um alto nível de precisão? Este seria um relacionamento forte. Por outro lado, se a previsão das vendas é ligeiramente melhor que um palpite ou intuição, então consideramos tratar-se de um relacionamento fraco.

  3. Quais mídias contribuem para as vendas?
    As três mídias - TV, rádio e jornal - contribuem para as vendas, ou apenas uma ou duas mídias contribuem? Para responder a esta pergunta, devemos encontrar uma maneira de separar os efeitos individuais de cada mídia quando investimos dinheiro em todas as três mídias.

  4. Com que precisão podemos estimar o efeito de cada mídia nas vendas?
    Para cada dolar gasto em publicidade em um mídia particular, em que quantidade as vendas aumentarão? Com que precisão podemos prever essa quantidade de aumento?

  5. Com que precisão podemos prever futuras vendas?
    Para qualquer nível de publicidade televisiva, de rádio ou de jornal, qual é a nossa previsão de vendas e qual é a precisão dessa previsão?

  6. O relacionamento é linear?
    Se houver aproximadamente uma relação linear entre as despesas em publicidade nos vários meios de comunicação e as vendas, então a regressão linear é uma ferramenta apropriada. Se não, então ainda pode ser possível transformar o preditor ou a resposta para que se use a regressão linear.

  7. Existe sinergia entre os meios de publicidade?
    Talvez gastar $50.000 em publicidade na televisão e $50.000 em publicidade em rádio resulta em mais vendas do que alocar $100.000 para televisão ou rádio individualmente. Em marketing, isso é conhecido como um efeito de sinergia, enquanto nas estatísticas é chamado um efeito de interação.

Está provado que a regressão linear pode ser usada para responder a cada uma dessas questões. Então, vamos analisar-los.

Por exemplo, X pode representar publicidade em TV e Y pode representar vendas (sales). Então, podemos aplicar a regressão para as vendas a partir da publicidade em TV ajustando o modelo sales=β0+β1TV.

1.1 Análise Descritiva de Dados

Primeiro, precisamos nos familiarizar com os dados que vamos analisar. Portanto, é prudente realizar uma análise descritiva dos mesmos.

# importar os pacotes requeridos
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.3
## -- Attaching packages -------------------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0     v purrr   0.3.3
## v tibble  2.1.3     v dplyr   0.8.4
## v tidyr   1.0.2     v stringr 1.4.0
## v readr   1.3.1     v forcats 0.4.0
## Warning: package 'tibble' was built under R version 3.6.2
## Warning: package 'tidyr' was built under R version 3.6.3
## Warning: package 'purrr' was built under R version 3.6.3
## Warning: package 'dplyr' was built under R version 3.6.3
## -- Conflicts ----------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(pander)
## Warning: package 'pander' was built under R version 3.6.2
# carregar os dados
publicidade_dados <- read.csv(file = 'data/Advertising.csv')

Nota: no presente trabalho vamos usar a instrução pipe ‘%>%’ do pacote ‘tidyverse’ para concatenar os comandos ou funções e facilitar a compreensão do código. E a função pander() para ajudar na formatação do documento em ‘R Markdown’.

Para visualizar o cabeçalho.

publicidade_dados %>% head() %>% pander()
X TV radio newspaper sales
1 230.1 37.8 69.2 22.1
2 44.5 39.3 45.1 10.4
3 17.2 45.9 69.3 9.3
4 151.5 41.3 58.5 18.5
5 180.8 10.8 58.4 12.9
6 8.7 48.9 75 7.2

Podemos remover a 1a coluna dos X, visto que é irelevante para o nosso estudo.

publicidade_tbl <- publicidade_dados[ , -1]

publicidade_tbl %>% head() %>% pander()
TV radio newspaper sales
230.1 37.8 69.2 22.1
44.5 39.3 45.1 10.4
17.2 45.9 69.3 9.3
151.5 41.3 58.5 18.5
180.8 10.8 58.4 12.9
8.7 48.9 75 7.2

Ou:

publicidade_tbl %>% glimpse()
## Observations: 200
## Variables: 4
## $ TV        <dbl> 230.1, 44.5, 17.2, 151.5, 180.8, 8.7, 57.5, 120.2, 8.6, 1...
## $ radio     <dbl> 37.8, 39.3, 45.9, 41.3, 10.8, 48.9, 32.8, 19.6, 2.1, 2.6,...
## $ newspaper <dbl> 69.2, 45.1, 69.3, 58.5, 58.4, 75.0, 23.5, 11.6, 1.0, 21.2...
## $ sales     <dbl> 22.1, 10.4, 9.3, 18.5, 12.9, 7.2, 11.8, 13.2, 4.8, 10.6, ...

Sumarizando os dados temos:

publicidade_tbl %>% summary() %>% pander()
TV radio newspaper sales
Min. : 0.70 Min. : 0.000 Min. : 0.30 Min. : 1.60
1st Qu.: 74.38 1st Qu.: 9.975 1st Qu.: 12.75 1st Qu.:10.38
Median :149.75 Median :22.900 Median : 25.75 Median :12.90
Mean :147.04 Mean :23.264 Mean : 30.55 Mean :14.02
3rd Qu.:218.82 3rd Qu.:36.525 3rd Qu.: 45.10 3rd Qu.:17.40
Max. :296.40 Max. :49.600 Max. :114.00 Max. :27.00

2.0 Análise de Regressão Linear

2.1 Estimar os Coeficientes

Lembrem-se que o conjunto de dados Advertising consiste no orçamento em publicidade e vendas de produtos em n=200 diferentes mercados. O objectivo é obter estimativas de coeficientes β0 e β1 de modo que o modelo linear se encaixa bem nos dados disponíveis. Em outras palavras, queremos encontrar um intercepto β0 e a inclinação ou declive β1 tal que a linha resultante é o mais próximo possível dos n=200 pontos de dados.

Vamos visualizar os dados para cada um dos mídias (TV, rádio e jornal)

par(mfrow = c(1, 3)) # combinar multiplas visualizações em um único gráfico
plot(publicidade_tbl$TV,
     publicidade_tbl$sales,
     xlab = "Despesas em TV (em mil dolares $)",
     ylab = "Vendas (em mil unidades)")
plot(publicidade_tbl$radio,
     publicidade_tbl$sales,
     xlab = "Despesas em rádio (em mil dolares $)",
     ylab = "Vendas (em mil unidades)")
plot(
    publicidade_tbl$newspaper,
    publicidade_tbl$sales,
    xlab = "Despesas em jornais (em mil dolares $)",
    ylab = "Vendas (em mil unidades)"
)

2.2 Construir o Modelo

Para obtenção dos parâmetros β0 e β1 usamos a função lm() pelo método dos minímos quadrados. Para a conjunto de dados Advertising usamos sales como variavel resposta e TV como predictora.

Para avaliação inicial do nosso modelo, podemos usar o summary(). Isso nos fornece uma série de informações sobre o nosso modelo, pelas quais vamos nos focar.

model_tv <- lm(sales ~ TV, data = publicidade_tbl)

summary(model_tv) %>% pander()
  Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.033 0.4578 15.36 1.406e-35
TV 0.04754 0.002691 17.67 1.467e-42
Fitting linear model: sales ~ TV
Observations Residual Std. Error R2 Adjusted R2
200 3.259 0.6119 0.6099

Os resultados mostram que:
- os coeficientes obtidos são β0=7.033 e β1=0.0475. Em outras palavras, de acordo com essa aproximação, um adicional de 1,000.00 US dolar gasto em publicidade na TV está associado com a venda de aproximadamente 47,5 unidades adicionais do produto. Portanto, o nosso modelo tem a forma de Y=7.033+0.0475X+ϵ.
- o valor de p-value Pr(>|t|)<0.05, por isso podemos afirmar categoricamente que existe um relacionamento entre as despesas em publicidade em TV e as vendas.

Desvio-padrão (standard errors - SE) podem ser usados para calcular intervalos de confiança. 95% intervalo de confiança é definido como um intervalo de valores que, com uma probabilidade de intervalo de 95%, o intervalo conterá o valor verdadeiro desconhecido do parâmetro.

O intervalo é definido em termos de limites inferior e superior calculados a partir da amostra de dados. Para regressão linear, o intervalo de confian?a de 95% para β1 assume aproximadamente a forma ^β1±2.SE(^β1).

Ou seja, há aproximadamente 95% de chance de que o intervalo [^β12.SE(^β1),^β1+2.SE(^β1)] irá conter o verdadeiro valor de β1. Da mesma forma, um intervalo de confiança para β0 aproximadamente assume a forma ^β0±2.SE(^β0).

Para obter essa informação em R, podemos simplesmente usar a função confint():

confint(model_tv, level = 0.95)
##                  2.5 %     97.5 %
## (Intercept) 6.12971927 7.93546783
## TV          0.04223072 0.05284256

No caso dos dados publicitários, o intervalo de confiança de 95 para β0 é [6.130,7.935] e o intervalo de confiança de 95 para β1 é [0.042,0.053]. Portanto, podemos concluir que, na ausência de publicidade, as vendas ficarão em média entre 6.130 e 7.940 unidades. Além disso, para cada aumento de $1.000 em publicidade televisiva, haverá um aumento médio nas vendas entre 42 e 53 unidades.

2.3 Avaliando a precisão do modelo

A qualidade de ajuste de uma recta de regressão linear é tipicamente avaliada usando duas grandezas relacionadas: soma de quadrados dos resíduos (residual standard error (RSE)) e R2 statistic.

Contudo, F-statistic é usado para testar se pelo menos uma variável preditora possui um coeficiente diferente de zero - Teste de Hipótese. Isso se tornará mais importante quando começarmos a tratar de regressão linear múltiplas onde vamos usar vários preditores.

2.3.1 Soma de quadrados dos resíduos - Residual Standard Error (RSE)

O RSE é uma estimativa do desvio-padrão de ϵ. De grosso modo, é a quantidade média que a resposta se desviará da verdadeira linha de regressão. É calculado usando a fórmula RSE=1n2RSS=1n2ni=1(yi^yi)2.

Onde, RSS=ni=1(yi^yi)2.

No presente caso, o RSE=3.260 ou Soma de quadrados dos resíduos é considerado como o erro médio na previsão das vendas a partir da publicidade em TV usando este modelo. Claramente, se 3.260 unidades é ou não um erro de previsão aceitável depende do contexto do problema. No conjunto de dados de publicidade, o valor médio das vendas em todos os mercados é de aproximadamente 14.000 unidades e, portanto, o erro percentual é de 3.260/14.000=23%.

O RSE pode ser também obtido directamente usando a função sigma() para além do comando summary(model_tv) acima aplicado.

sigma(model_tv)
## [1] 3.258656

Percentagem ou margem de erro:

sigma(model_tv)/mean(publicidade_tbl$sales)
## [1] 0.2323877

2.3.2 R2 Statistic - Coeficiente de Determina??o

O RSE fornece uma medida absoluta de falta de ajuste do modelo aos dados. Mas, como é medido em unidades de Y, nem sempre é claro o que constitui um bom RSE.

A R2 Statistic fornece uma medida alternativa de ajuste. Ele toma a forma de uma proporção - a proporção de variância explicada - e, portanto, sempre assume um valor entre 0 e 1 e é independente da escala de Y. R2 mede a proporção de variabilidade em Y que pode ser explicada usando X.

R21 indica que uma grande proporção da variabilidade na resposta foi explicada pela regressão. Um número próximo de 0 indica que a regressão não explicou grande parte da variabilidade na resposta; isso pode ocorrer porque o modelo linear está errado ou o erro inerente σ2 é alto ou ambos.

Para o presente caso, R2=0.6119 portanto, pouco menos de dois terços da variabilidade nas vendas é explicada por uma regressão linear na TV.

Visto que, R2=r2xy, então podemos calcular o R2 da seguinte forma:

cor(publicidade_tbl$TV, publicidade_tbl$sales)^2
## [1] 0.6118751

1.3.3 F-statistic

Vamos desenvolver F-statistic quando introduzirmos Regressão Múltipla.

2.4 Visualização da Recta de Regressão

Para obter os valores estimados usamos a função predict().

predicted <- predict(model_tv, type = "response")

Para visualizar os valores estimados/previstos.

plot(
    publicidade_tbl$TV,
    publicidade_tbl$sales,
    pch = 20,
    xlab = "Gastos em publicidade TV (em mil dolares $)",
    ylab = "Vendas (em mil unidades)"
)
#lines(publicidade_tbl$TV, predicted, type = "l", col = "red")

abline(model_tv, lwd = 3, col = "red") ## ou use a funcao abline()

Ou, usando ggplot():

library(ggplot2)
ggplot(data = publicidade_tbl, aes(x = TV, y = sales)) +
    geom_point() +
    geom_smooth(method = "lm")
## `geom_smooth()` using formula 'y ~ x'

#geom_smooth(method = "lm", color = "red")

3. Análise Residual

3.1 Abordagem típica

R básico fornece inúmeros métodos para avaliar os pressupostos estatísticos em análise de regressão. O mais comum das abordagens é a função plot() para visualizar os objectos retornados por lm(). Produzindo 04 gráficos importantes para avaliar o modelo que melhor se ajuste aos dados.

par(mfrow = c(2,2)) # Split the plotting panel into a 2 x 2 grid
plot(model_tv)

Esses gráficos fornecem um método tradicional para interpretar os termos residuais e determinar se pode haver problemas com nosso modelo. Entretanto, antes de entrarmos em diagnósticos das visualizações vamos rever sobre os pressupostos sobre regressão linear.

3.2 Pressupostos sobre Regressão

A regressão linear faz várias suposições sobre os dados, tais como:
1. Linearidade dos dados. A relação entre o preditor (x) e o resultado (y) é assumida como linear.
2. Normalidade de resíduos. Presume-se que os erros residuais sejam distribuídos normalmente.
3. Homogeneidade da variação dos resíduos. Presume-se que os resíduos tenham uma variação constante (homoscedasticidade).
4. Independência dos termos de erro dos resíduos.

Devemos verificar se essas suposições são verdadeiras ou não. Os potenciais problemas incluem:
1. Não linearidade entre o relacionamento do resultado e preditores.
2. Heterocedasticidade: variação não constante dos termos de erro.
3. Presença de valores influentes nos dados que podem ser:
Outliers: valores extremos na variável resultado (y)
Pontos de alta alavancagem: valores extremos na variável preditores (x).

Todas essas suposições e possíveis problemas podem ser verificados através da produção de alguns gráficos de diagnóstico que visualizam os erros residuais.

3.3 Gráficos de diagnóstico dos erros residuais

Os gráficos de diagnóstico mostram os resíduos de quatro maneiras diferentes:

1. Residuals vs Fitted. Usado para verificar as suposições de relacionamento linear. Uma linha horizontal, sem padrões distintos, é uma indicação para uma relação linear, o que é bom.

2. Normal Q-Q Usado para examinar se os resíduos são normalmente distribuídos. É bom que os pontos residuais sigam a linha recta tracejada.

3. Localização da escala (ou Localização da propagação). Utilizado para verificar a homogeneidade de variância dos resíduos (homoscedasticidade). A linha horizontal com pontos igualmente dispersos é uma boa indicação de homoscedasticidade. Este não é o caso em nosso exemplo, onde temos um problema de heterocedasticidade.

4. Residuals vs Leverage. Usado para identificar casos influentes, ou seja, valores extremos que podem influenciar os resultados da regressão quando incluídos ou excluídos da análise. Esse gráfico será descrito mais adiante nas próximas secções.

3.3.1 Linearidade dos dados

A suposição de linearidade pode ser verificada através da inspeção do gráfico Residuals vs Fitted (1º gráfico):

plot(model_tv, 1)

Idealmente, o gráfico residual não mostrará nenhum padrão ajustado. Ou seja, a linha vermelha deve estar aproximadamente horizontal em zero. A presença de um padrão pode indicar um problema com algum aspecto do modelo linear.
No nosso exemplo, não há padrão no gráfico residual. Isso sugere que podemos assumir uma relação linear entre os preditores e as variáveis de resultado.

3.3.2 Homogeneidade de variância

Essa suposição pode ser verificada examinando o gráfico de scale-location, também conhecido como gráfico de spread-location.

plot(model_tv, 3)

Esse gráfico mostra se os resíduos são distribuídos igualmente ao longo dos intervalos de preditores. Seria bom se vissemos uma linha horizontal com pontos igualmente dispersos. No nosso exemplo, este não é o caso.

Pode-se observar que a variabilidade (variâncias) dos pontos residuais aumenta com o valor da variável de resultado ajustado, ou seja em forma de funil, sugerindo variações não constantes nos erros residuais (ou heterocedasticidade).

Uma solução possível para reduzir o problema da heterocedasticidade é usar uma transformação logarítimica ou raiz quadrada da variável de resultado (y).

model2_tv <- lm(log(sales) ~ TV, data = publicidade_tbl)

plot(model2_tv, 3)

3.3.3 Normalidade de resíduos

O gráfico QQ de resíduos pode ser usado para verificar visualmente a suposição de normalidade. O gráfico de probabilidade normal dos resíduos deve seguir aproximadamente uma linha recta.

No nosso exemplo, todos os pontos caem aproximadamente nessa linha de referência, para que possamos assumir a normalidade.

plot(model_tv, 2)

3.3.4 Outliers e altos pontos de controle

Outliers:

Um outlier é um ponto que possui um valor de variável de resultado extremo. A presença de outliers pode afectar a interpretação do modelo, pois aumenta o RSE.

Os valores discrepantes podem ser identificados examinando o resíduo padronizado (ou residual t-student), que é o resíduo dividido pelo seu erro padrão estimado. Os resíduos padronizados podem ser interpretados como o número de erros padrão afastados da linha de regressão.

Observações cujos resíduos padronizados são maiores que 3 em valor absoluto são possíveis discrepantes (James et al. 2014).

Altos pontos de Influência:

Um ponto de dados tem alta influência, se tiver valores extremos de preditor x. Isso pode ser detectado examinando a estatística de influência ou o valor estimado. Um valor dessa estatística acima de 2(p+1)/n indica uma observação com alta alavancagem (P. Bruce e Bruce 2017); onde, p é o número de preditores e n é o número de observações.

Os valores discrepantes e altos pontos de alavancagem podem ser identificados inspecionando o gráfico Residuals vs Leverage:

plot(model_tv, 5)

O gráfico acima destaca os três principais pontos mais extremos (# 26, # 36 e # 179), com resíduos padronizados abaixo de 2. No entanto, não há discrepantes que excedam 3 desvios padrão, o que é bom.

Além disso, não há alto ponto de alavancagem nos dados. Ou seja, todos os pontos de dados têm uma estatística de alavancagem abaixo de 2(p+1)/n=4/200=0,02.

4.0 Discussão

Este capítulo descreve suposições de regressão linear e mostra como diagnosticar potenciais problemas no modelo.

O diagnóstico é essencialmente realizado visualizando os resíduos. Ter padrões em resíduos não é um sinal para parar o processo. O nosso actual modelo de regressão pode não ser a melhor maneira de entender esses dados.

Potenciais Problemas podem ser:

Relações não lineares entre o resultado e as variáveis preditoras. Ao enfrentar esse problema, uma solução é incluir um termo quadrático, como termos polinomiais ou transformação logarítimica. Veremos em capítulos posteriores.

Existência de variáveis importantes que ficaram de fora do seu modelo. Outras variáveis que não foram incluídas podem desempenhar um papel importante em seu modelo e dados. Veremos adiante Regressão Múltiplas.

Presença de outliers. Se você acredita que ocorreu uma irregularidade devido a um erro na coleta e entrada de dados, uma solução é simplesmente remover a observação em questão.

5.0 Referência

  1. Bruce, Peter, and Andrew Bruce. 2017. Practical Statistics for Data Scientists. O’Reilly Media.

  2. James, Gareth, Daniela Witten, Trevor Hastie, and Robert Tibshirani. 2014. An Introduction to Statistical Learning: With Applications in R. Springer Publishing Company, Incorporated.