Primeiro, importamos nossa base de dados “MerketingProduto” e a nomeamos como “dados”.
dados <- read_csv("MarketingProduto.csv")
Em seguida, criamos uma nova variável “dado” em que eliminamos as observações com dados faltantes (NAs).
dado <- na.omit(dados)
Como sabemos, a equação de regressão do modelo logit é:
\[log(\frac{P_i}{1 - P_i}) = \beta_0 + \beta_1\times X_i\]
Em que, \(log(\frac{P_i}{1 - P_i})\) é o logaritmo das odds; \(\beta_0\) é o intercepto da regressão; e \(\beta_1\) é o coeficiente angular. Com exceção da parte à esquerda do símbolo de igual, essa equação é bastante conhecida e típica de modelos simples de regressão. Entretanto, a interpretação desses coeficientes já conhecidos não é tão simples quanto nos modelos simples já conhecidos.
Para motivar a interpretação dos coeficientes, trabalharemos com um modelo mais básico, no qual nosso regressando continua sendo “RESPONSE”, mas, agora, “GENDER” é nosso único regressor. Ou seja,
logit1 <- glm(RESPONSE ~ GENDER, family=binomial(link="logit"))
##
## Call:
## glm(formula = RESPONSE ~ GENDER, family = binomial(link = "logit"))
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.311 -1.311 1.049 1.049 1.496
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.7228 0.1338 -5.403 6.55e-08 ***
## GENDER 1.0323 0.1549 6.663 2.68e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1282.1 on 924 degrees of freedom
## Residual deviance: 1235.3 on 923 degrees of freedom
## AIC: 1239.3
##
## Number of Fisher Scoring iterations: 4
Que é o mesmo que,
\[log(\frac{P_i}{1 - P_i}) = \beta_0 + \beta_1\times GENDER_i\] Como podemos observar, \(\beta_0 = -0.72\), enquanto \(\beta_1 = 1.03\). Como esses ceficientes podem ser interpretados, dado que homem = 1 e mulher = 0?
A interpretação do intercepto é mais simples e é apenas o logaritmo da odd de um indíviduo do sexo feminino mostrar interesse no produto. Ou seja, -0.72 é o logaritmo da odd de uma mulher mostrar interesse no produto. Se utilizarmos a fórmula \(\frac{e^{-0.72}}{1 + e^{-0.72}}\), que obtemos isolando \(P_i\) na equação de regressão, alcaçamos a probabilidade de uma mulher clicar no link de propaganda. Resolvendo a equação supracitada, encontramos que a probabilidade de uma mulher clicar no link de propaganda é de 32.74%.
Esse resultado foi facilmente obtido e interpretado porque a parte \(\beta_1 \times GENDER\) foi “desatividada”, dado que GENDER = 0. Entretanto, como seria a interpretação dos coeficientes no caso em que \(\beta_1 \times GENDER\) está “ativado” (GENDER = 1)?
No caso em que estamos tratando da chance de um homem (GENDER = 1) clicar no anúncio, temos que \(log(\frac{P_i}{1 - P_i}) = \beta_0 + \beta_1\). Assim, o intercepto continuará sendo interpretado da forma já mencionada, entretanto, qual será a interpretação do coeficiente angular? Ele será simplismente a odd de clicar no anúncio, dado que o indivíduo é homem?
Não. A interpretação é um pouco mais complicada:
Temos que,
\[log(odd_H) = log(odd_M) + \Delta log(odd)\]
em que, \(log(odd_M)\) é o logaritmo da odd de ser mulher e \(log(odd_H)\) é o logaritmo da odd de ser homem. A parte do \(\Delta log(odd)\) se deve à interpretação do coeficiente angular como sendo a variação no regressando para uma dada variação marginal no regressor (que, no nosso caso, é igual a 1). Assim,
\[log(odd_H) = log(odd_M) + (log(odd_H) - log(odd_M))\]
Pelas propriedades do logaritmo, isso é igual a,
\[log(odd_H) = log(odd_M) + log(\frac{odd_H}{odd_M})\]
Ou seja, temos que o intercepto é o logaritmo da odd de clicar no anúncio sendo mulher, enquanto o coeficiente angular é o logartimo da razão da odd de ser homem pela odd de ser mulher. Dessa forma, temos que o intercepto é o logaritmo das odds e o \(\beta_1\) é logaritmo do odds ratio. Em outras palavras, o coeficiente angular é o logaritmo da razão da odd de um homem clicar no anúncio pela odd de uma mulher clicar no anúncio.
Assim, se queremos encontrar a odd de um homem clicar no anúncio, calculamos o exponencial dos dois lados da equação:
\[e^{log(odd_H)} = e^{log(odd_M) + log(\frac{odd_H}{odd_M})}\] Isso é igual a,
\[odd_H = e^{log(odd_M)} \times e^{log(\frac{odd_H}{odd_M})}\]
Ou seja,
\[odd_H = e^{\beta_0} \times e^{\beta_1} \]
e, se queremos encontrar a odd de uma mulher clicar no anúncio,
\[odd_M = e^{\beta_0} \]
Concluindo, temos que a odd de clicar no anúncio sendo homem \(e^{-0.72} \times e^{1.03} = 1.36\) . Enquanto que a probabilidade de um homem clicar no anúncio é de \(\frac{1.36}{1 + 1.36} = 0.5763\). Ou seja, 57.63%.
Criamos um modelo (“logit”) no qual “RESPONSE” é nosso regressando e “GENDER”, “ACTIVITY”, “AGE” e “AGE2” são nossos regressores:
\[log(\frac{P_i}{1 - P_i}) = \beta_0 + \beta_1GENDER_i + \beta_2ACTIVITY + \beta_3AGE + \beta_4AGE2\]
logit <- glm(RESPONSE ~ GENDER + ACTIVITY + AGE + AGE2, family=binomial(link="logit"))
##
## Call:
## glm(formula = RESPONSE ~ GENDER + ACTIVITY + AGE + AGE2, family = binomial(link = "logit"))
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6926 -1.2156 0.7389 1.0982 1.8473
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.4883577 0.8899914 -2.796 0.00517 **
## GENDER 0.9536944 0.1581826 6.029 1.65e-09 ***
## ACTIVITY 0.9137479 0.1847787 4.945 7.61e-07 ***
## AGE 0.0699453 0.0356054 1.964 0.04948 *
## AGE2 -0.0006869 0.0003410 -2.015 0.04394 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1282.1 on 924 degrees of freedom
## Residual deviance: 1203.7 on 920 degrees of freedom
## AIC: 1213.7
##
## Number of Fisher Scoring iterations: 4
O coeficiente angular da equação de regressão nos indica qual a variação no regressando para uma dada variação no regressor. Tomando \(\beta_1\) como exemplo, esse coeficente nada mais é que a derivada de log(odds) em relação ao gênero, ou seja,
\[\beta_1 = \frac{\delta[log(odd)]}{\delta GENDER}\] Utilizando a regra da cadeia e sabendo que a derivada do logaritmo de uma função é a função elevada a menos 1, temos,
\[\beta_1 = \frac{\Delta odd}{odd}\] Ou seja, \(\beta_1\) é (quase)2 simplismente a variação percentual na odd.
Gujarati, pág. 181
Dessa forma, aplicando a correção da nota de rodapé, temos que a variação percentual nas odds de demonstrar interesse no produto, pelo fato de ser homem, é \(e^{\beta_2} - 1\).
Criando a variável “logit.coef” para armazenar os coeficientes, temos que,
logit.coef <- coef(logit)
E que a variação percentual nas odds de demonstrar interesse no produto, pelo fato de ser homem, é,
(exp((logit.coef[2])) - 1) * 100
## GENDER
## 159.528
Seguindo o mesmo raciocínio da questão anterior, a variação percentual nas odds de demonstrar interesse no produto, pelo fato de já ter interagido com a página, é,
(exp((logit.coef[3])) - 1) * 100
## ACTIVITY
## 149.3651
Primeiro, calculamos o logaritmo da odd de que uma mulher de 20 anos e que já interagiu com a página demonstre interesse no produto e armazenamos o resultado na variável “log.odd.1”.
log.odd.1 <- logit.coef[1] + logit.coef[3] + logit.coef[4]*20 + logit.coef[5]*(20^2)
Para obtermos apenas a odd tiramos o exponencial dos dois lados e armazenamos o resultado na variável “odd.1”.
odd.1 <- exp(log.odd.1)
Por fim, para obter a probabilidade, utilizamos a fórmula (já utilizada anteriormente) \(\frac{odd}{1 + odd}\),
odd.1/(1 + odd.1)
## (Intercept)
## 0.3892484
Ou seja, a probabilidade de que uma mulher de 20 anos e que já interagiu com a página demonstre interesse no produto é de 38.92%.
Similarmente à questão anterior, primeiro, calculamos o logaritmo da odd de que um homem de 40 anos e que nunca interagiu com a página demonstre interesse no produto e armazenamos o resultado na variável “log.odd.2”
log.odd.2 <- logit.coef[1] + logit.coef[2] + logit.coef[4]*40 + logit.coef[5]*(40^2)
Para obtermos apenas a odd tiramos o exponencial dos dois lados e armazenamos o resultado na variável “odd.2”.
odd.2 <- exp(log.odd.2)
Por fim, para obter a probabilidade, utilizamos a fórmula (já utilizada anteriormente) \(\frac{odd}{1 + odd}\),
odd.2/(1 + odd.2)
## (Intercept)
## 0.5409269
Ou seja, a probabilidade de que um homem de 40 anos e que nunca interagiu com a página demonstre interesse no produto é de 54.09%.
Assumindo que Gender e Activity são iguais a 0, temos
\[log(\frac{P_i}{1 - P_i}) = \beta_0 + \beta_3AGE + \beta_4AGE2\]
Se queremos encontrar a probabilidade, primeiro exponenciamos os dois lados da equação:
\[\frac{P_i}{1 - P_i} = e^{\beta_0 + \beta_3AGE + \beta_4AGE2} \]
Que, pelas propriedades do logaritmo é,
\[\frac{P_i}{1 - P_i} = e^{\beta_0} \times e^{\beta_3AGE} \times e^{\beta_4AGE2} \]
Chamando \(e^{\beta_0} \times e^{\beta_3AGE} \times e^{\beta_4AGE2}\) de Z, temos que,
\[P_i = \frac{Z}{1 + Z}\]
Dessa forma, criamos uma função “prob.idade” que implementa a ideia acima e aceita a idade (“AGE”) como argumento.
prob.idade <- function(AGE){
Z <- exp(logit.coef[1]) * exp(logit.coef[4]*AGE) * exp(logit.coef[5]*(AGE^2))
P_i <- Z/(1 + Z)
P_i
}
Como queremos a probabilidade máxima, utilizamos a função “optimize”.
optimize(prob.idade, interval = c(0, 100), maximum = TRUE)
## $maximum
## [1] 50.91223
##
## $objective
## (Intercept)
## 0.33008
Dessa forma, sabemos que a idade que gera a maior probabilidade do usuário demonstrar interesse no produto é aproximadamente 50 anos e 11 meses.
Por fim, apresentamos, em um gráfico, a evolução da probabilidade do usuário demonstrar interesse no produto para cada idade.
Para uma explicação mais aprofundada e didática do tema, recomenda-se assistir alguns vídeos do canal do YouTube “StatQuest”. Mais especificamente os vídeo sobres log(odds), log(odds ratio), coeficientes e regressão logística no R. Existem vários outros vídeos sobre esse assunto nesse canal e é válido assistir todos eles.↩
“O coeficiente da variável de tendência do modelo de crescimento, \(\beta_2\), dá a taxa de crescimento instantânea (em um ponto do tempo), não a composta (ao longo de um período de tempo). Mas essa última pode ser obtida com facilidade tomando-se o antilogaritmo do \(\beta_2\) estimado, subtraindo-o de um e multiplicando a diferença por 100.”↩