library(tidyverse)
library(ggbeeswarm)
library(modelr)
library(broom)
theme_set(theme_bw())

Estudo

O Parque do Povo de Campina Grande sempre é um sucesso na epóca de São João, então quis saber o mais impacta na decisão de ir ou não. Fiz uma pesquisa com algumas perguntas em um formulário e com respostas padronizadas de 0 à 10, com 0 sendo “Discordo fortemente” e 10 sendo “Concordo fortemente”.

Irei usar dados coletados no formulário e a partir de uso de regressão linear múltipla, para saber o quanto cada aspecto impacta na decisão das pessoas, e do algoritmo k-means, para tentar desenhar possíveis perfis e grupos, tentarei dizer o que realmente impacta na decisão de sair de casa e ir ao Parque do Povo.

Dados

pp = read_csv(here::here("data/pphoje.csv"),
                         col_types = "cdddddd")
glimpse(pp)
## Observations: 43
## Variables: 7
## $ `Carimbo de data/hora`                                       <chr> "20…
## $ `As atrações exibidas no dia impactam na decisão de ir?`     <dbl> 5, …
## $ `As pessoas que vão comigo impacta na decisão de ir?`        <dbl> 10,…
## $ `A segurança do Parque do Povo impacta na decisão de ir?`    <dbl> 8, …
## $ `O meu dinheiro disponível no dia impacta na decisão de ir?` <dbl> 4, …
## $ `A chuva me espanta!`                                        <dbl> 2, …
## $ `Quantos dias você já foi esse ano?`                         <dbl> 2, …

Material para análise dos dados

pphoje = pp %>%
  rename(shows = "As atrações exibidas no dia impactam na decisão de ir?",
         amigos = "As pessoas que vão comigo impacta na decisão de ir?",
         seguro = "A segurança do Parque do Povo impacta na decisão de ir?",
         dinheiro = "O meu dinheiro disponível no dia impacta na decisão de ir?",
         chuva = "A chuva me espanta!",
         dias = "Quantos dias você já foi esse ano?",
         carimbo = "Carimbo de data/hora") %>%
  filter(dias < 20)

pphoje %>% 
    ggplot(aes(x = chuva, y = dias, color = dias == 0)) + 
    geom_jitter()

chuvas <- pphoje$chuva

hist(chuvas)

pphoje %>% 
    ggplot(aes(x = dinheiro, y = dias, color = dias == 0)) + 
    geom_jitter() 

money <- pphoje$dinheiro

hist(money)

pphoje %>% 
    ggplot(aes(x = amigos, y = dias, color = dias == 0)) + 
    geom_jitter() 

companhia <- pphoje$amigos

hist(companhia)

pphoje %>% 
    ggplot(aes(x = shows, y = dias, color = dias == 0)) + 
    geom_jitter() 

festa <- pphoje$shows

hist(festa)

Modelo

Modelo para dias idos

modelo_dias = lm(dias ~ shows + amigos + dinheiro + chuva,
                  data = pphoje)

tidy(modelo_dias,
     conf.int = TRUE, 
     conf.level = .9)
glance(modelo_dias)

Regressão linear múltipla foi utilizada para analisar a associação entre o impacto causado com relação aos shows do dia, à companhia, ao dinheiro disponível no dia, à chuva e dias idos ao Parque do Povo. Os resultados da regressão indicam que um modelo no formato:

\(dias = -0,0606.shows + 0,1781.amigos - 0,1209.dinheiro + 0,0596.chuva + 2,3575\)

explicam 4,61% da variância da variável de resposta (R2 = 0,0461).

O aumento de 1 unidade do impacto dos shows produz uma mudança de -0,0606 em dias idos.

O aumento de 1 unidade do impacto da companhia produz uma mudança de 0,1781 em dias idos.

O aumento de 1 unidade de impacto do dinheiro produz uma mudança de -0,1209 em dias idos.

O aumento de 1 unidade de impacto da chuva produz uma mudança de 0,0596 em dias idos.

Portanto, percebi que, dentre os aspectos estudados para o modelo, a companhia é o fator que mais impacta na decisão de sair de ir ao Parque do Povo no São João. Percebi também que o dinheiro não é um fator tão preocupante entre os que mais foram.

Plot do modelo

plot_modelo_amigos = pphoje %>% 
  data_grid(shows = mean(shows), # todos na média
            amigos = seq_range(amigos, 20),
            chuva = mean(chuva), # Crie um vetor de 20 valores no range
            dinheiro = mean(dinheiro)) %>% 
  add_predictions(modelo_dias)

ggplot(data = pphoje, aes(x = amigos)) + 
  geom_jitter(aes(y = dias)) +
  geom_line(data = plot_modelo_amigos, aes(y = pred), color = "pink", size = 1.5) +
  labs(x = "Impacto da companhia",
       y = "Dias idos",
       title = "Companhia do dia")

Essa visualização mostra que o impacto da companhia cresce juntamente com os dias idos. A linha rosa representa o padrão achado pelo modelo.

plot_modelo_chuva = pphoje %>% 
  data_grid(shows = mean(shows), # todos na média
            amigos = mean(amigos),
            chuva = seq_range(chuva, 20), # Crie um vetor de 20 valores no range
            dinheiro = mean(dinheiro)) %>% 
  add_predictions(modelo_dias)

ggplot(data = pphoje, aes(x = chuva)) + 
  geom_jitter(aes(y = dias)) +
  geom_line(data = plot_modelo_chuva, aes(y = pred), color = "pink", size = 1.5) +
  labs(x = "Dia de chuva",
       y = "Dias idos",
       title = "Medo de chuva")

Essa visualização o impacto da chuva e combinação com a quantidade de dias idos. A linha rosa representa o padrão achado pelo modelo, onde o números de dias idos cresce junto com o medo da chuva.

K-means

n_clusters = 3

kmeans = pphoje %>%
  select(-carimbo, -dinheiro, -seguro, -amigos, -shows) %>%
  kmeans(centers = n_clusters, nstart = 20)

kmPlot = kmeans %>% 
    augment(pphoje) %>% # Adiciona o resultado de km 
                        # aos dados originais pphoje em 
                        # uma variável chamada .cluster
    gather(key = "variável", 
           value = "valor", 
           -carimbo, -dinheiro, -seguro, -amigos, -shows, -.cluster) # Move para long as 
                                                                     # variávies chuva  
                                                                     # e dias

Plot com o k-means

kmPlot %>% 
    ggplot(aes(x = `variável`, y = valor, colour = .cluster)) + 
    geom_point(alpha = .2) + 
    geom_line(alpha = .7) + 
    facet_wrap(~ .cluster) +
  labs(x = "Variáveis",
       y = "Valor",
       color = "Grupos", 
       title = "Medo de chuva")

Com o k-means pude perceber que em meus dados existem três tipos de pessoa, as que não gostam da chuva, porém foram vários dias ao Parque do Povo, as também não gostam de chuva e, talvez por isso, foram poucos dias e até mesmo nenhum dia, e aquelas que não ligam para chuva e mesmo assim foram poucas vezes. Logo, é notável que a chuva realmente não é um grande motivo para ficar em casa.