Como usar conceitos de correlação para casos não lineares — COVID case

Arthur Lamblet Vaz
Data Hackers
Published in
6 min readMay 16, 2021

Um das técnicas mais conhecidas no mundo do negócio e em outras esferas, é a tal da correlação. Ela ajuda a nos mostrar quando dois eventos seguem ou não um padrão, diretamente ou inversamente.

Oriunda da covariância, a correlação veio para simplificar o entendimento do output. Já que a covariâncias pode variar entre +/- infinito, além de precisarmos calcular a média das variáveis independentes aleatórias para interpreta se estão variando para a mesma direção ou não. A correlação a interpretação é simplificada, pois os valor estará entre -1 e 1.

Vale ressaltar também os casos de casualidade (correlação espúria), que muitas vezes nos fazem cair em falácia na interpretação do resultado da correlação.

Mas não estamos aqui falar do conceito geral da correlação e sim, de um caso específico que é correlação em variáveis não lineares.

Tive o prazer em ter tido aula no MIT com o Dr. Rama Ramakrishnan, que me apresentou uma bela solução para esses casos. Mas para melhorar o entendimento, irei usar um exemplo de identificação de sintomas de pacientes com COVID19.

Para os casos de problemas de variáveis categóricas ou variáveis continuas e binárias, existem outras técnicas que podem ser escolhidas para se trabalhar afim de extrair o mesmo objetivo com a correlação de Pearson.

O problema quando utilizamos diferentes técnicas, é a comparação linear do resultado. Por isso se torna um problema dependendo dos tipos de variáveis em questão.

Solução para os nossos problemas

Para evitar essas escolhas de diferentes técnicas, apresento X2Y. No hiperlink, você vai encontrar as funções prontas para R, já para Python iremos encontrar na biblioteca chamada ppscore (Predictive Power Score).

Ambas usam o mesmo racional que é:

1 — É calculado a previsão da variável Y sem o X

2 — Prever o Y utilizando o X

3 — Calcula a diferença da predição da etapa 1 com a 2

Logo, % de redução do erro quando passamos de um modelo baseline para um modelo preditivo mede a força da relação entre X e Y.

Ponto de atenção!

A ordem dos fatores altera o produto nesse caso pessoal, diferente da correlação de pearson.

Segue um exemplo para entender as estapadas descritas acima. Primeiro gero um base de dados e aplico árvore de regressão para esse problema de variáveis contínuas. O modelo CART, faz a parte da segunda etapada onde iremos utilizar a variável X para ajudar a prever a variável Y.

1 parte — Criando dataset e gerando gráfico

Para ajudar o entendimento, segue o gráfico do exemplo acima. O pontos na cor preta representa os dados que constam no dataset e o CART é o modelo que utilizamos para prever o Y, utilizando o X como variável dependente.

Em seguida, calculamos a média de Y que seria o modelo baseline. Portanto, o resultado do MAE ( Mean Absolute Error Loss) do modelo baseline é 0.19 e o do modelo CART é 0.06, portanto a redução do MAE é de 68,8%.

Entretanto se aplicar a metodologia ou a fórmula x2y(y,x) irá encontrar um outro resultado do que x2y(x,y) . O valor será mais preciso mais sabendo o valor de X do que de Y.

Como resolver? Existem uma maneira de estar resolvendo essa questão, a primeira é simplesmente considerando média dos valores encontrados em x2y(y,x) e x2y(x,y).

Um outro ponto que vale ser ressaltado também, é a possibilidade de comparar resultados com variáveis de diferentes tipos. Em outras palavras, variáveis contínuas e variáveis categóricas.

Por fim, para os casos onde as variáveis estão na mesma escala, que buscam reduzir o erro de previsão para identificar rapidamente pares de variáveis que podem ter algum tipo de relação, a aplicação desse método vem muito a calhar.

COVID case

Aplicando em uma base de diagnóstico de COVID e perfil do paciente, podemos tentar identificar qual variável que tenha uma forte relação com as pessoas testadas positivamente para o vírus. O script se encontra em meu Github.

Contudo, o resultado obtivo não foi satisfatório. Isso se deve ao fato do grande número de NA's na base. Fique tranquilo que temos solução!

Para quem está habituado a aplicar a correlação de pearson, conhece o famoso intervalo de confiança que para esses casos acabam sendo bastante útil. Segue um exemplo utilizando o exemplo anterior fictício:

A correlação por Pearson nos diz que o intervalo em que o valor é aceito variar entre -0.15 e 0.12 — Problema não linear.

A função dx2y() nos possibilita utilizar algo similar, ativando o parâmetro "confidence" irá simular 1000 exemplos com novos valores fazendo bootstrapping e aplicando x2y() em cada um dos novos exemplos.

Nenhuma associação como mostra a figura abaixo, mostra ter forte relação.

Agora iremos observar as 10 relações mais relevantes do dataset.

Percebemos que os sintomas tem alta relação entre si, um destaque para as variáveis loss_of_smell e loss_of_taste .

Olhando com mais detalhe, com a matriz de confusão:

Contudo, existe um alto nível de valores faltantes na base e isso faz com que não corrobore uma conclusão com acuracidade. Observe que no primeiro quadrante (topo na direita), não temos pontos suficientes.

Biblioteca existente

Existem uma biblioteca já pronta em R e Python chamada Predictive Power Score, em R você pode encontrar como install.packages('ppsr') e em Python pip install ppscore

A biblioteca ppsr tráz uma possibilidade de utilização de outros modelos tais como: OLS, NN, XGBoost entre outros. Além de outras técnicas de avaliação como RSME.

Take away

  • Variáveis lineares prefira utilizar correlação pela sua interpretabilidade
  • Tome cuidado em comprar as métricas de diferentes tipos de variáveis
  • Evite em utilizar PPSR para feature selection, já que ele analisa a relação entre duas variáveis por vez

--

--

Arthur Lamblet Vaz
Data Hackers

Surfista, natureba e engenheiro de produção com ênfase em Data Science🌱🌍♻️