Cât pot avea impactul tarifelor președintelui Trump gospodăriile canadiene?

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe pacha.dev/blogși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

Dacă această postare vă este utilă, vă cer o donație minimă pentru a -mi cumpăra o cafea. Acesta va fi folosit pentru a continua eforturile mele open source. Explicația completă este aici: un mesaj personal de la un contribuabil open source.

Puteți să -mi trimiteți întrebări pentru blog folosind acest formular și să vă abonați pentru a primi un e -mail atunci când există o nouă postare.

Am lucrat la propriile mele cercetări și, după trei zile de descărcare și curățare a datelor de la ONU Comtrade Plus, am fost ableto să creez o bază de date ordonată în postgres.

A trebuit să parcurg 65 GB de date pentru a organiza acest lucru într -un lucru transmisibil.

Conectarea la baza mea de date postgreSQL locală (altfel citirea și filtrarea acestui lucru ar fi nebună):

# remember to load postgres first

library(RPostgres)

con <- dbConnect(
  Postgres(),
  dbname = Sys.getenv("COMTRADE_NAME"),
  host = Sys.getenv("COMTRADE_HOST"),
  user = Sys.getenv("COMTRADE_USER"),
  password = Sys.getenv("COMTRADE_PASSWORD"),
  port = Sys.getenv("COMTRADE_PORT")
)

dbListTables(con)
 (1) "classification_codes"   "commodities"            "commodities_short"     
 (4) "commodity_codes"        "commodity_correlations" "countries"             
 (7) "country_codes"          "customs_codes"          "exports"               
(10) "flow_codes"             "gdp_deflator"           "imports"               
(13) "mos_codes"              "mot_codes"              "unit_codes"            
(16) "yc"                     "yr"                     "yrc"                   
(19) "yrp"                    "yrpc"                  

După cum puteți vedea în chunk -ul anterior, este o practică bună să utilizați variabile de mediu pentru a stoca informații sensibile, cum ar fi acreditările bazei de date, chiar și pentru bazele de date locale, fără acces extern (de exemplu, această bază de date este stocată pe laptopul meu). Gestionez aceste acreditări cu usethis::edit_r_environ().

Acum pot folosi TIDYVERSE pentru filtrarea și analiza eficientă a datelor mele:

library(dplyr)

tbl(con, "commodities") %>%
  glimpse()
Rows: ??
Columns: 8
Database: postgres  (pacha@localhost:5432/comtrade)
$ commodity_code        "010121", "010129", "010130", "010190", "010221",…
$ commodity_code_short  "0101", "0101", "0101", "0101", "0102", "0102", "…
$ commodity_name        "Horses; live, pure-bred breeding animals", "Hors…
$ chapter_code          "01", "01", "01", "01", "01", "01", "01", "01", "…
$ chapter_name          "Animals; live", "Animals; live", "Animals; live"…
$ section_code          "01", "01", "01", "01", "01", "01", "01", "01", "…
$ section_name          "Live Animals; Animal Products", "Live Animals; A…
$ section_color         "#74c0e2", "#74c0e2", "#74c0e2", "#74c0e2", "#74c…

În sistemul armonizat (HS), codurile vamale internaționale sunt utilizate pentru a clasifica produsele tranzacționate, iar acest set de date folosește HS Revision 2022. Codurile HS sunt extinse constant pentru a reflecta schimbările tehnologiei (de exemplu, revizuirea HS 2002 are mai puține coduri pentru „telefoane mobile” decât HS Revision 2022, care disting între diferite tipuri de telefoane mobile). Aceste coduri sunt ierarhice, primele două cifre reprezintă capitolul, iar în total aceste date au 99 de capitole cu al 99 -lea capitol fiind adăugarea mea care acoperă produse „necunoscute/nespecificate” (de exemplu, codul „999999”).

Codul secțiunii cuprinde 21 de coduri plus un plus „necunoscut/nespecificat” pe care l -am făcut. Acestea sunt, de asemenea, ierarhice, dar nu pot fi generalizate în același mod ca și codurile capitolului prin tăierea codului produsului. De exemplu, secțiunea unu conține capitole unu la cinci. A trebuit să adaug acest lucru cu propriile scripturi R după ce am găsit o pagină web care listează codurile de secțiune și capitolul lor variază de la Organizația Vamală Mondială (WCO). A trebuit să -l obțin de la mașina de pe Internet Wayback, deoarece pagina originală nu era disponibilă.

