A Estatística na Ciência de Dados e a Anatomia dos Dados
por Frank de Alcantara em 20/07/2026
Nesta série, a curiosa leitora vai construir, tijolo por tijolo, o edifício da estatística que sustenta a ciência de dados. Do primeiro resumo de uma coluna de números até a regressão múltipla que separa causas emaranhadas, passando por probabilidade, amostragem, testes de hipótese e correlação. A estatística é uma disciplina séria. Muito séria. E como a maior parte das disciplinas sérias ela não começa com um algoritmo. Começa com uma pergunta: o que, afinal, são os dados que temos em mãos?
Índice da Série: Estatística Orientada à Ciência de Dados
- 1. A Estatística na Ciência de Dados e a Anatomia dos Dados (Você está aqui)
- 2. Estimativas de Localização e de Variabilidade
- 4. Dados Categóricos e os Fundamentos da Probabilidade
A pergunta parece boba e será boba até que a leitora tente respondê-la com precisão.
Um número em uma planilha pode ser uma idade, um código postal, uma nota de $1$ a $5$ ou um identificador de cliente. As quatro possibilidades usam algarismos, porém apenas em uma delas a média é indiscutivelmente uma operação legítima. Confundir representação numérica com quantidade é o erro mais barato e mais comum da ciência de dados, e é o primeiro que vamos aprender a não cometer.
O combinado desta série é o mesmo das séries Transformers e Inteligência Artificial Aplicada: faremos os exemplos de código em C++23. Depois, a leitora poderá refazê-los em Python, C, JavaScript, Haskell ou qualquer linguagem que desejar. Nos laboratórios da disciplina, a implementação interna de referência usa Python no Google Colab, com pandas, NumPy, SciPy e Matplotlib, porque esse ambiente permite que as turmas executem os experimentos sem preparar uma máquina local. Se estiver de acordo, continuamos. Se não, obrigado, e nos vemos na próxima.
1. Por que estatística em ciência de dados
A ciência de dados vive de uma tensão que a estatística passou dois séculos aprendendo a administrar: quase nunca temos os dados que gostaríamos, e sempre queremos concluir mais do que os dados que temos permitem. A estatística é o nome que damos ao conjunto de ferramentas que torna essa passagem, do pouco que se vê para o muito que se afirma, honesta e mensurável. Ou, se preferir, a esforçada leitora pode se consolar sabendo que vamos torturar os dados até que eles contem a verdade.
A atenta leitora deve separar, desde já, os dois modos de usar dados que a série inteira vai alternar:
-
O primeiro é a estatística descritiva: resumir, organizar e apresentar o que está diante de nós. Quando calculamos a média salarial de uma equipe, desenhamos o histograma das idades ou tabelamos quantos clientes vieram de cada canal, estamos descrevendo. Não há salto para o desconhecido; há compressão do conhecido.
-
O segundo modo é a estatística inferencial: usar uma amostra para dizer algo sobre uma população que não medimos por inteiro. Quando estimamos a taxa de conversão de um site a partir de mil visitantes, ou decidimos se uma nova versão do produto é melhor que a antiga com base em um experimento de duas semanas, estamos inferindo. Aqui há salto, e todo salto tem risco. A estatística inferencial é, em grande medida, a contabilidade desse risco.
Uma análise de dados séria costuma percorrer, nesta ordem, um ciclo de quatro etapas. Primeiro, a coleta: de onde vêm os dados, com que instrumento, com que vieses embutidos. Segundo, a descrição: o que os dados dizem sobre si mesmos, em medidas e gráficos. Terceiro, a inferência: o que a amostra permite afirmar sobre a população, e com que grau de confiança. Quarto, a modelagem: como uma variável ajuda a explicar ou prever outra. Esta série percorre exatamente esse ciclo, e a leitora fará bem em guardar o mapa: os artigos 1 a 3 tratam de descrição, os artigos 4 a 5 constroem a linguagem da probabilidade, os artigos 6 a 11 fazem inferência, e os artigos 12 e 13 modelam.
A Figura 1 transforma esse roteiro em duas camadas: acima está o ciclo da análise; abaixo, a posição de cada bloco de artigos. Repare que a probabilidade não é uma quinta etapa. Ela é a ponte que torna defensável a passagem da descrição para a inferência.
Figura 1: A série começa pela descrição, usa a probabilidade como ponte para a inferência e termina na modelagem; nenhum desses passos corrige um viés que entrou na coleta.
Para que nada disso seja abstrato, vamos começar com um exemplo pequeno e concreto, que reaparecerá ao longo de todo o artigo. Considere uma equipe de oito pessoas em uma empresa de software, descrita por seis características:
| nome | idade | salário (R$ mil) | linguagem | nível | remoto |
|---|---|---|---|---|---|
| Ana | 23 | 6,5 | Python | júnior | sim |
| Bruno | 29 | 9,0 | C++ | pleno | não |
| Célia | 34 | 12,0 | Haskell | pleno | sim |
| Davi | 41 | 15,5 | C++ | sênior | não |
| Elis | 28 | 8,2 | Python | júnior | sim |
| Frank | 52 | 22,0 | C++ | sênior | não |
| Gina | 26 | 7,1 | JavaScript | júnior | sim |
| Hugo | 38 | 13,4 | Python | pleno | não |
Oito linhas, seis colunas. Parece trivial, e é justamente por ser trivial que serve: tudo o que a estatística faz com milhões de linhas, ela faz primeiro com poucas. No nosso caso, oito. É com oito linhas que a esperta leitora entenderá. Os milhões são muito complicados.
Antes de analisar qualquer coisa, precisamos saber que tipo de número, ou de não número, mora em cada coluna. Isto é entender os dados.
Entender os dados significa reconstruir o caminho que os produziu. Na tabela, idade parece um fato simples, mas precisamos saber se foi registrada em anos completos ou calculada a partir da data de nascimento. A coluna salário pode significar valor mensal, anual, bruto, líquido ou apenas o valor contratual. A coluna remoto pode indicar trabalho fora do escritório todos os dias ou uma única vez por semana. Nenhuma dessas colunas carrega tais decisões no nome. Sem conhecê-las, podemos executar um cálculo impecável e chegar a uma interpretação completamente errada.
É aqui que a estatística deixa de ser um catálogo de fórmulas e se torna uma disciplina de raciocínio.
Antes de calcular uma média, perguntamos o que foi medido, em qual unidade, sobre quem, por qual processo e para responder a qual pergunta.
As respostas determinam que operações são legítimas e até onde a conclusão pode ir. A Seção 2 começa por essa tarefa aparentemente modesta: classificar cada variável. Parece burocracia, até o dia em que alguém calcula a média de um código postal e a apresenta com a solenidade de um resultado científico.
1.1 Exercícios de Lápis e Papel
1. Classifique quatro usos de dados como descritivos ou inferenciais
Considere: (a) a média salarial dos oito membros da equipe; (b) a estimativa da média salarial de todas as equipes de software a partir dessas oito pessoas; (c) o histograma das idades observadas; (d) a previsão da taxa de trabalho remoto no setor.
Solução: O critério é o alcance da afirmação. Estatística descritiva organiza apenas os dados observados; estatística inferencial usa esses dados para concluir algo sobre uma população, um período ou um resultado não observado.
No item (a), calculamos uma média dos oito salários e a atribuímos somente à equipe observada. Não existe extrapolação, portanto o uso é descritivo. No item (b), usamos as mesmas oito pessoas para estimar uma média de todas as equipes de software. A conclusão ultrapassa os registros disponíveis, portanto o uso é inferencial.
No item (c), o histograma organiza as oito idades que estão na tabela. Ele é descritivo enquanto a leitura permanecer restrita a essas pessoas. No item (d), a taxa do setor não foi observada por inteiro e precisa ser prevista a partir de dados parciais. O uso é inferencial.
| Item | Alcance da afirmação | Classificação |
|---|---|---|
| (a) | oito salários observados | descritiva |
| (b) | todas as equipes de software | inferencial |
| (c) | oito idades observadas | descritiva |
| (d) | taxa de trabalho remoto do setor | inferencial |
O cálculo empregado não decide sozinho a classificação. A mesma média pode descrever uma amostra ou estimar uma população; o que muda é até onde pretendemos levar a conclusão.
2. Identifique a inversão no ciclo de análise
Uma empresa primeiro treina um modelo e somente depois investiga como os dados foram coletados. Qual etapa do ciclo foi invertida e que risco nasce daí?
Solução: O ciclo apresentado na Seção 1 começa pela coleta e termina na modelagem. A empresa executou a quarta etapa antes de examinar a primeira. Isso significa que o modelo foi ajustado sem conhecer a população alcançada pelo instrumento, as unidades excluídas nem as condições em que cada variável foi registrada.
| Ordem correta | Etapa | Situação no estudo | Consequência |
|---|---|---|---|
| 1 | coleta | examinada somente depois do modelo | vieses e exclusões permanecem ocultos |
| 2 | descrição | calculada sobre o arquivo disponível | resume a população truncada |
| 3 | inferência | não possui população-alvo bem ligada à amostra | o alcance da conclusão fica indefinido |
| 4 | modelagem | executada primeiro | aprende as limitações do arquivo como se fossem do mundo |
Suponha que o arquivo de treinamento contenha apenas funcionários contratados diretamente e omita terceirizados. O modelo aprenderá relações válidas, no máximo, para a população truncada que entrou no arquivo. Medir depois a média, ajustar hiperparâmetros ou aumentar a capacidade do modelo não cria registros das pessoas ausentes.
A etapa invertida é a coleta. O risco é transformar um viés de cobertura em uma regularidade aparentemente objetiva do modelo. Nenhuma técnica posterior recupera unidades que nunca foram observadas.
3. Determine o alcance de uma taxa de conversão
Explique por que a frase a conversão foi $8\%$ ontem não informa, sozinha, se o uso é descritivo ou inferencial.
Solução: Uma taxa de $8\%$ significa que, em cada $100$ unidades do denominador escolhido, $8$ pertencem à categoria considerada conversão. A frase não declara qual conjunto funciona como denominador nem para qual período queremos concluir.
Se todos os visitantes de ontem foram registrados e $8\%$ deles converteram, a taxa resume aquele conjunto completo. Nesse alcance, o uso é descritivo. Se a mesma taxa for usada para prever a conversão de amanhã, do próximo mês ou de todos os visitantes possíveis, os acessos de ontem passam a funcionar como amostra. Nesse novo alcance, o uso é inferencial.
Portanto, faltam duas definições: a população-alvo e o período-alvo. Sem elas, o valor numérico é conhecido, mas a natureza da afirmação permanece indeterminada.
4. Separe uma conclusão permitida de uma extrapolação
Use os oito salários da tabela para formular uma conclusão permitida e outra que esses dados não sustentam. Desenvolva o cálculo usado na conclusão permitida.
Solução: Os salários, em milhares de reais, são
\[6{,}5,\ 9{,}0,\ 12{,}0,\ 15{,}5,\ 8{,}2,\ 22{,}0,\ 7{,}1,\ 13{,}4.\]A soma é
\[6{,}5+9{,}0+12{,}0+15{,}5+8{,}2+22{,}0+7{,}1+13{,}4=93{,}7.\]Como há oito pessoas, a média observada é
\[\bar{x}=\frac{93{,}7}{8}=11{,}7125\text{ mil reais}.\]Podemos concluir que a média salarial desta equipe observada é $11{,}7125$ mil reais. Não podemos concluir, sem um plano amostral que ligue essas pessoas à população-alvo, que a média de todas as equipes brasileiras esteja próxima desse valor. A primeira frase comprime o conhecido; a segunda extrapola para o desconhecido sem medir o risco dessa passagem.
5. Localize o viés em uma pesquisa voluntária
Uma pesquisa de satisfação recebe respostas apenas de quem decidiu participar. Localize coleta, descrição, inferência e modelagem em um estudo possível e identifique o problema central.
Solução: Vamos considerar que o formulário registra nota, cargo e salário. A coleta é o próprio formulário voluntário e o mecanismo que decide quem recebe e quem responde. A descrição pode apresentar a distribuição das notas recebidas, por exemplo, quantas respostas caíram em cada categoria. A inferência aparece quando usamos essas respostas para estimar a satisfação de todos os trabalhadores. A modelagem aparece quando relacionamos satisfação a cargo ou salário.
O problema central surge antes dos cálculos: pessoas muito satisfeitas ou muito insatisfeitas podem ter maior disposição para responder. Assim, a probabilidade de entrar na amostra depende da variável que desejamos estimar. Esse mecanismo produz viés de autoseleção.
Receber dez mil respostas reduz a instabilidade numérica dentro do grupo respondente, mas não demonstra que os silenciosos se parecem com ele. A quantidade de dados não corrige, sozinha, um mecanismo de coleta que seleciona sistematicamente quem pode ser observado.
2. Tipos de dados
A distinção mais importante da análise de dados não está em nenhuma fórmula: está na classificação da variável. O tipo de uma variável determina quais operações fazem sentido sobre ela, quais gráficos a representam e quais métodos estatísticos são legítimos.
Errar o tipo é errar a análise.
Existem duas grandes famílias.
-
A primeira é a dos dados numéricos, aqueles em que o número significa quantidade e a aritmética tem sentido. Dentro dessa família, distinguimos os dados contínuos, cujo modelo admite qualquer valor real em um intervalo, como a temperatura ou a duração de um evento, dos dados discretos, cujo conjunto de valores possíveis é separado, ou contável, como o número de commits em um dia. A fronteira observada entre essas famílias depende de como medimos: a idade varia continuamente, mas uma coluna que registra apenas anos completos é discreta. E há uma sutileza útil. Ninguém observa $3{,}5$ commits em um dia, mas a média dos números de commits de duas pessoas pode perfeitamente ser $3{,}5$ commits por pessoa e por dia. O domínio das observações não precisa coincidir com o domínio de uma estatística calculada sobre elas.
-
A segunda família é a dos dados categóricos, aqueles em que o valor indica o pertencimento a uma classe, e não uma quantidade. Aqui a aritmética é ilegítima, e essa é a lição central desta seção. Dentro dos categóricos, distinguimos três subtipos por grau crescente de estrutura. Os dados nominais são categorias sem ordem: a linguagem de programação da nossa equipe,
Python,C++,HaskellouJavaScript, não admite uma categoria maior ou menor. Os dados ordinais têm ordem, mas não distância definida: o níveljúnior,pleno,sêniorclaramente cresce, mas não podemos afirmar que a diferença entre júnior e pleno seja igual à diferença entre pleno e sênior, nem que sênior seja o dobro de júnior. Os dados binários são o caso especial de exatamente duas categorias, como a colunaremoto, com valoressimenão; costumamos codificá-los como $0$ e $1$ por conveniência, e essa codificação, como veremos no artigo 4, tem uma propriedade agradável.
A tentação de tratar todo número como numérico é forte e perigosa.
Se codificarmos o nível como júnior $=1$, pleno $=2$, sênior $=3$ e calcularmos a média de nível da equipe, obteremos $1{,}875$. O resultado não significa absolutamente nada: não existe o nível $1{,}875$, e a distância entre os códigos foi inventada por nós, não medida no mundo. No domínio do nível profissional, a operação de média é sintaticamente possível e semanticamente vazia.
A regra, portanto, é dura: sobre nominais, só contamos frequências e identificamos a moda; sobre ordinais, além disso, podemos ordenar e tomar medianas e percentis; só sobre numéricos podemos somar, tirar médias e calcular desvios padrão. Cada artigo desta série respeitará essa hierarquia, e a leitora deve desconfiar de qualquer análise que a viole.
A Figura 2 reúne a taxonomia e essa hierarquia em um só lugar, com as colunas da nossa equipe nos exemplos. Vale notar a forma das três barras inferiores: elas crescem por inclusão, e a mais longa contém as mais curtas.
Figura 2: A hierarquia é cumulativa e somar é a única operação exclusiva das numéricas. É por isso que a média de um código postal existe como sintaxe e não como estatística.
2.1 Laboratório de Tipos de Dados
A distinção entre os tipos de dados que vimos na Seção 2 é fácil de ler e fácil de esquecer no calor de uma análise. Para fixá-la, o laboratório abaixo apresenta as seis colunas da nossa equipe e pede que a leitora classifique cada uma como numérica, ordinal, nominal ou binária. A cada classificação, o laboratório mostra quais operações, média, mediana, moda e ordenação, passam a ser legítimas, e sinaliza quando uma operação foi aplicada a um tipo que não a comporta, como tirar a média de uma variável nominal. Experimente classificar a linguagem como numérica e veja a mensagem que explica por que a média de Python e C++ não existe.
O que o laboratório torna palpável é que o tipo não é um rótulo burocrático: é uma restrição sobre o que se pode, ou não, fazer. A hierarquia é cumulativa. Sobre uma variável nominal, só a contagem de frequências e a moda fazem sentido. Sobre uma ordinal, ganhamos a ordenação e, com ela, a mediana e os percentis. Só sobre uma numérica a soma se torna legítima, e com ela a média, a variância e todo o maquinário que os próximos artigos vão erguer. A cuidadosa leitora que respeitar essa hierarquia nunca calculará a média de um código postal; a que a ignorar cometerá, mais cedo ou mais tarde, o erro de somar o que não se soma.
2.2 Exercícios da Seção 2
1. Classifique as variáveis da equipe
Classifique idade, salário, linguagem, nível e remoto. Para as variáveis numéricas, distinga o fenômeno medido do registro efetivamente armazenado.
Solução: Vamos aplicar dois critérios. Primeiro perguntamos se o valor representa quantidade ou pertencimento a uma categoria. Depois, para uma quantidade, verificamos se o registro admite um contínuo de valores ou apenas valores separados.
| Variável | Família | Subtipo do registro | Justificativa |
|---|---|---|---|
idade |
numérica | discreta | a tabela guarda anos completos, embora o tempo vivido varie continuamente |
salário |
numérica | contínua no modelo | o valor representa quantidade monetária; a moeda impõe uma resolução prática |
linguagem |
categórica | nominal | as categorias não possuem ordem estatística |
nível |
categórica | ordinal | júnior < pleno < sênior, mas as distâncias não foram medidas |
remoto |
categórica | binária | existem exatamente as categorias sim e não |
A classificação pertence à variável observada e à pergunta, não ao tipo usado pelo programa. idade poderia ser contínua se fosse registrada como duração precisa, e salário continuaria quantitativo mesmo armazenado em centavos inteiros.
2. Determine as operações legítimas sobre um código postal
Um código postal é armazenado como inteiro. Quais operações estatísticas continuam legítimas e quais produzem números sem interpretação geográfica?
Solução: O armazenamento inteiro permite que a máquina some os códigos, mas o significado da variável não fornece uma quantidade somável. Um código postal identifica uma região; a diferença aritmética entre dois códigos não mede distância física, área nem população.
Igualdade e desigualdade são legítimas para verificar se dois registros pertencem à mesma categoria. Também podemos contar frequências e identificar a moda, pois essas operações dependem apenas de pertencimento. Ordenar pode cumprir uma convenção administrativa do sistema postal, mas essa ordem não deve ser interpretada como proximidade geográfica.
Soma, média, variância e desvio padrão dos códigos são ilegítimos como medidas de localização. O tipo computacional é inteiro, enquanto o tipo estatístico é categórico nominal. A aparência numérica não concede significado à aritmética.
3. Compare mediana ordinal e média de códigos
Na equipe há três pessoas de nível júnior, três de nível pleno e duas de nível sênior. Mostre por que a mediana pode ser definida pela ordem, mas a média depende de distâncias arbitrárias.
Solução: Ordenando as oito categorias, obtemos
\[\text{júnior},\ \text{júnior},\ \text{júnior},\ \text{pleno},\ \text{pleno},\ \text{pleno},\ \text{sênior},\ \text{sênior}.\]Como $n=8$, as duas posições centrais são a quarta e a quinta, ambas pleno. A mediana ordinal é, portanto, pleno. Esse resultado usa somente a relação júnior < pleno < sênior.
Agora codificamos as categorias como $1$, $2$ e $3$. A média dos códigos é
\[\frac{3\cdot1+3\cdot2+2\cdot3}{8}=\frac{15}{8}=1{,}875.\]Uma segunda codificação crescente, $1$, $10$ e $11$, preserva exatamente a mesma ordem e a mesma mediana, mas produz
\[\frac{3\cdot1+3\cdot10+2\cdot11}{8}=\frac{55}{8}=6{,}875.\]| Codificação | Ordem | Mediana ordinal | Média dos códigos |
|---|---|---|---|
| $1,2,3$ | preservada | pleno |
$1{,}875$ |
| $1,10,11$ | preservada | pleno |
$6{,}875$ |
Como duas codificações igualmente compatíveis com a ordem geram médias diferentes, a média não é uma propriedade dos níveis. Ela é uma propriedade das distâncias artificiais escolhidas para os códigos.
4. Interprete a média de uma variável binária
Codifique remoto como $1$ para sim e $0$ para não. Calcule a média dos oito registros e interprete o resultado.
Solução: A coluna contém quatro valores sim e quatro valores não. Depois da codificação, temos quatro unidades e quatro zeros. A soma dos indicadores é
Dividindo pelo número de pessoas,
\[\bar{x}=\frac{4}{8}=0{,}5.\]Cada unidade conta uma pessoa remota, portanto a soma conta pessoas remotas e a média divide essa contagem pelo total. O valor $0{,}5$ é a proporção de pessoas com remoto = sim. Se invertêssemos a codificação, a média continuaria valendo $0{,}5$ neste conjunto equilibrado, mas passaria a representar a proporção de não. A categoria associada a $1$ faz parte da definição da estatística.
5. Decida como analisar uma escala de satisfação
Uma pesquisa registra satisfação de $1$ a $5$. A variável deve ser tratada como ordinal ou numérica? Formule uma resposta que declare a hipótese necessária e uma verificação de sensibilidade.
Solução: Para uma resposta individual, a classificação segura é ordinal. Sabemos que $5>4>3>2>1$, mas a escala, sozinha, não demonstra que a diferença percebida entre $1$ e $2$ seja igual à diferença entre $4$ e $5$. Sem igualdade de intervalos, mediana, percentis e frequências respeitam a informação disponível; a média acrescenta uma estrutura que não foi medida diretamente.
Em uma escala construída e validada para funcionar aproximadamente como intervalar, a analista pode adotar um modelo numérico. Essa decisão precisa ser declarada. Uma verificação simples é comparar conclusões obtidas com média e desvio padrão às conclusões obtidas com mediana e frequências por categoria.
Se ambas sustentarem a mesma conclusão substantiva, o resultado mostra menor sensibilidade à hipótese intervalar. Se divergirem, a divergência precisa aparecer no relatório. O erro não consiste em escolher um modelo; consiste em esconder a hipótese que tornou a operação possível.
3. O retângulo de dados
Quando a atenta leitora olhar a tabela da equipe, aquela da seção 1, em que começamos a discussão, deve ver uma estrutura tão familiar que quase não a percebe: um retângulo. Linhas de um lado, colunas do outro, um valor em cada célula. Nós a chamamos de tabela?
Essa estrutura tem nome técnico em inglês, data frame, e é o formato de trabalho quase universal da ciência de dados, ao ponto de bibliotecas inteiras, como o pandas em Python, existirem para manipulá-la.
No universo do C++
- DataFrame, de Hossein Moein: projeto que fornece manipulação de dados em memória, incluindo fatiamento (slicing), agrupamento (group-by), junção e algoritmos estatísticos e financeiros, usando apenas C++ e a biblioteca padrão.
- ROOT RDataFrame: biblioteca desenvolvida pelo laboratório CERN para manipulação e análise de dados tabulares, com avaliação preguiçosa (lazy evaluation) e processamento em múltiplas threads.
- Apache Arrow: plataforma para análise de dados em memória cuja API, de Application Programming Interface (interface de programação de aplicações), oferece em C++ tabelas e operações colunares para ler, escrever, filtrar e agrupar dados.
- xtensor / xframe: ecossistema em que xtensor manipula matrizes multidimensionais e xframe acrescenta estruturas tabulares baseadas em expressões e eixos rotulados.
No vocabulário que usaremos, cada linha é um registro, também chamado de observação, e representa uma unidade sobre a qual medimos coisas: no nosso caso, no nosso primeiro data frame, cada registro corresponde a uma pessoa. Também neste data frame, cada coluna é uma característica, quase sempre chamada pelo termo em inglês feature, e representa uma dimensão de medida: idade, salário, linguagem. A interseção entre linha e coluna, a célula, é o valor daquela característica para aquele registro. Agora podemos ser um pouco mais formais:
Um data frame é uma coleção de registros descritos pelo mesmo conjunto de características.
A Figura 3 anota um recorte da tabela da equipe. Leia primeiro a linha azul, depois a coluna violeta e, por fim, a célula em que ambas se encontram. O valor $13{,}4$ não é uma observação solta: ele é o salário, em milhares de reais, registrado para Hugo.
Figura 3: Uma célula só preserva significado quando continua ligada ao registro, à característica e à unidade em que o valor foi medido.
A estatística que faremos consiste, essencialmente, em fazer perguntas sobre colunas (como uma feature se distribui) e sobre relações entre colunas (como duas features variam juntas).
Nem todo dado é retangular, e vale registrar o contraste para não criar a ilusão de que o mundo chega arrumado em tabelas. Um texto livre, uma imagem, um grafo de conexões entre usuários, uma série de eventos com estrutura aninhada, nada disso cabe naturalmente em um retângulo.
A ciência de dados gasta uma fração enorme do seu tempo justamente em transformar dados não retangulares em retangulares, extraindo features de objetos bagunçados, porque é sobre o retângulo que as ferramentas estatísticas operam. Estabilidade e segurança.
Nesta série, para nos concentrarmos na estatística, partiremos quase sempre de dados já retangulares. A atenta leitora não pode esquecer que essa arrumação, na vida real, tem um custo, e que vieses introduzidos na arrumação contaminam tudo o que vem depois, um ponto ao qual voltaremos no artigo 7.
3.1 Exercícios da Seção 3
1. Localize unidade, registro, característica e célula
Na tabela da equipe, identifique a unidade observacional, o registro, a característica e a célula associados ao valor 13,4 de Hugo. Declare também a unidade de medida.
Solução: A unidade observacional é a entidade sobre a qual coletamos várias medidas. Na tabela, essa entidade é uma pessoa. O registro é a linha que reúne as medidas de uma unidade observacional; neste caso, é a linha de Hugo.
A característica é a coluna que mantém a mesma pergunta para todos os registros. O valor 13,4 está na coluna salário. A célula é a interseção entre a linha de Hugo e essa coluna. Como o cabeçalho declara salários em milhares de reais, a célula representa $13{,}4$ mil reais.
| Papel | Elemento na tabela |
|---|---|
| unidade observacional | uma pessoa |
| registro | linha de Hugo |
| característica | coluna salário |
| célula | 13,4 |
| unidade de medida | mil reais |
Separar esses papéis impede que tratemos células como unidades independentes. Idade, salário e nível pertencem à mesma pessoa e precisam permanecer ligados quando a pergunta depende dessa identidade.
2. Alinhe a unidade observacional à pergunta
Uma tabela possui uma linha por compra, mas a pergunta da análise é qual cliente compra mais?. Identifique a unidade do arquivo original, construa o resumo necessário e explique o risco de manter uma linha por compra.
Solução: No arquivo original, cada registro representa uma compra. Logo, a unidade observacional do arquivo é uma transação. A pergunta, porém, compara clientes. Para respondê-la, precisamos agrupar as compras pelo identificador do cliente.
Suponha que Ana tenha compras de R$ 40, R$ 60 e R$ 30, enquanto Bruno tenha uma compra de R$ 100. A tabela derivada deve conter uma linha por cliente:
| cliente | número de compras | valor total |
|---|---|---|
| Ana | 3 | R$ 130 |
| Bruno | 1 | R$ 100 |
O resumo mostra que Ana compra mais em valor total, embora nenhuma compra individual dela supere a de Bruno. Se tratássemos as quatro transações como quatro clientes independentes, Ana apareceria três vezes e teria peso triplo em estatísticas por pessoa. Essa repetição indevida da mesma unidade produz pseudorreplicação.
3. Transforme currículos em dados retangulares
Proponha uma unidade observacional e três características para transformar uma coleção de currículos em um retângulo de dados. Para cada característica, indique uma informação que a transformação pode perder.
Solução: Vamos escolher uma candidata como unidade observacional. Cada currículo produzirá uma linha. Três características possíveis são anos de experiência, maior titulação e número de linguagens de programação mencionadas.
| Característica extraída | Regra possível | Informação perdida |
|---|---|---|
| anos de experiência | diferença entre primeiro e último emprego | interrupções, simultaneidade e desatualização |
| maior titulação | categoria mais alta encontrada | área, qualidade do curso e relevância para a vaga |
| número de linguagens | contagem de nomes reconhecidos | proficiência, recência e profundidade de uso |
O retângulo permite comparar e modelar, mas a operação de extração cria definições que não estavam prontas no texto livre. Dez anos de experiência podem significar prática recente e contínua ou conhecimento abandonado há anos. Contar linguagens pode equiparar domínio profissional a uma menção em um curso introdutório.
A transformação não é neutra. Ela escolhe quais diferenças sobreviverão como colunas e quais desaparecerão antes que a primeira estatística seja calculada.
4. Modele uma quantidade variável de telefones
Explique por que armazenar telefone_1, telefone_2 e telefone_3 na tabela de pessoas pode ser inadequado. Proponha uma estrutura retangular que aceite qualquer quantidade de telefones.
Solução: A quantidade de telefones não é uma característica de cardinalidade fixa. Algumas pessoas não possuem telefone, outras possuem um, e outras podem possuir mais de três. As três colunas impõem um máximo artificial e espalham valores ausentes pela tabela.
Vamos separar as entidades em duas tabelas. A primeira mantém uma linha por pessoa:
| pessoa_id | nome |
|---|---|
| 17 | Ana |
| 23 | Hugo |
A segunda mantém uma linha por telefone:
| pessoa_id | telefone | tipo |
|---|---|---|
| 17 | 5550-1000 | móvel |
| 17 | 5550-1001 | trabalho |
| 23 | 5550-2000 | móvel |
O campo pessoa_id liga cada telefone à pessoa proprietária. A nova estrutura não inventa limite, preserva uma unidade observacional clara em cada tabela e permite contar ou agrupar telefones sem interpretar colunas vazias como medidas reais.
5. Mostre como a extração de características pode introduzir viés
Construa um exemplo em que currículos semanticamente equivalentes recebam características diferentes por causa da regra de extração. Localize o ponto em que o viés entra.
Solução: Suponha que o extrator conte competências somente quando encontra termos de um dicionário formal. Um currículo registra desenvolvimento de interfaces com JavaScript. Outro descreve a mesma experiência como criação de telas em JS. Se JS não estiver no dicionário, o primeiro currículo recebe javascript = 1 e o segundo recebe javascript = 0.
Os dois valores não refletem uma diferença de competência; refletem uma diferença entre as formas de escrever. Se abreviações e variantes regionais forem mais frequentes em determinados grupos, o erro de extração também será distribuído de modo desigual entre eles.
O viés entra quando o texto é convertido em característica, antes da média, do modelo ou da decisão. Um algoritmo posterior pode calcular perfeitamente sobre a coluna e ainda reproduzir a omissão criada pela regra determinística de extração.
4. População, amostra e a notação da série
Chegamos ao ponto em que a esforçada leitora será apresentada à distinção que dá sentido a toda a estatística inferencial, e por isso esta é a primeira seção matemática da série. A leitora atenta deve lê-la devagar, porque a confusão entre os dois conceitos que vamos separar aqui é a raiz de todo mal e de, pelo menos, metade dos erros estatísticos cometidos por profissionais competentes e atuantes no mercado. São dois pontos importantes:
-
Uma população é o conjunto completo de todos os elementos sobre os quais queremos concluir algo: todos os desenvolvedores do Brasil, todos os visitantes que um site terá, todos os parafusos que uma fábrica produzirá.
-
Uma amostra é o subconjunto que efetivamente observamos: os oito da nossa tabela, os mil visitantes de ontem, os cem parafusos que testamos semana passada.
A população é o objeto de interesse; a amostra é o que temos. Quase sempre a população é grande demais, cara demais ou até infinita, e a amostra é tudo a que temos acesso, nos limites da nossa capacidade real de pesquisa e processamento.
A população, ou a distribuição que a representa, possui quantidades fixas que a descrevem; cada uma dessas quantidades é um parâmetro. A média de idade de todos os desenvolvedores do Brasil é um parâmetro, mas também o é a proporção que trabalha remotamente. O parâmetro é fixo para a população definida, embora em geral seja desconhecido. Quando calculamos uma quantidade a partir da nossa amostra de oito pessoas, obtemos uma estatística: um valor conhecido depois que os dados foram observados, mas sujeito a mudar quando muda a amostra. Usamos estatísticas para estimar parâmetros, e a distância entre uns e outros é o assunto de toda a inferência.
A Figura 4 põe os dois lados frente a frente. Repare que as setas apontam em direções opostas: a amostragem vai da população para a amostra, e a inferência tenta o caminho de volta, que é o caminho difícil.
Figura 4: O parâmetro é fixo e desconhecido; a estatística é conhecida e muda a cada amostra. Toda a inferência da série consiste em atravessar a seta tracejada com uma margem declarada.
Para não confundir os dois, seguiremos pares convencionais de notação. A média populacional é $\mu$ e a média amostral observada é $\bar{x}$; o desvio padrão populacional é $\sigma$ e o amostral é $s$; a proporção populacional é $p$ e a amostral é $\hat{p}$. Não existe uma lei segundo a qual todo parâmetro use letra grega; o próprio $p$ desmentiria essa lei na mesma frase. Existe uma convenção local que declaramos e manteremos. Quando a leitora vir $\mu$, deve pensar em um parâmetro fixo da população; quando vir $\bar{x}$, em um valor calculado nos dados observados.
Formalmente, considere uma população finita com $N$ elementos, na qual $x_i$ representa o valor armazenado no índice $i$, de $0$ a $N-1$. A média populacional, denotada por $\mu$, é o parâmetro
\[\mu = \frac{1}{N}\sum_{i=0}^{N-1} x_i.\]Para uma amostra observada com $n$ valores, denotaremos por $\bar{x}$ a média amostral calculada; quando não há reposição, $n\le N$. Então,
\[\bar{x} = \frac{1}{n}\sum_{i=0}^{n-1} x_i,\]na qual $n$ é o tamanho da amostra. As duas fórmulas são quase idênticas, e essa semelhança esconde a diferença conceitual gigantesca: $\mu$ é um número fixo que não conhecemos, enquanto $\bar{x}$ é um número que muda a cada amostra que sorteamos.
Antes de observarmos a amostra, representamos cada observação por uma variável aleatória $X_i$ e a média produzida pela regra por $\bar{X}$. Essa regra aleatória é um estimador de $\mu$. Depois de observarmos valores concretos $x_i$, o número $\bar{x}$ é a estimativa realizada. Se sortearmos outra amostra, obteremos outra realização. A distinção tipográfica é pequena, mas conceitual: $\bar{X}$ descreve o comportamento do procedimento de amostragem; $\bar{x}$ é o resultado que temos na mão.
| Símbolo | Nome/Termo falado | Categoria | Significado |
|---|---|---|---|
| $\mu$ | Média populacional (mú) | Parâmetro | A média real de toda a população. |
| $\bar{X}$ | Estimador da média (xis barra maiúsculo) | Variável aleatória / Estimador | A regra aleatória de amostragem. |
| $\bar{x}$ | Média amostral (xis barra) | Estatística / Estimativa | O número final calculado na amostra. |
Sob uma condição que não pode ficar escondida, a média amostral é não viesada. Precisamos de um mecanismo aleatório no qual cada posição amostral tenha a distribuição correta da população, de modo que $\mathbb{E}[X_i]=\mu$. Isso ocorre, por exemplo, em sorteios independentes com reposição e também em amostragem aleatória simples sem reposição, embora nesse segundo caso as observações não sejam independentes. Uma amostra por conveniência não recebe essa garantia por osmose. Nessas condições,
\[\mathbb{E}[\bar{X}] = \mathbb{E}\!\left[\frac{1}{n}\sum_{i=0}^{n-1} X_i\right] = \frac{1}{n}\sum_{i=0}^{n-1} \mathbb{E}[X_i] = \frac{1}{n}\sum_{i=0}^{n-1} \mu = \mu.\]O terceiro passo usa exatamente a hipótese $\mathbb{E}[X_i]=\mu$; a linearidade da esperança não exige independência. Não é viés zero porque tivemos sorte, mas porque o plano amostral preserva a média da população em cada posição. A igualdade não diz que $\bar{x}$ de uma amostra específica é igual a $\mu$: diz que a distribuição de $\bar{X}$ está centrada em $\mu$. Em uma única amostra, $\bar{x}$ quase sempre difere do parâmetro, e medir essa diferença é o assunto dos artigos 7 e 8.
Um exemplo minúsculo torna tudo concreto, e vamos reutilizá-lo nos exercícios. Tome a população ${2, 4, 6}$, com $N = 3$. Seu parâmetro de média é $\mu = (2+4+6)/3 = 4$, exato e conhecido porque, excepcionalmente, temos a população inteira. Agora finja que só podemos observar amostras de tamanho $2$, sorteadas com reposição. Há $3^2 = 9$ amostras igualmente prováveis, e cada uma dá um $\bar{x}$:
| amostra | $(2,2)$ | $(2,4)$ | $(2,6)$ | $(4,2)$ | $(4,4)$ | $(4,6)$ | $(6,2)$ | $(6,4)$ | $(6,6)$ |
|---|---|---|---|---|---|---|---|---|---|
| $\bar{x}$ | $2$ | $3$ | $4$ | $3$ | $4$ | $5$ | $4$ | $5$ | $6$ |
Nenhum $\bar{x}$ individual é obrigado a valer $4$: os valores vão de $2$ a $6$. Mas a média dos nove valores de $\bar{x}$ é $(2+3+4+3+4+5+4+5+6)/9 = 36/9 = 4 = \mu$. O estimador erra em quase toda amostra e acerta na média das amostras. Essa é, em miniatura, a ideia inteira da estimação estatística, e a leitora que a compreendeu aqui compreenderá o teorema central do limite quando ele chegar.
4.1 Laboratório de População
O segundo laboratório continua avaliando a população ${2,4,6}$. Neste caso, a curiosa leitora escolhe o tamanho da amostra e a reposição, vê todas as amostras quando a enumeração cabe na tela e acompanha a distribuição de $\bar{X}$. O objetivo não é decorar que a média é não viesada: é enxergar que essa propriedade pertence ao mecanismo de amostragem, enquanto cada estimativa individual continua livre para errar.
4.2 Exercícios da Seção 4
1. Classifique parâmetros e estatísticas
Classifique: (a) a idade média dos oito membros da equipe é $33{,}875$ anos; (b) a idade média de todos os desenvolvedores do Brasil é desconhecida; (c) o desvio padrão dos salários da amostra é $s$; (d) a proporção de todos os desenvolvedores que trabalham remotamente é $p$; (e) $\hat{p}=0{,}5$ na equipe observada.
Solução: Um parâmetro descreve uma população definida e permanece fixo enquanto essa população não muda. Uma estatística é calculada a partir da amostra observada e pode mudar quando sorteamos outra amostra.
| Item | Conjunto descrito | Símbolo apropriado | Categoria |
|---|---|---|---|
| (a) | oito pessoas observadas | $\bar{x}$ | estatística |
| (b) | todos os desenvolvedores do Brasil | $\mu$ | parâmetro |
| (c) | salários da amostra | $s$ | estatística |
| (d) | todos os desenvolvedores | $p$ | parâmetro |
| (e) | equipe observada | $\hat{p}$ | estatística |
O item (d) mostra por que não existe uma lei universal que reserve letras gregas aos parâmetros: $p$ é latino e representa uma proporção populacional. O contexto e o par de notação declarado, não o alfabeto, determinam a categoria.
2. Compare parâmetros populacionais e uma média amostral
Para a população ${2,4,6}$, calcule a média $\mu$, a variância $\sigma^2$ e o desvio padrão $\sigma$. Depois calcule $\bar{x}$ para a amostra específica $(2,4)$ e interprete a diferença.
Solução: A população possui $N=3$ elementos. A média populacional é
\[\mu=\frac{2+4+6}{3}=\frac{12}{3}=4.\]Os desvios em relação a $\mu$ são $2-4=-2$, $4-4=0$ e $6-4=2$. Elevando-os ao quadrado e usando o denominador populacional $N=3$,
\[\sigma^2=\frac{(-2)^2+0^2+2^2}{3}=\frac{4+0+4}{3}=\frac{8}{3}\approx2{,}6667.\]O desvio padrão populacional é
\[\sigma=\sqrt{\frac{8}{3}}\approx1{,}6330.\]Na amostra $(2,4)$, temos $n=2$ e
\[\bar{x}=\frac{2+4}{2}=3.\]| Conjunto | Quantidade | Valor | Natureza |
|---|---|---|---|
| população ${2,4,6}$ | $\mu$ | $4$ | parâmetro |
| população ${2,4,6}$ | $\sigma^2$ | $8/3$ | parâmetro |
| população ${2,4,6}$ | $\sigma$ | $1{,}6330$ | parâmetro |
| amostra $(2,4)$ | $\bar{x}$ | $3$ | estatística |
Portanto, $\bar{x}=3\ne4=\mu$. Esta amostra subestima o parâmetro em $3-4=-1$. A diferença não indica erro de cálculo; mostra que uma estatística realizada pode se afastar do parâmetro que pretende estimar.
3. Demonstre que a média amostral é não viesada
Considere $n\ge1$ posições amostrais representadas pelas variáveis aleatórias $X_0,\ldots,X_{n-1}$. Suponha que o plano amostral garanta $\mathbb{E}[X_i]=\mu$ para toda posição $i$. Prove que $\mathbb{E}[\bar{X}]=\mu$ e identifique a hipótese usada em cada passo.
Solução: O estimador da média é
\[\bar{X}=\frac{1}{n}\sum_{i=0}^{n-1}X_i.\]Aplicamos a esperança aos dois lados. Como $1/n$ é constante, ele pode sair da esperança:
\[\mathbb{E}[\bar{X}] =\mathbb{E}\!\left[\frac{1}{n}\sum_{i=0}^{n-1}X_i\right] =\frac{1}{n}\mathbb{E}\!\left[\sum_{i=0}^{n-1}X_i\right].\]Pela linearidade da esperança,
\[\mathbb{E}[\bar{X}] =\frac{1}{n}\sum_{i=0}^{n-1}\mathbb{E}[X_i].\]A linearidade não exige independência. Agora usamos a hipótese específica do plano amostral, $\mathbb{E}[X_i]=\mu$ em cada posição:
\[\mathbb{E}[\bar{X}] =\frac{1}{n}\sum_{i=0}^{n-1}\mu =\frac{1}{n}\,n\mu =\mu.\]| Passo | Transformação | Justificativa |
|---|---|---|
| 1 | definir $\bar{X}=n^{-1}\sum_iX_i$ | regra do estimador |
| 2 | retirar $1/n$ da esperança | constante em relação ao sorteio |
| 3 | trocar a esperança da soma pela soma das esperanças | linearidade, sem exigir independência |
| 4 | substituir cada $\mathbb{E}[X_i]$ por $\mu$ | hipótese do plano amostral |
Logo, $\bar{X}$ é não viesado para $\mu$. A conclusão depende das médias marginais corretas em todas as posições; uma amostra por conveniência não recebe essa propriedade apenas por conter muitos elementos.
4. Enumere a distribuição da média amostral
Enumere todas as amostras ordenadas de tamanho $2$, com reposição, da população ${2,4,6}$. Calcule a média de cada amostra e depois a esperança de $\bar{X}$.
Solução: Em cada uma das duas posições podemos escolher qualquer um dos três valores. Há, portanto,
\[3\cdot3=3^2=9\]amostras ordenadas, todas com probabilidade $1/9$.
| Amostra | Cálculo de $\bar{x}$ | $\bar{x}$ |
|---|---|---|
| $(2,2)$ | $(2+2)/2$ | $2$ |
| $(2,4)$ | $(2+4)/2$ | $3$ |
| $(2,6)$ | $(2+6)/2$ | $4$ |
| $(4,2)$ | $(4+2)/2$ | $3$ |
| $(4,4)$ | $(4+4)/2$ | $4$ |
| $(4,6)$ | $(4+6)/2$ | $5$ |
| $(6,2)$ | $(6+2)/2$ | $4$ |
| $(6,4)$ | $(6+4)/2$ | $5$ |
| $(6,6)$ | $(6+6)/2$ | $6$ |
Como as nove amostras são equiprováveis,
\[\mathbb{E}[\bar{X}] =\frac{2+3+4+3+4+5+4+5+6}{9} =\frac{36}{9} =4.\]A média populacional também vale $\mu=(2+4+6)/3=4$. A enumeração completa confirma $\mathbb{E}[\bar{X}]=\mu$ sem exigir que cada realização de $\bar{x}$ seja igual a $4$.
5. Construa uma estimativa diferente do parâmetro
Escolha uma amostra de tamanho $2$ de ${2,4,6}$ cuja média difira de $\mu$. Calcule o erro e explique por que o resultado não contradiz o não viés demonstrado no exercício anterior.
Solução: Vamos escolher a amostra $(6,6)$. Sua estimativa é
\[\bar{x}=\frac{6+6}{2}=6.\]Como $\mu=4$, o erro realizado é
\[\bar{x}-\mu=6-4=2.\]Essa amostra superestima o parâmetro em duas unidades. No exercício anterior, porém, não demonstramos $\bar{x}=\mu$ para toda amostra. Demonstramos que a variável aleatória $\bar{X}$ tem esperança $\mu$ quando consideramos todas as amostras segundo suas probabilidades.
A amostra $(2,2)$ produz erro $2-4=-2$ e compensa, na distribuição, o erro de $(6,6)$. O estimador é centrado no parâmetro, mas cada estimativa permanece livre para cair acima ou abaixo dele. Não viesado não significa exato em cada amostra.
5. Um primeiro contato com os dados em C++
Com os conceitos assentados, vamos fazer o que a ciência de dados faz o tempo todo: carregar um conjunto de observações e extrair dele as primeiras estatísticas. O programa a seguir recebe os oito salários da nossa equipe, em milhares de reais, e reporta o tamanho da amostra, o mínimo, o máximo, a soma, a média e a mediana. É uma implementação didática de referência em uma Central Processing Unit (CPU), ou unidade central de processamento: privilegia contratos visíveis e resultado verificável, não um benchmark. O código usa apenas a biblioteca padrão de C++23 e pode ser compilado no Microsoft Visual C++ (MSVC) com cl /std:c++latest /O2 /W4 /permissive- /EHsc primeiro_contato.cpp.
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <numeric>
#include <span>
#include <stdexcept>
#include <vector>
/**
* @brief Computes the arithmetic mean of a non-empty sample view.
* @throws std::invalid_argument when the sample has no observations.
*/
double media(std::span<const double> dados) {
if (dados.empty()) {
throw std::invalid_argument("a média exige ao menos uma observação");
}
const double soma = std::accumulate(dados.begin(), dados.end(), 0.0);
return soma / static_cast<double>(dados.size());
}
/**
* @brief Computes the median without changing the order of the source sample.
* @throws std::invalid_argument when the sample has no observations.
*/
double mediana(std::span<const double> dados) {
if (dados.empty()) {
throw std::invalid_argument("a mediana exige ao menos uma observação");
}
std::vector<double> ordenados(dados.begin(), dados.end());
std::ranges::sort(ordenados);
const std::size_t n = ordenados.size();
if (n % 2 == 1) {
return ordenados[n / 2];
}
return std::midpoint(ordenados[n / 2 - 1], ordenados[n / 2]);
}
int main() {
// Values remain in thousands of BRL so every reported statistic preserves the table's scale.
const std::vector<double> salarios = {6.5, 9.0, 12.0, 15.5, 8.2, 22.0, 7.1, 13.4};
const double soma = std::accumulate(salarios.begin(), salarios.end(), 0.0);
const double minimo = *std::min_element(salarios.begin(), salarios.end());
const double maximo = *std::max_element(salarios.begin(), salarios.end());
std::cout << std::fixed << std::setprecision(4);
std::cout << "n = " << salarios.size() << '\n';
std::cout << "soma = " << soma << '\n';
std::cout << "minimo = " << minimo << '\n';
std::cout << "maximo = " << maximo << '\n';
std::cout << "media = " << media(salarios) << '\n';
std::cout << "mediana= " << mediana(salarios) << '\n';
return 0;
}
A saída do programa é
n = 8
soma = 93.7000
minimo = 6.5000
maximo = 22.0000
media = 11.7125
mediana= 10.5000
e nela já mora uma pequena lição que o artigo 3 desta série vai desenvolver. A média salarial, $11{,}7125$ mil, é maior que a mediana, $10{,}5$ mil. O salário de $22{,}0$ mil puxa a média para cima, enquanto a mediana, que depende apenas dos dois valores centrais, resiste melhor a esse puxão. Essa ordem sugere que vale investigar uma cauda à direita, mas não a prova: média maior que mediana, isoladamente, não determina a forma de uma distribuição. Guardaremos a suspeita, e a cautela, para formalizá-las como assimetria no artigo 3.
std::span<const double> deixa explícito que as funções leem uma região contígua sem possuir os salários. A mediana cria sua própria cópia antes de ordenar, usa std::ranges::sort para expressar a operação completa e usa std::midpoint para calcular o centro do par sem formar antes a soma dos dois valores. O caso vazio é rejeitado antes de qualquer divisão ou acesso a elemento.
Nos laboratórios da disciplina, a implementação interna em Python usa o método describe de pandas para produzir um resumo mais amplo. Com os mesmos oito salários, ele confirma contagem $8$, média $11{,}7125$, mínimo $6{,}5$, mediana $10{,}5$ e máximo $22{,}0$. Também reporta quartis e desvio padrão amostral, objetos que ainda não definimos e que pertencem aos artigos 2 e 3. A conveniência é útil depois que sabemos o que cada número significa; antes disso, é apenas uma forma rápida de produzir resultados que ainda não sabemos ler.
5.1 Exercícios da Seção 5
1. Reconstrua soma, média e mediana
Sem executar o programa, mostre de onde vêm soma = 93,7000, media = 11,7125 e mediana = 10,5000.
Solução: A soma percorre os oito salários, em milhares de reais:
\[6{,}5+9{,}0+12{,}0+15{,}5+8{,}2+22{,}0+7{,}1+13{,}4=93{,}7.\]Como $n=8$, a média é
\[\bar{x}=\frac{93{,}7}{8}=11{,}7125.\]Para a mediana, primeiro ordenamos os valores:
\[6{,}5,\ 7{,}1,\ 8{,}2,\ 9{,}0,\ 12{,}0,\ 13{,}4,\ 15{,}5,\ 22{,}0.\]O tamanho é par, então os dois valores centrais são o quarto e o quinto, $9{,}0$ e $12{,}0$. Logo,
\[\operatorname{mediana}=\operatorname{midpoint}(9{,}0,12{,}0)=\frac{9{,}0+12{,}0}{2}=10{,}5.\]A formatação com quatro casas decimais transforma esses resultados em 93.7000, 11.7125 e 10.5000. O programa e o cálculo manual usam os mesmos oito valores e chegam aos mesmos números.
2. Analise o contrato para entrada vazia
O que aconteceria se media aceitasse um std::span<const double> vazio sem a verificação inicial? Separe o que o programa calcularia do que a estatística define.
Solução: Para um intervalo vazio, std::accumulate começa em 0.0 e não encontra elementos. A soma permanece igual a $0$. O tamanho do span também é $0$, de modo que a expressão tentaria calcular
Essa divisão não define uma média. Em implementações de ponto flutuante compatíveis com IEC 60559, o resultado usual é NaN, um valor não numérico, mas o problema existe antes da representação escolhida: não há observações e, portanto, não há estatística amostral para calcular.
A verificação dados.empty() transforma uma saída silenciosamente inválida em std::invalid_argument. O contrato localiza a falha no ponto em que a pré-condição foi violada e impede que um valor sem interpretação continue pela análise.
3. Explique propriedade e vida útil de std::span
Por que std::span<const double> não copia os salários nem é proprietário deles? O que precisa permanecer vivo durante a chamada?
Solução: O std::vector<double> de main aloca e possui os oito elementos. Ao construir o span, passamos uma visão formada essencialmente por um endereço para o primeiro elemento e um tamanho. Nenhum novo vetor de salários é criado.
O qualificador const pertence aos elementos vistos pela função: media e mediana podem ler, mas não alterar os valores por essa interface. Ele não prolonga a vida útil do vetor. Durante toda a chamada, o proprietário precisa continuar vivo e não pode executar uma operação que invalide a região observada, como uma realocação.
No programa, o vetor salarios vive até o final de main, portanto cobre as duas chamadas. A função mediana cria deliberadamente um std::vector<double> próprio antes de ordenar; essa cópia evita modificar o vetor original e continua válida independentemente da ordem dos dados de entrada.
4. Justifique o uso de std::midpoint
Por que a mediana de tamanho par usa std::midpoint(a,b) em vez de calcular diretamente (a+b)/2.0?
Solução: As duas expressões representam matematicamente o mesmo ponto médio:
\[m=\frac{a+b}{2}.\]Na expressão direta, porém, o programa forma primeiro $a+b$. Para dois valores finitos, grandes e de mesmo sinal, essa soma intermediária pode ultrapassar o maior valor representável, ainda que o ponto médio esteja entre $a$ e $b$ e seja representável.
std::midpoint implementa o cálculo sem exigir essa soma intermediária perigosa. Para os valores centrais do exemplo,
Neste conjunto pequeno, as duas formas produzem o mesmo resultado. A escolha da função padrão preserva o significado e amplia a segurança para entradas de maior magnitude, sem esconder a operação estatística realizada.
5. Acrescente a amplitude à saída
Defina a amplitude, calcule seu valor para os oito salários e escreva a linha C++23 que poderia ser acrescentada ao programa.
Solução: A amplitude é a diferença entre o máximo e o mínimo observados. O programa já encontrou
\[\max(x)=22{,}0 \qquad\text{e}\qquad \min(x)=6{,}5.\]Logo,
\[\operatorname{amplitude}=22{,}0-6{,}5=15{,}5\text{ mil reais}.\]Depois do cálculo de maximo e minimo, podemos acrescentar
const double amplitude = maximo - minimo;
std::cout << "amplitude = " << amplitude << '\n';
Com a formatação já configurada, a saída será amplitude = 15.5000. A extensão reutiliza valores validados pelo programa e acrescenta uma medida de dispersão sem percorrer novamente o vetor.
6. Integração dos conceitos
Vamos fechar o percurso reunindo decisões que apareceram separadas: tipo estatístico, operação legítima, unidade observacional e mecanismo amostral. Os cinco exercícios seguintes exigem que a leitora declare a hipótese antes de calcular e interprete o número depois do cálculo.
6.1 Exercícios da Seção 6
1. Diagnostique uma média de níveis profissionais
O explorador de tipos permite testar a hipótese de que nível seja numérico. Se júnior, pleno e sênior forem codificados como $1$, $2$ e $3$, qual hipótese foi acrescentada e qual operação revela o problema?
Solução: A ordem júnior < pleno < sênior pertence aos dados ordinais. A codificação $1$, $2$ e $3$ acrescenta a hipótese de que as duas distâncias sejam iguais:
Nenhuma observação da carreira forneceu essa igualdade. A média revela a hipótese porque depende dos intervalos escolhidos. Com três pessoas juniores, três plenas e duas seniores,
\[\bar{x}_{1,2,3}=\frac{3\cdot1+3\cdot2+2\cdot3}{8}=1{,}875.\]Se preservarmos a ordem, mas usarmos $1$, $10$ e $11$, a média muda para
\[\bar{x}_{1,10,11}=\frac{3\cdot1+3\cdot10+2\cdot11}{8}=6{,}875.\]A ordenação e a mediana permanecem iguais nas duas codificações. Portanto, a média denuncia a distância arbitrária acrescentada pela classificação incorreta.
2. Compare três resumos de uma variável binária
Uma variável binária codificada em $0$ e $1$ contém seis unidades e dois zeros. Calcule moda, mediana e média e explique o que cada medida informa.
Solução: Ordenando os oito valores, obtemos
\[0,\ 0,\ 1,\ 1,\ 1,\ 1,\ 1,\ 1.\]O valor mais frequente é $1$, com seis ocorrências, portanto a moda é $1$. Como $n=8$, a mediana usa o quarto e o quinto valores. Ambos são $1$:
\[\operatorname{mediana}=\frac{1+1}{2}=1.\]A soma é $6$, e a média é
\[\bar{x}=\frac{6}{8}=0{,}75.\]| Medida | Resultado | Informação preservada |
|---|---|---|
| moda | $1$ | categoria mais frequente |
| mediana | $1$ | posição central na ordem escolhida |
| média | $0{,}75$ | proporção da categoria codificada como $1$ |
A moda identifica a categoria mais comum. A mediana mostra que pelo menos metade dos registros está na categoria $1$. A média informa a proporção de unidades, $75\%$, porque a codificação indicadora transforma a soma em contagem da categoria $1$. As três medidas existem, mas respondem a perguntas diferentes.
3. Conte amostras com reposição e calcule o centro
Para a população ${2,4,6}$, tome amostras ordenadas de tamanho $n=2$ com reposição. Determine o número de amostras, a distribuição de $\bar{X}$ e sua esperança.
Solução: Cada uma das duas posições aceita três valores. Assim, o número de pares é
\[3^2=9.\]As médias correspondentes aos pares $(2,2)$, $(2,4)$, $(2,6)$, $(4,2)$, $(4,4)$, $(4,6)$, $(6,2)$, $(6,4)$ e $(6,6)$ são
\[2,\ 3,\ 4,\ 3,\ 4,\ 5,\ 4,\ 5,\ 6.\]Todas as amostras têm probabilidade $1/9$, então
\[\mathbb{E}[\bar{X}] =\frac{2+3+4+3+4+5+4+5+6}{9} =\frac{36}{9} =4.\]Como $\mu=(2+4+6)/3=4$, a distribuição da média amostral está centrada no parâmetro.
4. Refaça a enumeração sem reposição
Para a mesma população, liste as amostras ordenadas de tamanho $2$ sem reposição, calcule cada média e verifique a esperança de $\bar{X}$.
Solução: A primeira posição possui três escolhas. Depois dela, restam duas escolhas para a segunda posição. Logo,
\[3\cdot2=6\]pares ordenados são possíveis.
| Amostra | $\bar{x}$ |
|---|---|
| $(2,4)$ | $3$ |
| $(2,6)$ | $4$ |
| $(4,2)$ | $3$ |
| $(4,6)$ | $5$ |
| $(6,2)$ | $4$ |
| $(6,4)$ | $5$ |
Os seis pares são equiprováveis sob o sorteio aleatório simples ordenado. Portanto,
\[\mathbb{E}[\bar{X}] =\frac{3+4+3+5+4+5}{6} =\frac{24}{6} =4 =\mu.\]As duas posições são dependentes, pois o primeiro valor removido altera as escolhas seguintes. Ainda assim, cada posição preserva média marginal $4$, e a linearidade da esperança mantém o estimador centrado em $\mu$.
5. Separe uma realização da distribuição do estimador
Selecione uma amostra com $\bar{x}=6$ e explique, usando a distribuição completa, por que ainda temos $\mathbb{E}[\bar{X}]=4$.
Solução: Com reposição, a amostra $(6,6)$ é possível e produz
\[\bar{x}=\frac{6+6}{2}=6.\]Esse número é uma estimativa realizada. Ele pertence a uma das nove amostras possíveis e tem probabilidade $1/9$. A variável aleatória $\bar{X}$, por sua vez, reúne todos os valores possíveis com suas probabilidades:
\[2,\ 3,\ 4,\ 3,\ 4,\ 5,\ 4,\ 5,\ 6.\]O valor $6$ contribui com $6/9$ para a esperança, mas não é a única contribuição. Somando todas,
\[\mathbb{E}[\bar{X}]=\frac{36}{9}=4.\]Portanto, $\bar{x}=6$ descreve uma realização particular, enquanto $\mathbb{E}[\bar{X}]=4$ descreve o centro do procedimento de amostragem. Confundir os dois níveis transformaria uma propriedade da distribuição em uma exigência impossível para cada amostra.
7. Questões difíceis de múltipla escolha
O laboratório a seguir reúne dez questões integrativas nos formatos de classificação de afirmações e de asserção e razão. As alternativas foram construídas para que a resposta dependa da análise de cada proposição, não do reconhecimento de uma frase isolada. Depois de confirmar uma resposta, a correção fica bloqueada e apresenta a justificativa completa.
8. Conclusão
Este primeiro artigo não provou nenhum teorema profundo, e não era para provar. Ele fez algo mais básico e mais necessário: estabeleceu o vocabulário sobre o qual toda a série vai falar. A leitora agora distingue descrição de inferência, sabe que o tipo de uma variável comanda as operações legítimas sobre ela, reconhece um data frame como o retângulo de registros e features onde a análise acontece, e, sobretudo, separa o parâmetro que quer conhecer da estatística que consegue calcular.
Essa última distinção é a semente de tudo. O estimador $\bar{X}$ é uma variável aleatória centrada em $\mu$ sob o plano amostral declarado; a estimativa observada $\bar{x}$ é um número que em geral difere do parâmetro por alguma margem. Medir essa margem, transformá-la de fonte de ansiedade em número controlado, é a razão de ser da estatística inferencial, e é para onde a série caminha. Antes de inferir, porém, precisamos descrever bem, e descrever começa por dizer onde está o centro dos dados e o quanto eles se espalham. O próximo artigo abre a estatística descritiva pela sua pergunta mais simples e mais traiçoeira: onde, exatamente, está o meio de um conjunto de números?
Acrônimos e Abreviações neste artigo
A seguir está a lista de todos os acrônimos e abreviações identificados no texto, organizados em ordem alfabética com o termo original em inglês e a tradução para o português:
| Acrônimo / Abreviação | Definição em Inglês | Tradução em Português |
|---|---|---|
API |
Application Programming Interface | Interface de Programação de Aplicações |
CPU |
Central Processing Unit | Unidade Central de Processamento |
MSVC |
Microsoft Visual C++ | Microsoft Visual C++ |
Referências
ADHIKARI, A.; DENERO, J.; WAGNER, D. Computational and Inferential Thinking: The Foundations of Data Science. UC Berkeley Data 8. Disponível em: https://inferentialthinking.com/. Acesso em: 3 ago. 2026.
APACHE SOFTWARE FOUNDATION. Apache Arrow C++: tabular data. Disponível em: https://arrow.apache.org/docs/cpp/tables.html. Acesso em: 3 ago. 2026.
BRUCE, P.; BRUCE, A.; GEDECK, P. Practical Statistics for Data Scientists. 2. ed. Sebastopol: O’Reilly, 2020. Disponível em: https://www.oreilly.com/library/view/practical-statistics-for/9781492072935/. Acesso em: 3 ago. 2026.
CERN. ROOT: RDataFrame. Disponível em: https://root.cern/doc/master/group__dataframe.html. Acesso em: 3 ago. 2026.
MICROSOFT. Microsoft C/C++ language conformance. Disponível em: https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170. Acesso em: 3 ago. 2026.
MOEIN, H. C++ DataFrame Library Documentation. Disponível em: https://hosseinmoein.github.io/DataFrame/docs/HTML/DataFrame.html. Acesso em: 3 ago. 2026.
PANDAS DEVELOPMENT TEAM. pandas.Series.describe. Disponível em: https://pandas.pydata.org/docs/reference/api/pandas.Series.describe.html. Acesso em: 3 ago. 2026.
XTENSOR TEAM. xframe. Disponível em: https://xframe.readthedocs.io/en/latest/. Acesso em: 3 ago. 2026.
Índice da Série: Estatística Orientada à Ciência de Dados
- 1. A Estatística na Ciência de Dados e a Anatomia dos Dados (Você está aqui)
- 2. Estimativas de Localização e de Variabilidade
- 4. Dados Categóricos e os Fundamentos da Probabilidade
(Updated: )