Skip to main content

Estimation of GHG emissions based on energy consumption in Brazil, broken down by 51 and 68 distinct activities.

Project description

BenToTru

Este pacote estima as emissões de determinados gases de efeito estufa (CO2, CH4, N2O, NOx, CO e SO2) geradas pelo consumo de energia no Brasil. Ele utiliza os dados anuais de consumo de energia fornecidos pela Empresa de Pesquisa Energética (EPE) e os fatores de emissão fornecidos pelo IPCC (revisão de 1996) e adaptados pela ONG Economia e Energia (E&E) para as condições brasileiras. O resultado são as emissões por setor econômico (estrutura IPCC) e por produto (diesel, eletricidade, álcool, etc).

Além de estimar as emissões para os 22 setores, o pacote também desagrega essas emissões em 51 ou 68 setores (de acordo com a estrutura do IBGE). Para realizar essa desagregação, utilizamos uma adaptação do método de Montoya et al. (2013), que é descrita aqui.

Para a estrutura baseada em 51 setores, temos dados que abrangem de 2000 a 2022. Para a estrutura baseada em 68 setores, os dados disponíveis cobrem o período de 2010 a 2022. Além dos dados relacionados aos setores econômicos, também incorporamos informações sobre as emissões atribuídas às famílias. Uma descrição detalhada das funções é fornecida nas seções a seguir.

Instalar pacote BenToTru

A versão mais recente do pacote BenToTru é 0.1.0. O módulo principal, que também é o mais rápido porque utiliza operações matriciais em vez de laços, é o 'btt'.

pip install BenToTru==0.1.0
from BenToTru import btt as btt

Importar dados da TRU

A função import_data_tru() importar dados de consumo intermediário (CI) da Matriz de Recursos e Usos (TRU) do Brasil. O objetivo é diferenciar entre setores econômicos (ben) e atividades (tru), sendo que os setores TRU são denominados "atividades". O código configura o ano de referência como 2020, define 51 atividades, especifica que os dados estão a preços correntes (u = 't') e utiliza 2014 como ano-base para a deflação. O parâmetro household indica se as famílias serão incluídas na análise. O resultado importado contém duas tabelas: uma com todos os produtos (dimensão 51x107) e outra com produtos que emitem gases de efeito estufa (dimensão 51x17).

# importar dados de consumo intermediário da TRU 
# unidade:Market price values (BRL)
# para distinguir entre setore (ben) e setores (tru) 
#       os setores tru foram chamados de 'atividades'

ano = '2020'      # ano de referência dos dados
N = '51'          # número de atividade (51 ou 68)
u = 't'           # (t:preços correntes ou t1:do ano anterior)
ano_base = '2014' # ano base para a deflação
household=False   # considerar, ou não, as famílias na análise

TRU51 = btt.import_data_tru(ano, N, u, ano_base, household)
TRU51[0] # CI com todos os produtos      (51, 107)
TRU51[1] # CI de produtos que emitem GHG (51, 17)

Não se preocupe com a variável u por equanto. Sua função está relacionada à criação de coeficientes de distribuição ('t': considera preços correntes, 't1': considera preços do ano anterior).

Importar dados do BEN

A função import_data_ben() importar dados do Balanço Energético Nacional (BEN), que estão na unidade de mil toneladas equivalentes de petróleo (10³ tep). O ano de referência dos dados é 2020 e o número de atividades econômicas é definido como 51. A matriz completa do BEN contém 20 setores e 27 produtos, enquanto a matriz reduzida, que foca apenas em produtos que emitem gases de efeito estufa (GHG), tem 20 setores e 17 produtos. O código organiza esses dados em duas matrizes: uma completa e outra filtrada para análise de emissões.

# Importar dados do Balanço Energético Nacional (BEN)
# Unidade: 10³ tep

ano = '2020'      # ano de referência dos dados
N = '51'          # número de atividades (51 ou 68)
# Nb: n de setores do ben = 20
# Jb: n de produtos do ben = 27

ben = btt.import_data_ben(ano, N)
ben[0] # matriz completa   (20, 27)
ben[1] # matriz reduzida (apenas com produtos que geram GHG) (20, 17)

Mapas entre TRU e BEN

A função import_dictionaries() importar os dicionários que fazem a correspondência entre setores do Balanço Energético Nacional (BEN) e as atividades da Matriz de Recursos e Usos (TRU) para o caso com 51 atividades econômicas. O dicionário dict1 contém duas estruturas: dict1[0], que relaciona os produtos do BEN com as atividades do TRU, e dict1[1], que relaciona os setores do BEN com as atividades do TRU. Esses dicionários são essenciais para realizar análises que integram as duas bases de dados.

# Importar dicionários ben to tru