Din cauza modului în care sunt prezentate secțiunile, a trebuit să fac acest lucru:

section_names <- str_to_title(c(
  "LIVE ANIMALS; ANIMAL PRODUCTS",
  "VEGETABLE PRODUCTS",
  "ANIMAL, VEGETABLE OR MICROBIAL FATS AND OILS AND THEIR CLEAVAGE PRODUCTS; PREPARED EDIBLE FATS; ANIMAL OR VEGETABLE WAXES",
  ...
))

d <- d %>%
  mutate(
    section_name = case_when(
      section_code == "01" ~ section_names(1),
      section_code == "02" ~ section_names(2),
      section_code == "03" ~ section_names(3),
      ...

Și ceva similar pentru culori, care sunt adăugarea mea și corespund 22 de culori pe care le -am găsit atrăgătoare vizual.

Având în vedere acest lucru, este mai simplu să reprezentați 22 de secțiuni decât 99 de capitole vizual. Secțiunile sunt:

tbl(con, "commodities") %>%
  distinct(section_code, section_name) %>%
  arrange(section_code) %>%
  collect() %>%
  print(n = 22)
# A tibble: 22 × 2
   section_code section_name                                                    
                                                                      
 1 01           Live Animals; Animal Products                                   
 2 02           Vegetable Products                                              
 3 03           Animal, Vegetable Or Microbial Fats And Oils And Their Cleavage…
 4 04           Prepared Foodstuffs; Beverages, Spirits And Vinegar; Tobacco An…
 5 05           Mineral Products                                                
 6 06           Products Of The Chemical Or Allied Industries                   
 7 07           Plastics And Articles Thereof; Rubber And Articles Thereof      
 8 08           Raw Hides And Skins, Leather, Furskins And Articles Thereof; Sa…
 9 09           Wood And Articles Of Wood; Wood Charcoal; Cork And Articles Of …
10 10           Pulp Of Wood Or Of Other Fibrous Cellulosic Material; Recovered…
11 11           Textiles And Textile Articles                                   
12 12           Footwear, Headgear, Umbrellas, Sun Umbrellas, Walking-Sticks, S…
13 13           Articles Of Stone, Plaster, Cement, Asbestos, Mica Or Similar M…
14 14           Natural Or Cultured Pearls, Precious Or Semi-Precious Stones, P…
15 15           Base Metals And Articles Of Base Metal                          
16 16           Machinery And Mechanical Appliances; Electrical Equipment; Part…
17 17           Vehicles, Aircraft, Vessels And Associated Transport Equipment  
18 18           Optical, Photographic, Cinematographic, Measuring, Checking, Pr…
19 19           Arms And Ammunition; Parts And Accessories Thereof              
20 20           Miscellaneous Manufactured Articles                             
21 21           Works Of Art, Collectors' Pieces And Antiques                   
22 99           Unknown Or Unspecified                                          

Conform Studiului Statisticilor Canada privind cheltuielile gospodărești, 2023: „Adăpostul a reprezentat 32,1%din consumul total de bunuri și servicii în 2023, urmat de transport (15,8%) și alimente (15,7%), care au rămas cele mai mari trei categorii de cheltuieli.” Din această cauză, să ne concentrăm doar pe secțiunile unu la patru.

Cât produsele americane sunt reprezentate din produsele canadiene (și alimente legate de alimente) în 2023? Putem merge la tabelul YRPC (an-reporter-partener-comună). HS prezintă produsele ca mărfuri, dar pentru simplitate, mă refer la ele ca produse. Acest tabel nu face parte din datele oficiale ale Comtradei ONU, ci crearea mea cu pași suplimentari pentru a include codurile alfa ISO-3 pentru țări și codurile de secțiune și capitol pe care le-am menționat anterior.

can_foods <- tbl(con, "yrpc") %>%
  filter(
    year == 2023L,
    partner_iso == "CAN",
    section_code %in% c("01", "02", "03", "04")
  ) %>%
  mutate(
    exporter = case_when(
      reporter_iso == "USA" ~ "United States",
      TRUE ~ "Rest of the World"
    )
  ) %>%
  group_by(exporter) %>%
  summarise(
    imports = sum(trade_value_usd_exp, na.rm = TRUE)
  ) %>%
  ungroup() %>%
  mutate(
    share = imports / sum(imports) * 100
  ) %>%
  collect()

can_foods
# A tibble: 2 × 3
  exporter               imports share
                       
1 Rest of the World 44360282786.  57.4
2 United States     32885888490   42.6

În bucățile anterioare am folosit cifrele bazate pe exportator pentru a exclude costul de marfă și asigurare din valorile bazate pe importator. Acest lucru oferă o imagine mai clară a fluxurilor comerciale reale între țările implicate, fără a lua în considerare costurile logistice.

Putem rafina acest lucru un pic mai mult, grupând și pe codul secțiunii:

can_foods_refined <-  tbl(con, "yrpc") %>%
  filter(
    year == 2023L,
    partner_iso == "CAN",
    section_code %in% c("01", "02", "03", "04")
  ) %>%
  mutate(
    exporter = case_when(
      reporter_iso == "USA" ~ "United States",
      TRUE ~ "Rest of the World"
    )
  ) %>%
  inner_join(
    tbl(con, "commodities") %>%
      select(commodity_code, section_code, section_name, section_color)
  ) %>%
  group_by(exporter, section_name, section_color) %>%
  summarise(
    imports = sum(trade_value_usd_exp, na.rm = TRUE)
  ) %>%
  ungroup() %>%
  group_by(section_name, section_color) %>%
  mutate(
    share = imports / sum(imports) * 100
  ) %>%
  ungroup() %>%
  arrange(section_name, exporter) %>%
  collect()

can_foods_refined
# A tibble: 8 × 5
  exporter          section_name                     section_color imports share
                                                       
1 Rest of the World Animal, Vegetable Or Microbial … #549e95       1.85e 9  66.8
2 United States     Animal, Vegetable Or Microbial … #549e95       9.19e 8  33.2
3 Rest of the World Live Animals; Animal Products    #74c0e2       6.13e 9  60.7
4 United States     Live Animals; Animal Products    #74c0e2       3.97e 9  39.3
5 Rest of the World Prepared Foodstuffs; Beverages,… #8abdb6       2.57e10  60.0
6 United States     Prepared Foodstuffs; Beverages,… #8abdb6       1.71e10  40.0
7 Rest of the World Vegetable Products               #406662       1.07e10  49.7
8 United States     Vegetable Products               #406662       1.09e10  50.3

Un complot al tabelului anterior poate arăta cât de multe dintre produsele alimentare (și legate de produse alimentare) importate de Canada provin din Statele Unite:

library(stringr)
library(ggplot2)

# trim section name to 40 characters
can_foods_refined <- can_foods_refined %>%
  mutate(section_name = paste0(str_sub(section_name, 1, 40), "..."))

ggplot(can_foods_refined, aes(x = exporter, y = share, fill = section_color)) +
  geom_col(width = 0.7) +
  facet_wrap(~ section_name, ncol = 1) +
  scale_fill_identity() +
  labs(
    title = "Share of Food Products Imported by Canada (2023)",
    subtitle = "Source: Own creation based on UN Comtrade data",
    x = "",
    y = "Share (%)"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    axis.text.x = element_text(angle = 30, hjust = 1),
    legend.position = "none"
  )

Tarifele reciproce de 25% aplicate unor produse animale și vegetale din 12 septembrie 2025 (Sursa: Guvernul Canadei) afectează direct buzunarul gospodăriilor canadiene cu o mărime aproximativ de 25% x 15,7% x 60% ~ = 2,5% doar la produsele alimentare. Mâncarea este acum 25% x 60% ~ = 15% mai scumpă pentru familiile canadiene. Acesta este un impact semnificativ asupra costului vieții pentru multe familii, dacă începem să adăugăm alte produse afectate în mix și impactul suplimentar asupra ocupării forței de muncă, deoarece aceste tarife afectează și oțelul și alte industrii canadiene. Desigur, acest lucru ignoră efectele de echilibru generale, cum ar fi devierea comerțului și schimbările altor exportatori și comportamentul consumatorilor.

Dacă citiți până aici, am pus datele comerciale internaționale de vânzare, acestea acoperă 1988-2023 pentru toate țările la nivel de mărfuri (HS 6 cifre) și este deja curățat și organizat într-o bază de date PostgreSQL. Puteți obține 65 GB de date curate de la Buy Me a Coffee cu documentație și asistență.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.