Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — CESPE / CEBRASPE 2025

ProgramaçãoLinguagens de programação
Código
ce194909
Banca
CESPE / CEBRASPE
Órgão
ANM
Ano
2025
Nível
Superior
Cargo
Especialista em Recursos Minerais - Especialidade: Qualquer Área de Formação (Fiscalização e Distribuição de Receita)
Uma equipe de mineração deseja analisar a distribuição do teor de minério em uma amostra coletada. O código a seguir utiliza a biblioteca matplotlib do Python para criar um histograma dos teores coletados.Imagem associada para resolução da questãoCom base no código precedente, julgue o item a seguir.O parâmetro bins = 5, no código em apreço, especifica que o histograma terá exatamente cinco barras, com o mesmo número de dados em cada barra.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Histograma no Matplotlib: o parâmetro bins

Gabarito: ERRADO. O parâmetro bins = 5 no matplotlib especifica que o histograma terá 5 intervalos (bins) de igual largura no eixo x, mas não garante que cada barra terá o mesmo número de dados — a altura de cada barra reflete a frequência (contagem) de observações naquele intervalo, que depende da distribuição dos dados. A afirmação de que "terá exatamente cinco barras, com o mesmo número de dados em cada barra" é falsa em dois pontos: (1) o número de barras pode não ser exatamente 5 (o matplotlib pode ajustar os limites para incluir todos os dados, criando bins extras nas bordas) e (2) a contagem de dados por barra é determinada pelos dados, não pelo parâmetro.

O histograma é uma ferramenta da estatística descritiva usada para visualizar a distribuição de frequências de uma variável contínua. Ele divide o intervalo dos dados em classes (bins) e conta quantas observações caem em cada classe. No matplotlib, a função plt.hist(dados, bins=5) recebe o parâmetro bins, que pode ser:

  • Um inteiro (como 5): o matplotlib divide o intervalo entre o valor mínimo e o máximo dos dados em 5 intervalos de igual largura. O número de barras resultante pode ser 5, mas se os dados tiverem valores fora do intervalo calculado (o que não ocorre normalmente), o matplotlib pode expandir os limites e criar bins adicionais. Na prática, com dados típicos, o número de barras será 5, mas isso não é uma garantia absoluta.

  • Uma sequência (lista ou array): define explicitamente os limites de cada bin, permitindo larguras variáveis.

  • Uma string (como 'auto', 'sturges', 'fd'): usa um método automático para determinar o número de bins.

O ponto crucial é que bins controla a divisão do eixo x (os intervalos), não a altura das barras. A altura de cada barra é a frequência (ou densidade, se density=True) dos dados naquele intervalo. Se os dados estiverem concentrados em uma região, algumas barras terão muitas observações e outras poucas ou nenhuma. Portanto, a afirmação de que "cada barra terá o mesmo número de dados" é um equívoco conceitual: o histograma mostra a distribuição dos dados, e a contagem por barra varia conforme a concentração dos valores.

Por exemplo, se tivermos os dados [1, 2, 2, 3, 3, 3, 4, 4, 5] e usarmos bins=5, os intervalos serão aproximadamente [1, 1.8], [1.8, 2.6], [2.6, 3.4], [3.4, 4.2], [4.2, 5]. As contagens seriam: 1, 2, 3, 2, 1 — claramente não uniformes. Isso ilustra que a altura das barras reflete a frequência dos dados, não uma divisão igualitária.

A pegadinha da banca está em confundir o papel do parâmetro bins: ele define a estrutura dos intervalos (largura e número de classes), não a distribuição dos dados dentro deles. O candidato que pensa que bins=5 significa "5 barras com a mesma quantidade de dados" está aplicando o conceito de frequência relativa uniforme, que não é o que o histograma faz. O histograma é uma ferramenta para explorar a distribuição, não para forçá-la a ser uniforme.

Guarde esta distinção: bins controla o eixo x (intervalos de classe), enquanto a altura das barras (eixo y) é determinada pelos dados. É exatamente nessa fronteira que a afirmação da questão se divide: a primeira parte ("exatamente cinco barras") é aproximadamente verdadeira, mas a segunda ("com o mesmo número de dados em cada barra") é falsa.

Item — ❌ ERRADO

A afirmação contém dois erros conceituais:

  1. "exatamente cinco barras": embora bins=5 normalmente produza 5 barras, o matplotlib pode ajustar os limites dos bins para incluir todos os dados, o que pode resultar em um número diferente de barras (por exemplo, se houver valores extremos, o matplotlib expande o intervalo e cria bins adicionais). A documentação do matplotlib afirma que, quando bins é um inteiro, ele define o número de bins de largura igual, mas o número real de barras pode variar devido ao arredondamento dos limites.

  1. "com o mesmo número de dados em cada barra": isso é fundamentalmente incorreto. O histograma conta quantas observações caem em cada intervalo, e essa contagem depende da distribuição dos dados. Não há nenhum mecanismo no matplotlib que force a mesma contagem em cada barra. Se os dados estiverem concentrados em uma região, algumas barras terão mais dados que outras.

Portanto, a afirmação está errada porque atribui ao parâmetro bins uma função que ele não tem: a de equalizar a contagem de dados por barra. O bins apenas define os intervalos de classe; a frequência em cada intervalo é uma propriedade dos dados.

NÃO CAIA NESSA!

A banca explora a confusão entre o papel do parâmetro bins (que define os intervalos no eixo x) e a altura das barras (que reflete a frequência dos dados). O candidato pode pensar que bins=5 significa "5 barras com a mesma quantidade de dados", mas isso não é verdade: o histograma mostra a distribuição real dos dados, e a contagem por barra varia conforme a concentração dos valores. Lembre-se: bins controla a largura dos intervalos, não a uniformidade das contagens.

Gabarito: ERRADO (letra E).

Link permanente: /questoes/ce194909