Usaremos o conjunto de pacotes "tidyverse" para realizar algumas operações, sobretudo utilizando recursos gráficos.
##### ----- Importando Pacotes ------ #####
library("tidyverse")
## Warning: package 'ggplot2' was built under R version 4.0.5
## Warning: package 'readr' was built under R version 4.0.4
library("tidyquant")
library("Quandl")
library("timetk")
## Warning: package 'timetk' was built under R version 4.0.5
library("devtools")
library("readxl")
library("AER")
library("fBasics")
library("readr")
##### ------ Importando Dados ------ #####
dados <- read_csv("D:/Dropbox/UFMG/Programação/R/Métodos/Ativ Prát 5/MarketingProduto.csv")
dados <- dados %>% na.omit()
# RESPONSE = clicou ou não no anúncio
# GENDER = sexo do usuário
# ACTIVITY = interações passadas com a página
# AGE = idade do usuário
# AGE2 = idade do usuário ao quadrado
# Estipulando modelo de regressão LOGIT:
logit <- glm(RESPONSE ~ GENDER + ACTIVITY + AGE + AGE2,
data = dados,
family = binomial(link = "logit"))
summary(logit)
##
## Call:
## glm(formula = RESPONSE ~ GENDER + ACTIVITY + AGE + AGE2, family = binomial(link = "logit"),
## data = dados)
##
## 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
multiplicador_1 <- exp(summary(logit)$coefficients[2])-1
print(multiplicador_1)
## [1] 1.59528
A mudança no gênero de uma pessoa multiplica a razão de chances por aproximadamente 160% tendo em vista a natureza da função logística (razão de chances = exp(beta * x))
multiplicador_2 <- exp(summary(logit)$coefficients[3])-1
print(multiplicador_2)
## [1] 1.493651
O fato de a pessoa ter tido uma interação passada com a comunidade multiplica a razão de chances por aproximadamente 149% tendo em vista a natureza da função logística (razão de chances = exp(beta * x))
A partir da função de distribuição logística, temos que P(Y=1) = exp(alfa + beta1 * x1…)/(1 + exp(alfa + beta1 * x1…)). Logo, a probabilidade da variável dependente assumir o valor 1 (ocorrer o evento desejado), mantendo tudo mais constante, é de:
prob1 <- exp(summary(logit)$coefficients[1] + 20*summary(logit)$coefficients[4] + 1*summary(logit)$coefficients[3])
prob1 <- prob1/(1+prob1)
print(prob1)
## [1] 0.4561865
Similarmente ao raciocínio abordado na questão anterior:
prob2 <- exp(summary(logit)$coefficients[1] + (40*summary(logit)$coefficients[4]) + (0*summary(logit)$coefficients[3]))
prob2 <- prob2/(1+prob2)
print(prob2)
## [1] 0.5767516
Para maximizar a probabilidade dada a idade da pessoa, utilizaremos uma regressão logística que utiliza uma nova forma funcional mantendo tudo constante, analisaremos AGE e AGE^2, que representaria uma função de segundo grau (ax^2 + bx + c). Para maximizá-la, basta encontrar o x do seu vértice, dado por -b/2a. Maximizando a função, temos que ao isolar a probabilidade, maximizaremos o termo exponencial e assim teremos o valor que apresenta a maior probabilidade.
Função: y = AGE^2 + AGE + alfa
vertice <- -summary(logit)$coefficients[4]/(2*summary(logit)$coefficients[5])
print(vertice)
## [1] 50.91223
Logo, a idade de 51 anos maximiza a prob de o indivíduo responder ao anúncio