Capítulo 6.4
Índice
- 1. O que é Ciência de Dados?
- 2. Causalidade e Experimentos
- 3. Progamando em Python
- 4. Tipos de Dados
- 5. Sequências
- 6. Tabelas
- 7. Visualização
- 8. Funções e Tabelas
- 9. Aleatoriedade
- 10. Amostragem e Distribuições Empíricas
- 11. Testando Hipóteses
- 12. Comparando Duas Amostras
- 13. Estimação
- 14. Por que a Média é Importante
- 15. Previsão
from datascience import *
import numpy as np
path_data = '../../../assets/data/'
import matplotlib
matplotlib.use('Agg')
%matplotlib inline
import matplotlib.pyplot as plots
plots.style.use('fivethirtyeight')
# Em agosto de 2021, este arquivo do censo está online aqui:
data = 'http://www2.census.gov/programs-surveys/popest/technical-documentation/file-layouts/2010-2019/nc-est2019-agesex-res.csv'
# Uma cópia local pode ser acessada aqui caso census.gov mova o arquivo:
# data = path_data + 'nc-est2019-agesex-res.csv'
full_census_table = Table.read_table(data)
#full_census_table
partial_census_table = full_census_table.select('SEX', 'AGE', 'POPESTIMATE2014', 'POPESTIMATE2019')
#partial_census_table
us_pop = partial_census_table.relabeled('POPESTIMATE2014', '2014').relabeled('POPESTIMATE2019', '2019')
Example: Proporções de Sexos
Nesta seção continuaremos usando a tabela us_pop da seção anterior. Mas desta vez vamos nos concentrar nas tendências populacionais em relação à coluna SEX.
us_pop
| SEX | AGE | 2014 | 2019 |
|---|---|---|---|
| 0 | 0 | 3954787 | 3783052 |
| 0 | 1 | 3948891 | 3829599 |
| 0 | 2 | 3958711 | 3922044 |
| 0 | 3 | 4005928 | 3998665 |
| 0 | 4 | 4004032 | 4043323 |
| 0 | 5 | 4004576 | 4028281 |
| 0 | 6 | 4133372 | 4017227 |
| 0 | 7 | 4152666 | 4022319 |
| 0 | 8 | 4118349 | 4066194 |
| 0 | 9 | 4106068 | 4061874 |
| … (296 rows omitted) | |||
O Código Usado na Coluna SEX
O conteúdo das colunas AGE, 2014 e 2019 é fácil de entender. A coluna AGE contém idades em anos completos. O valor especial 999 representa toda a população, independentemente da idade, e 100 representa “100 anos ou mais”. As colunas 2014 e 2019 contêm estimativas da população dos EUA em cada um dos dois anos.
A coluna SEX, no entanto, é mais difícil de interpretar.
O formulário do Censo solicita aos entrevistados que forneçam o sexo de cada membro do agregado familiar marcando uma das duas caixas rotuladas Masculino e Feminino. A coluna SEX contém códigos numéricos: 1 para masculino, 2 para feminino e 0 para o total.
Essa pergunta é feita essencialmente da mesma maneira desde 1790. Mas desde então houve considerável pesquisa sobre se o sexo dos seres humanos se presta à categorização binária simples. Por exemplo, pessoas não binárias não se identificam exclusivamente como masculinas ou femininas. Um estudo do Instituto Williams da Faculdade de Direito da UCLA em 2021 estimou que pelo menos 1,2 milhão de indivíduos nos Estados Unidos se identificam como não binários.
Ao continuar usando a forma histórica da pergunta, o Censo falha em refletir a complexidade da classificação de sexo. A explicação fornecida no Censo de 2020 e reproduzida na citação abaixo não inclui instruções para aqueles que não se identificam como Masculino ou Feminino.
Responder à pergunta sobre sexo é fácil.
Uma pergunta sobre sexo foi incluída desde o primeiro censo em 1790. Todas as perguntas do Censo de 2020 que envolvem características pessoais são baseadas na auto-identificação. Ao completar o seu censo, selecione a caixa para o sexo biológico com o qual você se identifica.
Independentemente da opinião expressa acima, responder a esta pergunta não é fácil para todos. Dificuldades para responder à pergunta podem levar a não-respostas ou respostas imprecisas. Isso pode reduzir a precisão dos dados do Censo para informar decisões políticas e alocar recursos.
Antes do Censo de 2020, o Census Bureau considerou revisar esta pergunta ou incluir perguntas mais abrangentes sobre orientação sexual e identidade de gênero. No final, o Bureau decidiu não alterar o censo planejado.
No entanto, o diretor do censo, John Thompson, escreveu: “O Census Bureau continua comprometido em refletir as necessidades de informação de nossa sociedade em mudança”. Os formulários do censo mudam. Por exemplo, novas perguntas sobre raça e etnia no Censo de 2020 levaram a uma compreensão mais precisa da
demografia dos
EUA. Podemos esperar que o Censo de 2030 seja mais inclusivo e preciso em todos os aspectos.
No que segue, usaremos os dados fornecidos pelo Censo tendo em mente as questões descritas acima. Usaremos o termo “masculino” para significar um indivíduo para quem “Masculino” (SEX código 1) foi selecionado no formulário do Censo. Usaremos “feminino” para significar um indivíduo para quem “Feminino” (SEX codigo 2) foi selecionado.
Proporções Gerais
Agora vamos começar a examinar as proporções de sexo em 2019. Primeiro, vamos olhar para todos os grupos etários juntos. Lembre-se de que isso significa olhar para as linhas em que a “idade” é codificada como 999. A tabela all_ages contém essa informação. Há três linhas: uma para a população total, uma para os homens e uma para as mulheres.
us_pop_2019 = us_pop.drop('2014')
all_ages = us_pop_2019.where('AGE', are.equal_to(999))
all_ages
| SEX | AGE | 2019 |
|---|---|---|
| 0 | 999 | 328239523 |
| 1 | 999 | 161657324 |
| 2 | 999 | 166582199 |
A linha 0 de all_ages contém a população total dos EUA em cada um dos dois anos. Os Estados Unidos tinham cerca de 330 milhões de pessoas em 2019.
A linha 1 contém as contagens para os homens e a linha 2 para as mulheres. Compare estas duas linhas para ver que em 2019, havia mais mulheres do que homens nos Estados Unidos.
As contagens populacionais nas linhas 1 e 2 somam a população total na linha 0.
Para comparabilidade com outras quantidades, precisaremos converter essas contagens em percentuais da população total. Vamos acessar o total para 2019 e nomeá-lo. Em seguida, mostraremos uma tabela de população com uma coluna de proporção. Conforme nossa observação anterior de que havia mais mulheres do que homens, 50,75% da população em 2019 era feminina e cerca de 49,25% era masculina.
pop_2019 = all_ages.column('2019').item(0)
all_ages.with_column(
'Proportion', all_ages.column('2019')/pop_2019
).set_format('Proportion', PercentFormatter)
| SEX | AGE | 2019 | Proportion |
|---|---|---|---|
| 0 | 999 | 328239523 | 100.00% |
| 1 | 999 | 161657324 | 49.25% |
| 2 | 999 | 166582199 | 50.75% |
Proporções Entre Bebês
Quando olhamos para os bebês, no entanto, o oposto é verdadeiro. Vamos definir bebês como crianças que ainda não completaram um ano, representadas nas linhas correspondentes a AGE 0. Aqui estão seus números na população. Você pode ver que os bebês do sexo masculino superaram os bebês do sexo feminino.
infants = us_pop_2019.where('AGE', are.equal_to(0))
infants
| SEX | AGE | 2019 |
|---|---|---|
| 0 | 0 | 3783052 |
| 1 | 0 | 1935117 |
| 2 | 0 | 1847935 |
Como antes, podemos converter essas contagens em porcentagens do número total de crianças. A tabela resultante mostra que em 2019, pouco mais de 51% das crianças nos EUA eram do sexo masculino.
infants_2019 = infants.column('2019').item(0)
infants.with_column(
'Proportion', infants.column('2019')/infants_2019
).set_format('Proportion', PercentFormatter)
| SEX | AGE | 2019 | Proportion |
|---|---|---|---|
| 0 | 0 | 3783052 | 100.00% |
| 1 | 0 | 1935117 | 51.15% |
| 2 | 0 | 1847935 | 48.85% |
Na verdade, há muito tempo se observa que a proporção de meninos entre os recém-nascidos é ligeiramente superior a 1/2. A razão para isso não é totalmente compreendida, e os cientistas ainda estão trabalhando nisso.
Proporção de Sexo em Cada Idade
Vimos que enquanto há mais bebês do sexo masculino do que feminino, há mais mulheres do que homens na população em geral. Isso significa que a divisão entre os sexos deve variar entre os grupos etários.
Para estudar essa variação, vamos separar os dados para as mulheres e para os homens, e eliminar a linha onde todas as idades são agregadas e AGE é codificado como 999.
As tabelas females e males contêm os dados para cada um dos dois códigos de sexo.
females_all_rows = us_pop_2019.where('SEX', are.equal_to(2))
females = females_all_rows.where('AGE', are.not_equal_to(999))
females
| SEX | AGE | 2019 |
|---|---|---|
| 2 | 0 | 1847935 |
| 2 | 1 | 1871014 |
| 2 | 2 | 1916500 |
| 2 | 3 | 1955655 |
| 2 | 4 | 1976372 |
| 2 | 5 | 1967081 |
| 2 | 6 | 1964271 |
| 2 | 7 | 1966584 |
| 2 | 8 | 1986471 |
| 2 | 9 | 1988726 |
| … (91 rows omitted) | ||
males_all_rows = us_pop_2019.where('SEX', are.equal_to(1))
males = males_all_rows.where('AGE', are.not_equal_to(999))
males
| SEX | AGE | 2019 |
|---|---|---|
| 1 | 0 | 1935117 |
| 1 | 1 | 1958585 |
| 1 | 2 | 2005544 |
| 1 | 3 | 2043010 |
| 1 | 4 | 2066951 |
| 1 | 5 | 2061200 |
| 1 | 6 | 2052956 |
| 1 | 7 | 2055735 |
| 1 | 8 | 2079723 |
| 1 | 9 | 2073148 |
| … (91 rows omitted) | ||
O plano agora é comparar o número de mulheres e o número de homens em cada idade, para cada um dos dois anos. Os métodos Array e Table nos fornecem maneiras simples de fazer isso. Ambas as tabelas têm uma linha para cada idade.
males.column('AGE')
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100])
females.column('AGE')
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100])
Para qualquer idade específica, podemos obter a proporção de sexo Feminino:Masculino dividindo o número de mulheres pelo número de homens.
Para fazer isso em um único passo, podemos usar column para extrair a matriz de contagens de mulheres e a matriz correspondente de contagens de homens, e então simplesmente dividir uma matriz pela outra. A divisão elemento por elemento criará uma matriz de proporções de sexo para todos os anos.
ratios = Table().with_columns(
'AGE', females.column('AGE'),
'2019 F:M RATIO', females.column('2019')/males.column('2019')
)
ratios
| AGE | 2019 F:M RATIO |
|---|---|
| 0 | 0.954947 |
| 1 | 0.955289 |
| 2 | 0.955601 |
| 3 | 0.957242 |
| 4 | 0.956177 |
| 5 | 0.954338 |
| 6 | 0.956801 |
| 7 | 0.956633 |
| 8 | 0.955161 |
| 9 | 0.959278 |
| … (91 rows omitted) | |
Você pode ver pela exibição que as proporções estão todas em torno de 0.96 para crianças com nove anos ou menos. Quando a proporção Feminino:Masculino é menor que 1, há menos mulheres do que homens. Assim, estamos vendo que havia menos meninas do que meninos em cada um dos grupos etários 0, 1, 2, e assim por diante até 9. Mais precisamente, em cada um desses grupos etários havia cerca de 96 meninas para cada 100 meninos.
Então, como a proporção geral de mulheres na população pode ser maior do que a dos homens?
Algo bem diferente acontece quando examinamos o outro extremo da faixa etária. Aqui estão as proporções Feminino:Masculino para pessoas com mais de 75 anos.
ratios.where('AGE', are.above(75)).show()
| AGE | 2019 F:M RATIO |
|---|---|
| 76 | 1.21422 |
| 77 | 1.23558 |
| 78 | 1.26373 |
| 79 | 1.28129 |
| 80 | 1.29209 |
| 81 | 1.32745 |
| 82 | 1.36101 |
| 83 | 1.39749 |
| 84 | 1.44603 |
| 85 | 1.48588 |
| 86 | 1.53967 |
| 87 | 1.59775 |
| 88 | 1.66125 |
| 89 | 1.73365 |
| 90 | 1.80539 |
| 91 | 1.90275 |
| 92 | 1.99252 |
| 93 | 2.10192 |
| 94 | 2.2271 |
| 95 | 2.34042 |
| 96 | 2.41969 |
| 97 | 2.5868 |
| 98 | 2.65926 |
| 99 | 2.91367 |
| 100 | 3.27411 |
Não apenas todas essas proporções são maiores que 1, indicando mais mulheres do que homens em todos esses grupos etários, muitas delas são consideravelmente maiores que 1.
- Aos 92 e 93 anos, as proporções estão próximas de 2, o que significa que havia cerca de duas vezes mais mulheres do que homens nessas idades em 2019.
- Aos 99 anos, havia cerca de 3 vezes mais mulheres do que homens.
Se você está se perguntando quantas pessoas havia nessas idades avançadas, você pode usar o Python para descobrir:
males.where('AGE', are.contained_in(make_array(92, 93, 99)))
| SEX | AGE | 2019 |
|---|---|---|
| 1 | 92 | 131684 |
| 1 | 93 | 103415 |
| 1 | 99 | 14596 |
females.where('AGE', are.contained_in(make_array(92, 93, 99)))
| SEX | AGE | 2019 |
|---|---|---|
| 2 | 92 | 262383 |
| 2 | 93 | 217370 |
| 2 | 99 | 42528 |
O gráfico abaixo mostra as proporções de sexo plotadas contra a idade. A curva azul mostra as proporções de 2019 por idade.
As proporções são quase 1 (significando números quase iguais de homens e mulheres) para idades de 0 a 60. Mas elas começam a subir dramaticamente (mais mulheres do que homens) a partir da faixa etária de 65 a 70 anos.
O fato de as mulheres superarem os homens nos EUA se deve em parte ao desequilíbrio acentuado a favor das mulheres entre os idosos.
ratios.plot('AGE')

| ← Capítulo 6.3 – Exemplo: Tendências Populacionais | Capítulo 7 – Visualização → |
