Como criar um gráfico de dispersão com regressão linear no Power BI: passo a passo
Aprende a criar um gráfico de dispersão com regressão linear no Power BI para visualizar correlações e identificar outliers. Esta técnica é útil para mostrar a relação entre duas variáveis e adicionar uma linha de tendência calculada com DAX quando o visual nativo não chega.
Pré-requisitos
- Power BI Desktop instalado.
- Um conjunto de dados simples com pelo menos duas medidas numéricas (ex.: Sales e Quantity) e uma chave temporal ou categórica.
- Noções básicas de DAX e do Editor de consultas.
Passo 1: Preparar os dados
Importa os dados para o Power BI e certifica-te de que tens colunas numéricas para X e Y (por exemplo, Quantity como X e Sales como Y). Se necessário, cria uma tabela de amostra no Editor de consultas ou usa Excel/CSV.
// Exemplo de tabela simples (CSV) com Product, Quantity, Sales
Product,Quantity,Sales,Date
A,10,200,2024-01-01
B,5,75,2024-01-02
C,20,420,2024-01-03
Passo 2: Criar medidas base
Cria medidas que representem os eixos X e Y. Normalmente são somas ou médias. Exemplos com soma de Sales e Quantity:
QuantitySum = SUM(Table[Quantity])
SalesSum = SUM(Table[Sales])
Se estiveres a analisar por linha (ponto por produto), podes usar colunas em vez de medidas. Mas, para agregações por categoria, medidas são mais flexíveis.
Passo 3: Calcular a regressão linear em DAX
Vamos calcular a linha de regressão (y = a + b*x) usando fórmulas DAX para b (declive) e a (interceção). Usamos medidas que considerem o contexto atual do visual.
// Soma das X e Y no contexto
X_Sum = SUM(Table[Quantity])
Y_Sum = SUM(Table[Sales])
// Contagem de pontos (dependendo do detalhe, pode ser DISTINCTCOUNT de Product)
N = COUNTROWS(VALUES(Table[Product]))
// Média X e Y
X_Mean = DIVIDE([X_Sum], [N])
Y_Mean = DIVIDE([Y_Sum], [N])
// Covariância e variância para o declive b
Cov_XY = SUMX(VALUES(Table[Product]), (SUM(Table[Quantity]) - [X_Mean]) * (SUM(Table[Sales]) - [Y_Mean]))
Var_X = SUMX(VALUES(Table[Product]), (SUM(Table[Quantity]) - [X_Mean]) ^ 2)
Slope_b = DIVIDE([Cov_XY], [Var_X])
Intercept_a = [Y_Mean] - [Slope_b] * [X_Mean]
// Valor da linha de tendência para um ponto (usado para plotar a linha)
TrendY = [Intercept_a] + [Slope_b] * SUM(Table[Quantity])
Notas: usa VALUES(Table[Product]) ou outra granularidade adequada ao teu modelo. Se os pontos forem por linha, ajusta para iterar por ID de linha.
Passo 4: Criar o gráfico de dispersão com pontos
Insere um Scatter chart no relatório. Define:
- X Axis: QuantitySum (ou coluna Quantity para cada ponto)
- Y Axis: SalesSum (ou coluna Sales)
- Details: Product (ou identificador do ponto)
- Size: (opcional) outra medida, ex.: SalesSum
Isto desenha os pontos. Se usares agregações, garante que o nível de detalhe no visual corresponde ao que usaste nas medidas DAX (por exemplo, Product ou Date).
Passo 5: Adicionar a linha de regressão ao gráfico
O Scatter chart nativo não permite linhas calculadas diretamente. Há duas abordagens simples:
- Criar uma tabela auxiliar com valores X ordenados e calcular TrendY em DAX; depois plotar como linha usando um Line and clustered column chart com X no eixo e TrendY como série de linha.
- Usar um visual personalizado que aceite série de linha sobre pontos (ex.: Line and scatter visual do AppSource).
Exemplo para a tabela auxiliar:
TrendTable =
VAR MinX = MINX(ALL(Table), Table[Quantity])
VAR MaxX = MAXX(ALL(Table), Table[Quantity])
VAR Step = 1
RETURN
ADDCOLUMNS(
GENERATESERIES(MinX, MaxX, Step),
"Quantity", [Value],
"TrendY", [Intercept_a] + [Slope_b] * [Value]
)
Depois cria um visual de linhas: Eixo = Quantity (da TrendTable), Valores = TrendY; para apresentar em conjunto, podes alinhar escalas ou usar um visual combinado que aceite ambas as tabelas.
Passo 6: Formatar e lidar com erros comuns
Formata os eixos para boa leitura e verifica estes erros comuns:
- Divisão por zero em Slope_b: previne usando DIVIDE e verificações em [Var_X].
- Granularidade inconsistente: medidas que usam VALUES diferentes produzem resultados incorretos; uniformiza o detalhe (Product, Date).
- Pontos sobrepostos: usa Size e Tooltip para distinguir ou aplica jitter no conjunto auxiliar (ligeiro deslocamento em X).
Verificar o resultado
Confirma que os pontos refletem os registos e que a linha de tendência segue a nuvem de pontos. Verifica extremos e calcula manualmente um par de pontos para confirmar a equação y = a + b*x. Usa Tooltips e uma tabela visual com Quantity, Sales, TrendY para comparar valores ponto a ponto.
Conclusão
Agora tens um gráfico de dispersão com uma linha de regressão calculada em DAX, útil para análise de correlação e deteção de outliers. Próximos passos: experimentar regressão ponderada, R² em DAX ou usar um visual personalizado para sobrepor linha e pontos. Dica: começa com poucos pontos e aumenta a granularidade só depois de validar as medidas.