Publicação técnica · Qualidade, CX e Estatística

NPS com rigor estatístico: como separar ruído de mudança real e descobrir o que move o indicador

Por André Luiz Maciel · Coordenador de Qualidade, especialista em CX e análise de dados · Código aberto em GitHub

Sobre os dados. Todos os números e gráficos desta página vêm de uma base fictícia com 3,693 respostas, gerada pelo script dados_sinteticos.py. O objetivo é mostrar o método; nenhum dado de empresa real é usado.

Toda central de atendimento conhece a cena: o NPS do mês cai três pontos e a reunião vira uma caça ao culpado. No mês seguinte sobe quatro e ninguém sabe dizer por quê. O problema raramente é o atendimento; é a leitura do indicador. Esta publicação reúne, de forma aplicada, o roteiro estatístico que uso para responder três perguntas antes de qualquer plano de ação:

  1. A variação é real ou é ruído de amostra?
  2. Ela veio de mudança no tipo de caso ou de piora no mesmo tipo de caso?
  3. Quais fatores tiram mais pontos e quanto valeria corrigir cada um?

É a aplicação prática de uma ideia que defendo: “Qualidade não é controle. É alavanca estratégica de resultado.” A Qualidade só vira alavanca quando lê os números com método.

Artigo completo (PDF): Qualidade não é controle. É alavanca estratégica de resultado — v2.0: da monitoria à leitura estatística do NPS, com a árvore de KPIs do call center e o roteiro estatístico desta página.
Outros artigos do autor: Não Só de Call Center Vive a Experiência do Cliente (DOI 10.5281/zenodo.23898805) · todos os artigos.

1. O NPS é uma média e isso muda tudo

Dê a cada resposta o valor +100 (promotor, notas 9–10), 0 (neutro, 7–8) ou −100 (detrator, 0–6). A média desse vetor é exatamente o NPS. Como é uma média, ela tem variância e, portanto, margem de erro:

\(\mathrm{NPS} = 100\,(p_+ - p_-) \qquad \mathrm{var} = p_+ + p_- - (p_+ - p_-)^2 \qquad \text{margem}_{95\%} = 1{,}96\,\sqrt{\mathrm{var}/n}\times 100\)

Na base fictícia, o NPS do período é 42.2 com margem de ±2.5 pontos. Em um único mês, com 200 a 400 respostas, a margem passa facilmente de ±8 pontos. Ou seja: boa parte do “sobe e desce” cabe dentro do ruído.

2. Ruído ou mudança real? Teste mês contra mês e carta de controle

Para comparar dois meses, use o teste z da diferença de duas médias independentes:

\(z = \dfrac{\mathrm{NPS}_2-\mathrm{NPS}_1}{100\sqrt{\mathrm{var}_1/n_1+\mathrm{var}_2/n_2}}\)

NPS mensal com margem de erro e limites de controle — dados fictícios
MêsRespostasNPSMargem 95% (±)Δ vs mês anteriorp-valor
M0138642.77.7––
M0220341.410.2-1.40.83
M0332748.37.9+6.90.29
M0424238.49.8-9.90.12
M0537235.88.1-2.70.68
M0631538.78.2+3.00.61
M0722237.410.4-1.30.84
M0833442.58.0+5.10.44
M0937243.87.8+1.30.82
M1035241.58.0-2.30.68
M1121550.29.6+8.80.17
M1235345.37.9-4.90.44

Na base fictícia, a maior variação foi em M04 (-9.9 pts, p = 0.12); variações com significância a 95%: nenhum mês. A carta de controle (linha central = NPS do período, limites de ±3σ ajustados ao n de cada mês) complementa o teste: ela mostra se o processo saiu do padrão, e não só se dois meses diferem.

Regra prática: antes de explicar uma variação, mostre a margem de erro dela. Comparar blocos de meses (trimestre contra trimestre) aumenta o n e revela mudanças de patamar que o mês a mês esconde.

3. O fator que mais explica o mês: tempo de resolução

NPS por faixa de tempo de resolução — dados fictícios

Casos resolvidos em até 24h têm NPS médio de 47; acima de 24h, -1. Quando a fatia de casos lentos oscila, o NPS do mês oscila junto, mesmo que o atendimento “bom” continue igual. Esse é o tipo de achado que tira a discussão do campo da opinião.

4. Mix × desempenho: a decomposição shift-share

Uma queda pode vir de duas fontes: (a) chegaram mais casos de um tipo que naturalmente avalia pior (mix) ou (b) o mesmo tipo de caso passou a ser avaliado pior (desempenho). A decomposição separa as duas de forma exata:

\(\Delta\mathrm{NPS} = \underbrace{\textstyle\sum_g (w_{g,1}-w_{g,0})\,\mathrm{NPS}_{g,0}}_{\text{mix}} + \underbrace{\textstyle\sum_g w_{g,1}\,(\mathrm{NPS}_{g,1}-\mathrm{NPS}_{g,0})}_{\text{desempenho}}\)

Decomposição mix × desempenho mês a mês — dados fictícios

