Olá Marcelo, tudo bem? Espero que sim!
Não há uma função específica que mostra o nível de significância da correlação entre as variáveis. Mas você consegue construir uma matriz com o p-valor atribuído a cada uma das correlações. Dessa forma você consegue juntar a informação das duas matrizes em uma única, contendo a correlação entre as variáveis e a qual nível de significância aquela correlação está atribuída.
Supondo que você possua um conjunto de dados armazenado em uma variável df. O código que gera a matriz de correlação das variáveis desse conjunto de dados df com o nível de significância atribuído pode ser encontrado a seguir:
import pandas as pd
from scipy.stats import pearsonr
import numpy as np
rho = df.corr()
pval = df.corr(method=lambda x, y: pearsonr(x, y)[1]) - np.eye(*rho.shape)
p = pval.applymap(lambda x: ''.join(['*' for t in [0.01,0.05,0.1] if x<=t]))
rho.round(2).astype(str) + p
A matriz de correlação é obtida fazendo df.corr()
e é armazenada na variável rho.
A matriz dos p-valores pode ser obtida utilizando o método pearsonr() em conjunto com o método corr(). O método pearsonr() retorna uma tupla com o primeiro valor sendo a correlação e o segundo valor sendo o p-valor associado. Foi necessário subtrair uma matriz identidade, que é uma matriz com valores na diagonal igual a 1 e o restante dos valores iguais a 0, pois o método pearsonr() retorna um p-valor = 1
caso seja uma autocorrelação, ou seja, correlação entre a mesma variável.
Após isso, foi construída uma matriz p, aplicando uma função para transformar os p-valores em asteriscos. Caso o p-valor seja menor que 0.1, será utilizado 1 asterisco. Caso seja menor que 0.05, será acrescentado mais um asterisco, e caso seja menor que 0.01, será adicionado mais um aterisco. Portanto, teremos:
- 1 asterisco para nível de significância de 0.10
- 2 asteriscos para nível de significância de 0.05
- 3 asteriscos para nível de significância de 0.01
Por fim, as duas matrizes foram concatenadas, a primeira matriz é a rho, que diz respeito à matriz de correlação, e a segunda é a matriz p, que contém a informação de asteriscos com base no nível de significância da correlação.
A seguir temos uma matriz de exemplo com o resultado final:
Espero que tenha tirado sua dúvida.
Estou à disposição. Bons estudos!