Section outline

    • A Importância da Estatística no Mundo Atual

      A estatística é fundamental para compreendermos o mundo ao nosso redor. Ela não se restringe à matemática: está presente em todas as áreas do conhecimento. Para termos confiança nos resultados de qualquer observação ou experimento, é necessário repetir várias vezes o mesmo procedimento. É justamente a estatística que nos ajuda a analisar esses dados e entender o que eles realmente estão nos dizendo.

      Por isso, a estatística é amplamente utilizada não apenas nas ciências exatas, mas também nas ciências biológicas e humanas. Ela permite tomar decisões com base em evidências e identificar padrões em meio à incerteza.

      Além do uso científico, é importante compreender estatística no dia a dia. Muitas vezes, ela é usada para manipular ou distorcer informações, especialmente em propagandas ou discursos políticos. Saber interpretar dados estatísticos nos torna cidadãos mais críticos e conscientes.

      🎯 Como identificar estatísticas enganosas na media ou na publicidade

      Reconhecer estatísticas enganosas é uma competência essencial — e pode ser bastante interessante de explorar com alunos ou em discussões críticas. Eis alguns dos truques mais comuns, com exemplos que podes usar:


      📈 1. Falta de referência (valor base)

      Truque: “As vendas aumentaram 50%!”
      O que falta? Aumentaram de quanto para quanto? Se passaram de 2 para 3 unidades, é de facto 50% — mas o número total continua a ser muito pequeno.

      Pergunta crítica: “50% de quê?”


      📉 2. Eixos manipulados ou truncados

      Truque: Gráficos de barras ou linhas onde o eixo Y não começa no zero, fazendo pequenas diferenças parecerem grandes.

      Exemplo:
      Se o eixo Y começa nos 90 em vez de 0, uma mudança de 91 para 93 parece enorme.

      Sugestão: Verifica sempre a escala dos eixos — o visual corresponde aos números?


      📊 3. Médias enganosas

      Truque: Usar a média aritmética quando a mediana seria mais representativa (especialmente se há valores extremos).

      Exemplo:
      “A empresa paga, em média, 70.000 € por ano.”
      Mas a maioria dos trabalhadores recebe 10.000 € — apenas os diretores ganham milhões.

      Discussão útil: Diferença entre média, mediana e moda — e quando usar cada uma.


      🔗 4. Confundir correlação com causalidade

       

      Termo Significado
      Correlação É uma relação estatística entre duas variáveis. Elas se movimentam juntas, mas uma não necessariamente causa a outra.
      Causalidade Quando um evento ou variável causa diretamente a mudança na outra.

      Exemplos de correlação (sem causalidade)

      1. Vendas de sorvete ↔ Afogamentos
      • Correlação: Ambos aumentam no verão.

      • Sem causalidade: O calor causa o aumento de ambos, separadamente.

      2. Número de igrejas ↔ Taxa de criminalidade
      • Cidades grandes têm mais igrejas e mais crimes — mas o real fator é o  tamanho da população.

      Exemplo de Causalidade

      Casos em que uma coisa claramente causa a outra.

      1. Fumar → Câncer de pulmão
      • Causalidade: O fumo danifica os pulmões e aumenta o risco de câncer.

      • Comprovado por mecanismos biológicos e estudos de longo prazo.


      📏 5. Amostras muito pequenas

      Truque: “80% das pessoas preferem o nosso produto!”
      Mas o inquérito foi feito a... 5 pessoas.

      Pergunta crítica: Quantas pessoas participaram? Foi uma amostra representativa?


      🧮 6. Seleção parcial dos dados (cherry-picking)

      Truque: Mostrar só uma parte da linha temporal que favorece uma tendência.

      Exemplo: Um gráfico mostra crescimento de 2020 a 2021, mas omite a queda em 2022.

      Recomendação: Procura ver a tendência completa, não apenas trechos favoráveis.


      🥧 7. Percentagens que não somam 100%

      Truque: Gráficos de setores (pizza) ou inquéritos onde a soma ultrapassa os 100%.

      Verifica: As percentagens batem certo? As categorias sobrepõem-se?

    • O livro Bad Pharma, de Ben Goldacre, descreve em detalhe muitos truques usados na área médico-farmacêutica para facilitar a provação de uma nova droga, por exemplo, ou tratamento. A table abaixo apresenta um resumo:

       

      📊 Tabela: Enganos Estatísticos em Pesquisa Médica 

      Tipo de Manipulação Explicação Exemplo Simples
      1 Viés de Publicação Estudos com resultados negativos não são publicados. 5 estudos negativos + 1 positivo → só o positivo é publicado.
      2 P-hacking Testes múltiplos até encontrar p < 0.05 por acaso. Tenta 20 análises → 1 parece “significativa” por sorte.
      3 Tamanho de amostra pequeno Pequenos estudos mostram flutuações grandes por acaso. Estudo com 10 pessoas mostra efeito forte, mas não se repete com 100.
      4 Encerramento precoce de estudo Interrompe estudo cedo quando resultados ainda estão instáveis. Para o estudo ao ver melhora temporária → superestima o benefício.
      5 Risco relativo vs. absoluto Apresenta redução de risco relativa (grande) sem contexto absoluto. “50% menos risco” = de 2% para 1% (só 1% de diferença real).
      6 Comparações não representativas Compara com placebo ou dose ineficaz de concorrente. Novo remédio comparado com placebo, mesmo existindo tratamento eficaz.
      7 Seleção de subgrupos Só reporta subgrupos com bons resultados (pós-estudo). Medicamento “funciona para mulheres de 52 anos” → achado por acaso.
      8 Ocultação de dados brutos Dados completos não são divulgados → impossível verificar. Apenas resultados resumidos em artigo → não se pode repetir a análise.
      9 Meta-análises enviesadas Incluem só estudos positivos ou patrocinados pela indústria. Revisão inclui apenas estudos da própria empresa farmacêutica.
      10 Regressão à média mal interpretada Melhora natural é atribuída ao tratamento. Paciente com pressão alta melhora naturalmente → parece efeito do remédio.
    • 🎯 O que é p-hacking (ou data dredging)?

      É a prática de realizar vários testes estatísticos diferentes até encontrar p < 0,05 — ou seja, um resultado considerado estatisticamente significativo por acaso.


      🧪 Exemplo típico:

      Um pesquisador testa 20 variáveis para ver se há relação com um certo efeito. Mesmo que nenhuma tenha efeito real, estatisticamente, 1 em 20 pode dar p < 0,05 apenas por sorte (erro do tipo I).

      Poderia ser um estudo de várias frutas para ver se alguma pode ajudar a tratar algum problema, digamos, glaucoma ou falta de atenção nos estudos.

      De 20 frutas, percebemos que apenas uma oferece uma melhora de mais de 5% nos resultados, e então publicamos apenas o estudo desta fruta em particular e escondemos os outros estudos que não ofereceram uma melhora nem de 5% (o que seria uma tática do tipo I-viés de publicação). “Graviola melhora a concentração em estudantes” já seria uma possível manchete de jornal , até mesmo um mais técnico sobre escolas. Perceba que 5% é um limite até baixo (low bar) para uma droga farmacêutica. Deveríamos esperar uma proporção maior de casos em que se observa melhora. Talvez 20 % seria razoável esperar? Eu acho que sim.

      O ponto é que um estudo que ofereça mais de 5% de melhoras ( p < 0,05) já é tratado como tendo um resultado positivo e pode ser publicado num jornal médico.

      🧪 Exemplo 2

      A Crise de Replicação na Psicologia

      • Em 2015, um projeto tentou replicar 100 estudos de psicologia: só 39% tiveram os mesmos resultados.

      • Causa Principal: P-hacking + viés de publicação (revistas preferem resultados "positivos").


       

       

       

       

    • Quando eu estava na escola, eu me perguntava:
      “Já não basta aprender a média? Por que complicar inventando essa tal de moda e mediana?”
      Parecia que era só para dificultar. Mas depois percebi que essas outras medidas são muito úteis! E para mostrar isso, vou dar um exemplo bem claro —aqui abaixo-  baseado no item 3 do capítulo anterior: médias podem ser enganosas.

      Primeiro vamos ver as definições 

       

      1. Média:

      • Pode ser usada para calcular o preço médio de peças de roupa em uma coleção. Basta somar todos os valores e dividir pelo número de peças.

      • Sensível a valores extremos (ex.: um vestido de luxo caro eleva a média).

      2. Moda

      • É o valor que mais aparece em um conjunto de dados

      • Útil quando há outliers (ex.: poucas peças muito caras não afetam a mediana).

      Outliers seriam os pontos “fora da curva” que ficam muito afastados.

      Como calcular a moda

      🔸 Exemplo 1 – Sem repetição:
       
      dados = [3, 7, 1, 9, 4]
      • Cada número aparece uma vezsem moda

      🔸 Exemplo 2 – Com repetição:
       
      dados = [3, 7, 3, 1, 4]
      • O número 3 aparece 2 vezesmoda = 3

      3. Mediana:

      • Representa o valor do meio (ex.: mediana de tamanhos mostra o ponto central, ignorando extremos).

      • Também útil quando há outliers (ex.: poucas peças muito caras não afetam a mediana).

      Como calcular a mediana
      🔹 1. Organize os dados em ordem crescente.

      Exemplo:
      [7, 2, 9, 4, 6] → fica: [2, 4, 6, 7, 9]

      🔹 2. Veja se o número de dados é ímpar ou par:
      • Se for ímpar, a mediana é o número do meio.
        Exemplo:
        [2, 4, 6, 7, 9] → 5 números → o 3º número é a mediana → 6

      • Se for par, a mediana é a média dos dois números do meio.
        Exemplo:
        [2, 4, 6, 8] → 4 números → os dois do meio são 4 e 6
        Mediana = (4 + 6) ÷ 2 = 5

      EXEMPLOS usando Pyhton

      A vantagem de produzir estes resultados via computador, como feito aqui, é que se pode variá-los o quanto quiser e ver o que sai! Assim é mais fácil de entender as ideias que estão por trás.... Na próxima seção mostrarei como você pode fazer isso por conta propria. De momento darei exemplos:

      Data: [1, 1, 1, 1, 99, 99, 99, 99]
      Média: 50.0
      Mediana: 50.0
      Moda(s): [1, 99]

      perceba que se 2 números aparecem com a mesma quantidade de repetições, há duas modas!


      Data: [1, 1, 1, 1, 99, 99, 99, 99, 99] Média: 55.44444444444444 Mediana: 99.0 Moda(s): [99]


      Data: [1, 2, 3, 4, 5] Média: 3.0 Mediana: 3.0 Moda(s): não tem

      Data: [1, 2, 3, 3, 4, 5]
      Média: 3.0
      Mediana: 3.0
      Moda(s): [3]

      Podemos mandar o computador calcular conjuntos maiores, Nesse caso o computador vai gerar o input (Data) usando o comando de criação de números aleatórios(mais detalhes na próxima seção):

      Numeros aleatórios: [13 30 10 13 2 3 16 52 28 39 50 29 46 87 50 88 49 46 60 38] Números ordenados: [ 2 3 10 13 13 16 28 29 30 38 39 46 46 49 50 50 52 60 87 88] Mean: 37.45 Median: 38.5 Mode(s): [13, 46, 50]

      Perceba que os numeros , após criados, são ordenados para facilitar a observação da mediana.


      📊Exemplo baseado no item 3 do capítulo anterior: médias podem ser enganosas.

      Imagine uma empresa em que 30 funcionarios ganham 1500 reais por mês e 5 funcionários ganham 200 mil por mês. O que seria mais adequado para se ter uma ideia da distribuição de salários, a média ou a moda e a mediana?

      Teríamos o seguinte output do programa:

      Data: [1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 200000, 200000, 200000, 200000, 200000] Média: 29857.14285714286 Mediana: 1500.0 Moda(s): [1500]

      Perceba que a média é próxima de 30 mil reais, o que não reflete a situação salarial da maioria. A mediana e a moda fornecem um resultado melhor neste caso: 1500 reais





  • Primeiramente você precisa ter o Python instalado no seu computador ou então usar online. Confira aqui no curso de Python como fazer isso: Curso Python: onde rodar os programas

    Estes primeiros programas usarão  pacotes estatísticos do Python como numpy, scipy e pandas. Estes já possuem todas as formulas pre programadas e então podemos já pedir o que queremos diretamente. Por exemplo o comando mean manda o numpy calcular a média. O programa apenas tem que calcular e mandar mostrar o resultado na tela (print).

    💻Copie e cole este programa no seu jupyter notebook e rode:

    ============================================================

    import numpy as np
    from scipy import stats
    import pandas as pd

    # Generate a random array of integers

    numeros_aleatorios = [23,56,78,22,1,3,6,1,3,6,8,8,8,9,90]  

    numeros_ordenados = np.sort(numeros_aleatorios)

    # Calculate mean
    mean = np.mean(numeros_aleatorios)

    # Calculate median
    median = np.median(numeros_aleatorios)

    # Calculate mode (using pandas to get all modes if tied)
    mode = pd.Series(numeros_aleatorios).mode().tolist()


    # Print results
    print("Numeros aleatórios:", numeros_aleatorios)
    print("Números ordenados:", numeros_ordenados)
    print(f"Média: {mean}")
    print(f"Mediana: {median}")
    print(f"Moda(s): {mode}")

    ===========================================================

    💻O output será:

    Numeros aleatórios: [23, 56, 78, 22, 1, 3, 6, 1, 3, 6, 8, 8, 8, 9, 90]
    Números ordenados: [ 1  1  3  3  6  6  8  8  8  9 22 23 56 78 90]
    Média: 21.466666666666665
    Mediana: 8.0
    Moda(s): [8]
    =========
    👩‍💻 Perceba que os numeros que foram digitados estavam fora de ordem mas aqui aparecem ordenados para facilitar o calculo da mediana.

    Para nos economizar o trabalho de digitar numeros podemos usar o comando random.randint(1, 111, size=20) que porduz 20 númwros entre 1 e 110. Depois voce pode mudar estes valores.

    💻Feita esta modificação, temos o seguinte programa:
    ===================================================================================

    import numpy as np
    from scipy import stats
    import pandas as pd

    # Generate a random array of integers

    numeros_aleatorios = np.random.randint(1, 111, size=20)  

    numeros_ordenados = np.sort(numeros_aleatorios)

    # Calculate mean
    mean = np.mean(numeros_aleatorios)

    # Calculate median
    median = np.median(numeros_aleatorios)

    # Calculate mode (using pandas to get all modes if tied)
    mode = pd.Series(numeros_aleatorios).mode().tolist()


    # Print results
    print("Numeros aleatórios:", numeros_aleatorios)
    print("Números ordenados:", numeros_ordenados)
    print(f"Média: {mean}")
    print(f"Mediana: {median}")
    print(f"Moda(s): {mode}")

    ===================================================================================

    💻O output será:

    Numeros aleatórios: [ 93 103 89 67 27 21 105 37 99 13 77 32 72 84 34 57 1 89 22 20] Números ordenados: [ 1 13 20 21 22 27 32 34 37 57 67 72 77 84 89 89 93 99 103 105] Média: 57.1 Mediana: 62.0 Moda(s): [89]

    ============================================================

    Programa para estudo de p-hacking

    link para Google Colab notebook

    💻============================================================

    import numpy as np
    from scipy import stats
    import matplotlib.pyplot as plt
    import pandas as pd

    # Configurações iniciais

    n_amostras = 25
    n_testes = 100  # número de testes "exploratórios"

    # Armazenar p-valores
    p_values = []

    # Simular muitos testes sem efeito real
    for i in range(n_testes):
        grupo1 = np.random.normal(loc=0, scale=1, size=n_amostras)
        grupo2 = np.random.normal(loc=0, scale=1, size=n_amostras)
        _, p = stats.ttest_ind(grupo1, grupo2)
        p_values.append(p)
        #print(grupo1)
        #print(grupo2)
       
        # Calculate mean
        mean1 = np.mean(grupo1)
        mean2 = np.mean(grupo2)
        median1 = np.median(grupo1)
        median2 = np.median(grupo2)
        mode1 = pd.Series(grupo1).mode().tolist()
        mode2 = pd.Series(grupo2).mode().tolist()
        print(f"Média1: {mean1,i}")
        print(f"Média2: {mean2,i}")
        print(f"Mediana1: {median1}")
        print(f"Mediana2: {median2}")
        print(f"p: {i,p_values[i]}")
        #print(f"Moda1(s): {mode1}")
        #print(f"Moda2(s): {mode2}")

    # Contar quantos p < 0.05
    falsos_positivos = sum(p < 0.05 for p in p_values)
    a=[p for p in p_values if p < 0.05]

    # Mostrar os p-valores < 0.05 com sua posição original
    print("\033[92mÍndices e p-valores considerados 'significativos':")
    for i, p in enumerate(p_values):
        if p < 0.05:
            print(f"Teste #{i:4d} → p-valor = {p:.4f}")



    # Exibir resultados


    print(f"Total de testes: {n_testes}")
    print(f"\033[1;34mP-valores < 0.05 (falsos positivos): {falsos_positivos}")
    print(f"Proporção: {falsos_positivos / n_testes:.2%}")


    # Gráfico de histograma dos p-valores
    plt.figure(figsize=(10,5))
    plt.hist(p_values, bins=50, color='skyblue', edgecolor='black')
    plt.axvline(0.05, color='red', linestyle='--', label='p = 0.05')
    plt.title('Distribuição de p-valores em 1000 testes sem efeito real')
    plt.xlabel('p-valor')
    plt.ylabel('Frequência')
    plt.legend()
    plt.grid(True)
    plt.show()
     
    💻============================================================

    Este programa gera dois conjuntos de números aleatórios e os compara entre si. O objetivo é testar se ambos pertencem a distribuições puramente aleatórias — nesse caso, espera-se que o valor de p seja maior que 0,05.

    Se um dos conjuntos contiver números sistematicamente mais altos — por exemplo, devido ao efeito de uma droga ou tratamento — então o valor de p deverá ser menor que 0,05, indicando uma diferença estatisticamente significativa.

    No entanto, neste experimento, ambos os conjuntos são aleatórios. Assim, os casos em que p < 0,05 representam falsos positivos: resultados aparentemente significativos que surgem apenas por acaso. Esse fenômeno pode ser explorado indevidamente para publicar pesquisas como se fossem conclusivas, quando na verdade refletem apenas variações aleatórias sem efeito real.