Mix pede ação de gestão de demanda e prazo (fila, priorização, WFM). Desempenho pede ação de tratativa (calibração, script, conhecimento). Confundir os dois é o erro mais caro da gestão de NPS.

5. Contrafactual: quanto um grupo de casos pesa no resultado

Pergunta simples e poderosa: qual seria o NPS sem um grupo específico de casos? Nos meses M05–M07 da base fictícia, um “evento sazonal” representou 17% das respostas, com NPS de 4, e respondeu por 29% dos detratores. Sem ele, o NPS do trimestre seria 44.0 em vez de 37.2. Isso mostra onde a causa está, muitas vezes fora da central: regra, comunicação ou prazo do produto.

6. Modelo no nível da resposta: o peso de cada fator

Uma regressão linear com \(y \in \{+100, 0, -100\}\) e fatores 0/1 tem uma leitura direta: cada coeficiente é quantos pontos de NPS aquele fator tira de uma resposta, mantidos os demais. O intercepto é o NPS esperado do caso-base. Uso erros-padrão robustos (HC1), porque y tem só três valores.

Coeficientes do modelo em pontos de NPS — dados fictícios
FatorPontos de NPSErro-padrãot
intercepto (caso-base)+54.61.439.0
Resolvido após 24h-46.74.4-10.6
Evento sazonal-44.36.0-7.4
Reclamação-18.53.9-4.7
Pesquisa por e-mail-9.74.7-2.1
Recontato em 7 dias-21.04.9-4.2

Com o modelo, os cenários viram conta: reduzir pela metade os casos resolvidos após 24h levaria o NPS fictício de 42.2 para 44.8; zerar atraso levaria a 47.4. O caso-base (sem nenhum fator negativo) teria 54.6. Isso responde à pergunta da diretoria: “o que precisa acontecer para batermos a meta?”

7. Atendentes: dispersão sem ranking injusto

Ranquear atendentes pelo NPS bruto pune quem tem poucas respostas, cujo NPS é instável. Duas ferramentas resolvem: o gráfico de funil (limites de 95% que se estreitam com o n) e o encolhimento bayesiano empírico, que puxa cada NPS para a média geral na proporção da incerteza:

\(\mathrm{NPS}^{aj}_i = \bar{\mathrm{NPS}} + B_i\,(\mathrm{NPS}_i-\bar{\mathrm{NPS}}), \quad B_i = \dfrac{\tau^2}{\tau^2 + \mathrm{var}_i/n_i}\)

Gráfico de funil do NPS por atendente — dados fictícios

Entre os atendentes fictícios com 30+ respostas, o NPS bruto vai de 30 a 63; ajustado, de 37 a 52. A dispersão que sobra é real e é a prática boa a multiplicar, não um ranking para punir.

8. Voz do cliente: temas, monitoria e causa-raiz

Número diz quanto; comentário diz por quê. Uma classificação multitema por palavras-chave (com anonimização prévia de e-mail, CPF e telefone) já organiza a leitura. Sempre reporte o percentual sem tema: ele é o limite da classificação. Na base fictícia:

Na monitoria, a auditoria das notas detratoras por pilares de responsabilidade (por exemplo Conhecimento, Operacional, Sistema, Processo e Atitude, como no modelo do Projeto Promotor) separa o que é do atendente do que é do processo. Na prática, a maior parte da detração costuma estar em processo: retorno, prazo e regra.

9. Do diagnóstico à ação: a árvore de KPIs

NPS é resultado; quem o move são os indicadores de processo. Ligue cada achado a um KPI que a operação controla:

E leve para o comitê semanal o NPS com margem de erro, o NPS dos grupos críticos e o cenário do modelo. Decisão boa nasce de pergunta boa.

10. Limites e boas práticas

Como usar o código

pip install numpy pandas matplotlib
python publicacao.py --saida _site   # gera esta página com a base fictícia

import pandas as pd, nps_toolkit as nt
df = pd.read_csv("sua_base.csv")          # colunas: mes, nota, fatores 0/1...
nt.teste_mes_a_mes(nt.nps_por(df, "mes"))
nt.decomposicao_mix(df, "mes", "faixa_resolucao", "M01", "M02")
nt.modelo_resposta(df, ["lento_24h", "reclamacao", "recontato_7d"])

Referências

Sobre o autor

André Luiz Maciel é Coordenador de Qualidade, com trajetória que vai do atendimento à coordenação em operações de banco, seguros, varejo, energia e saúde. Une estatística, ciência de dados (SQL, Power BI, Python) e gestão de equipes para transformar indicadores como NPS, CSAT, CES, FCR e recontato em decisão. É co-idealizador do Projeto Promotor e autor da frase “Qualidade não é controle. É alavanca estratégica de resultado.”

LinkedIn · Medium · Zenodo · Projeto Promotor · Código

Como citar: MACIEL, André Luiz. NPS com rigor estatístico: como separar ruído de mudança real e descobrir o que move o indicador. 2026. Disponível em: https://andreluizmaciel.github.io/nps-analise-estatistica/.

Texto sob CC BY 4.0 · Código sob licença MIT · Dados 100% fictícios.