dict1 = btt.import_dictionaries('51')
# dict1[0] #ben_to_tru_products 
# dict1[1] #ben_to_tru_sectors

Estimar emissões

A função btt.emission() retorna várias estruturas de dados, incluindo: a matriz completa de consumo energético do BEN (20 setores, 27 produtos), a matriz reduzida com produtos que geram GHG, as emissões na matriz TRU (N atividades, 17 produtos), as emissões ajustadas com dados do Sirene, e o coeficiente de distribuição. Além disso, o código também importa dicionários que conectam os setores do BEN com as atividades da TRU.

# Estimar emissões 

ano = '2020'      # ano de referência dos dados
N = '51'          # número de atividades (51 ou 68)
u = 't'           # (t:preços correntes ou t1:do ano anterior)
ano_base = '2014' # ano base para a deflação
gas='CO2'         # tipo de GHG (CO2, NH4 ou N2O)
household=False   # considerar, ou não, as famílias na análise

E = btt.emission(ano,N,u,ano_base,gas,household)
#                  #  shape    unidade       descricao
ben = E[3][0]      # (20, 27)  (10³ tep)     matriz completa
ben_red = E[3][1]  # (20, 17)  (10³ tep)     matriz reduzida (apenas com produtos que geram GHG)
E_tru = E[0]       # (51, 17)  (Gg of GHG)   emissões no formato da matriz TRU
E_tru_adj = E[4]   # (51, 17)  (Gg of GHG)   emissões ajustadas (regressão com os dados sirene)
coef1 = E[1]       # (51, 17)  (BRL/BRL)
ben_to_tru = E[2]  # dicionarios

Verificar distribuições

A função btt.verification(N, coef1) valida os coeficientes para o caso com N atividades econômicas, comparando a soma dos valores para garantir que estejam dentro dos padrões esperados. O tamanho da matriz resultante é (12, 17), o que indica 12 setores ou atividades e 17 produtos ou categorias relacionadas.

# Verificar se a soma dos coeficientes de distribuição estão corretas

btt.verification(N,coef1) # (12, 17)

Mapa entree setores BEN e TRU

A função map_ben_to_tru() mapeia a relação entre os setores do Balanço Energético Nacional (BEN) e os setores da Matriz de Recursos e Usos (TRU).

# Mapa dos setores BEN para os setores TRU

j = 1 #sector ‘SETOR ENERGÉTICO’
i = 1 #product ‘CARVÃO VAPOR’
btt.map_ben_to_tru(N,E_tru,j,i)[0]

Acessando outras variáveis da tabela TRU

A função btt.tru.read_var_def() pode ser usada para importar uma variável específica da tabela TRU. No exemplo, a variável OT_pm (Oferta total a preço de mercado) é selecionada para o ano de ano=2020, considerando N=12 atividades econômicas.

# Se for necessário importar outra variável da tabela TRU para sua análise:

ano = '2020'  # ano de referência dos dados
N = '12'      # número de atividades (51, 68, 20 ou 12)
var = 'OT_pm' # (consulte a tabela de variáveis disponíveis no final do arquivo) 
u = 't'       # (t:preços correntes ou t1:do ano anterior)
ano_base = '2014' # ano base para a deflação
OT_pm = btt.tru.read_var_def(ano,N,var,u,ano_base)
var sheet type description
OT_pm oferta vector Oferta total a preço de consumidor
MG_com oferta vector Margem de comércio
MG_tra oferta vector Margem de transporte
L_imp oferta vector Imposto de importação
IPI oferta vector IPI
ICMS oferta vector ICMS
OI_liq_Sub oferta vector Outros impostos menos subsídios
TI_liq_sub oferta vector Total de impostos líquidos de subsídios
OT_pb oferta vector Oferta total a preço básico
P_matrix producao matrix Produção das atividades
PT producao vector Total do produto
CIF_FOB importacao vector Ajuste CIF/FOB
M_bens importacao vector Importação de bens
M_serv importacao vector Importação de serviços
CI_matrix CI matrix Consumo intermediário das atividades
D_ci CI vector Total do produto (Tabela 2 CI)
X_bens demanda vector Exportação de bens
X_serv demanda vector Exportação de serviços
C_g demanda vector Consumo da administração pública
C_ong demanda vector Consumo das ISFLSF
C_f demanda vector Consumo das famílias
FBKF demanda vector Formação bruta de capital fixo
DE demanda vector Variação de estoque
D_final demanda vector Demanda final
D_total demanda vector Demanda total
VA_table demanda table Componentes do valor adicionado
M_bens_serv importacao vector Importação de bens e serviços (1) (1) Importação de bens e serviços líquida de ajuste CIF/FOB.
X_bens_serv demanda vector (1) Importação de bens e serviços líquida de ajuste CIF/FOB.

Acessando as séries históricas

O que realmente nos interessa é a série temporal que ilustra a evolução das emissões geradas por uma atividade específica da TRU. O código abaixo demonstra como obter e representar visualmente essa série.

import pandas as pd
df = btt.emission('2010',N,u,ano_base,gas,True)[4]
df['year'] = '2010'
for t in ['2011','2012','2013','2014','2015','2016','2017','2018','2019','2022']:
   try:
       df_ = btt.emission(t,N,u,ano_base,gas,True)[4]
       df_['year'] = t
       df = pd.concat([df, df_])
   except:
       print('error')
import matplotlib.pyplot as plt

df_h = df[df.index == 'RESIDENCIAL']

df_h.plot(x='year', y='GÁS NATURAL', marker='o', linestyle='-')
plt.title("Emission of CO2 by households from the consumption of natural gas.")
plt.xlabel("Year")
plt.ylabel("Gg of GHG")
plt.grid(True)
plt.show()

Alt text

CO2 Equivalent Emissions

To simplify the communication of the amount of GHGs emitted, the standard unit used is CO2 equivalent emissions (CO2e). The amount of GHG released can be converted into CO2e using the Global Warming Potential (GWP) metric published in the Second Assessment Report (SAR) by the IPCC (1995). Brazil adopts this measurement to report its emissions, as per Decree no. 9,578/2018. The sixth emissions report provides the conversion table between GHG and CO2e (MCTI, 2022).

gas GWP 100 years (SAR) GWP 100 years (AR5) GTP 100 years (AR5)
CO2 1 1 1
CH4 21 28 4
CH4 fossil 21 30 6
N2O 310 265 234
HFC-23 11,700 12,400 12,700
HFC-32 650 677 94
HFC-125 2,800 3,170 967
HFC-134a 1,300 1,300 201
HFC-143a 3,800 4,800 2,500
HFC-152 140 16 2
CF4 6,500 6,630 8,040
C2F6 9,200 11,100 13,500
SF6 23,900 23,500 28,200

This table is what we use to convert direct GHGs (CO2, CH4, and N2O) into equivalent amounts of CO2 (variable: CO2_GWP_SAR).

sys_co2 = btt.system('2010','68','t','CO2')
sys_ch4 = btt.system('2010','68','t','CH4')
sys_n2o = btt.system('2010','68','t','N2O')
CO2e_GWP_SAR = sys_co2.emission_tru + (sys_ch4.emission_tru * 21) + (sys_n2o.emission_tru * 310)

CO2 Equivalent Emissions (adjustment)

Despite the high correlation, our data is not comparable to MCTI's data. One possible reason is that MCTI discloses its emissions in terms of the amount of carbon, while we estimate in terms of CO2. Another reason is the scale of the data presented (in tons or Gg tons). A third, more important factor, is the conversion factors used by MCTI (more up-to-date and detailed by type of fuel use).

To solve this problem, we estimated correction coefficients for our data using official MCTI data. All coefficients and methodology are described in the methodology (here).

Now our data of CO2 equivalent emission (btt) are in the same unit and are comparable to the official MCTI data (sirene).

Alt text

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

BenToTru-0.0.27.tar.gz (345.6 kB view details)

Uploaded Source

Built Distribution

BenToTru-0.0.27-py3-none-any.whl (364.8 kB view details)

Uploaded Python 3

File details

Details for the file BenToTru-0.0.27.tar.gz.

File metadata

  • Download URL: BenToTru-0.0.27.tar.gz
  • Upload date:
  • Size: 345.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for BenToTru-0.0.27.tar.gz
Algorithm Hash digest
SHA256 2ec2eb92fdea64fdded2c5ed697558dfdfa64060a38ca38d2dd79be0b1da39f3
MD5 49afe0e9ecc9d55e4333736ab655fc8b
BLAKE2b-256 210b1e461bf20ef5d02abfaa2ce08004aeb8017aecae378d0e6d9c9aa0e0b1fc

See more details on using hashes here.

File details

Details for the file BenToTru-0.0.27-py3-none-any.whl.

File metadata

  • Download URL: BenToTru-0.0.27-py3-none-any.whl
  • Upload date:
  • Size: 364.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for BenToTru-0.0.27-py3-none-any.whl
Algorithm Hash digest
SHA256 80b581abec107175699d3650405036ef5707a01166b08f3d95349f61388e1040
MD5 0a9978c3f4f949d8bd1f5a68d33b21e9
BLAKE2b-256 43d5c5b8d74c0bd80b61621a1dca8edda9e702a09bf3f7cc724ee366538f1d63

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page