Fertilitetsmål

klik for at se/skjule kode
#*********************************
# Fertility in Greenland on districts, 
# municipalities, all Greenland and Settlements by size
#
# area, time, cohort, place of birth
#
# 
#*********************************

#*********************************
# 
# setup

library(tidyverse)
library(statgl)
library(pxmake)
#packageVersion("pxmake")

CONST_taar <- 2024
  lastupdated <- "2025-04-04 09:00"
  nextupdate  <- "2026-02-11 09:00"


# 
#*********************************
# Get Female population & number of livebirths
#
# area, time, cohort, popPrimo, popUltimo
#
# Area is a variable that divides Greenland into a number of geo-regions that totals to All Greenland
#
#*********************************
# 
# 
# ## Download and reformat data -------------------------------------------------
# 
statbank <- "http://testbank.stat.gl/api/v1/da/Greenland"
# 
# statbank <- CONST_testbank

fodt_last <- 
  statgl_url("BEXSAT2", api_url = statbank) %>%
  statgl_fetch(type = c("0","1"),
    "time"             = px_top(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) 

I 2024 fødtes 620 børn, heraf 684 af mødre født i Grønland . Når fertilitet beregnes på så små befolkninger vil alle afledte demografiske mål, som er bare lidt mere sofistikerede end ‘den summariske fertilitetsrate’ (antal levendefødte pr 1000 indbyggere) være synligt påvirket af tilfældige variationer. For at reducere indflydelsen fra kalenderårseffekter beregnes demografiske mål i alder x, som gennemsnit for flere efterfølgende år.

Kvinders fertile aldre antages generelt at være i aldrene fra 15-49 år. I disse år fødes stort set alle børn af kvinder i aldrene 18-42 år.

I figur 1a vises det årlige antal levendefødte siden 1950. Særligt i 1960’erne blev der født mange børn, på grund af ekstrem høj kalenderårsfertilitet, som ses i figur 1b. I sidste halvdel af 1960’erne faldt den samlede fertilitet brat til omkring 2½ barn pr kvinde. I perioden 2010 til 2020 år var den samlede fertilitet omkring 2,1 barn pr kvinde. Efter pandemien er fertiliteten faldet yderligere og var 1,7 i 2024.

Figur 1

age_max <- 50

## Download, reformat data and calculate totals for 'Place of Birth' -------------------------------------------------

# Female population 
BEXSAT2_tab <- 
  statgl_url("BEXSAT2", api_url = statbank) %>%
  statgl_fetch(type = c("0"),
    "time"             = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = FALSE
  ) %>% 
  as_tibble() %>% 
  select(time,
         value) %>%
  mutate(value = as.numeric(value),
         time = as.integer(as.character(time))) 


BEXSAT2_tab %>%
  ggplot(aes(
    x     = time,
    y     = value
  )) +
  geom_line(size=2) +
  expand_limits(y = 0) +
  xlim(1950,CONST_taar) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 1a Antal levendefødte 1950 -",
    subtitle = "Hele landet, mødre født i Grønland",
    x        = "",
    y        = "antal levendefødte"
  )

kilde: Statistikbanken

BEXBBSF1_tab <- 
  statgl_url("BEXBBSF1", api_url = statbank) %>%
  statgl_fetch(age = c("0"),
    "time"             = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = FALSE
  ) %>% 
  as_tibble() %>% 
  select(time,
         value) %>%
  mutate(value = as.numeric(value),
         time = as.integer(as.character(time))) %>% 
  filter(time >= 1950)


BEXBBSF1_tab %>%
  ggplot(aes(
    x     = time,
    y     = value/1000
  )) +
  geom_line(size=2) +
  expand_limits(y = 0) +
  xlim(1950,CONST_taar) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 1b Samlet fertilitet 1950 -",
    subtitle = "Hele landet, mødre født i Grønland",
    x        = "",
    y        = "Antal børn pr kvinde"
  )

kilde: Statistikbanken



Beregningsgrundlag

age_max <- 50

## Download, reformat data and calculate totals for 'Place of Birth' -------------------------------------------------

# Female population 
mom <- 
  statgl_url("BEXCALCR2", api_url = statbank) %>%
  statgl_fetch(omr = px_all(),
    faar    = px_all(),
    ttype   = c("P","U"),
    fsted   = px_all(),
    sex     = c("F"),
    taar    = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) %>% 
  as_tibble() %>% 
  select(area=omr,
         cohort = faar,
         pob = fsted,
         event=ttype,
         time=taar,
         value) %>%
  mutate(pob=ifelse(pob=="A","S",pob)) %>% 
  group_by(area,cohort,event,time,pob) %>% 
  summarise(value=sum(value)) %>% 
  ungroup() %>% 
  mutate(value = as.numeric(value),
         cohort = as.integer(as.character(cohort)),
         time = as.integer(as.character(time))) %>% 
  pivot_wider(names_from=event,values_from = value)


# number of livebirths, same variables
mom_child <- 
  statgl_url("BEXFERTR", api_url = statbank) %>%
  statgl_fetch(
    faar      = px_all(),
    m_fsted   = px_all(),
    omr       = px_all(),
    taar      = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) %>% 
  as_tibble() %>% 
  select(area=omr,
         cohort = faar,
         pob = m_fsted,
         time=taar,
         B = value) %>%
  mutate(pob=ifelse(pob=="A","S",pob)) %>% 
  group_by(area,cohort,time,pob) %>% 
  summarise(B=sum(B)) %>% 
  ungroup() %>% 
  mutate(cohort = as.integer(as.character(cohort)),
         time = as.integer(as.character(time))) %>% 
  filter(time >= 1994 & B > 0) %>%
  # age - derived from time and cohort
  mutate(ageUlt = time - cohort) %>% 
  arrange(area,pob,time,ageUlt) %>% 
  # add female population, same variables
  left_join(mom,by=c("area","pob","cohort","time")) %>% 
  # calculate exposure
  mutate(E = (P+U)/2) %>% 
  pivot_longer(cols=c("E","B","P","U"),names_to = "type")

# calculate Totals for 'Place of Birth'
mom_child_tot <- mom_child  %>% 
  # group_by(area,cohort,ageUlt,time,type) %>% 
  # summarise(value = sum(value)) %>% 
  filter(pob=="T")

# calculate and add Totals for 'Place of Birth'
mom_child_all <- mom_child  %>% 
  # group_by(area,cohort,ageUlt,time,type) %>% 
  # summarise(value = sum(value)) %>% 
  filter(pob=="T") %>% 
  rbind(mom_child)

Som grundlag for beregninger af demografiske mål giver Grønlands Statistik adgang til meget detaljerede tabeller i Grønlands Statistikbank, herunder et Befolkningsregnskab:

https://bank.stat.gl/BEDCALC2

Danmarks Statistik offentliggjorde tilsvarende befolkningsregnskab frem til 2004 se: Befolkningens bevægelser, tabel 134, side 261. Regnskabet er ikke videreført i Statistikbanken

Tabellen BEDFERTR indeholder detaljerede oplysninger om de fødende kvinders alder og fødested fordelt på de samme geografisk-administrative enheder som det regionale befolkningsregnskab:

https://bank.stat.gl/BEDCALCR2

Der inddeles i føgendede geografisk-administrative enheder: kommuner, distrikter, lokaliteter efter størrelse, Nuuk, By/bygd, Hele landet

Inddelingerne er foretaget således at summen i hver gruppe er lig summen for hele landet (I alt).

Summarisk fertilitetskvotient

# Total population 
pop_raw <- 
  statgl_url("BEXCALCR2", api_url = statbank) %>%
  statgl_fetch(omr = px_all(),
    ttype          = c("P","U"),
    sex            = c("T","F"),
    fsted          = px_all(),
    taar           = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) %>% 
  as_tibble() %>% 
  select(area=omr,
         sex,
         pob = fsted,
         event=ttype,
         time=taar,
         value) %>%
  mutate(value = as.numeric(value),
         time = as.integer(as.character(time)))

pop_t <- pop_raw %>% 
  filter(sex=="T") %>% 
  select(-sex)

# number of livebirths, same variables
mom_c <- 
  statgl_url("BEXFERTR", api_url = statbank) %>%
  statgl_fetch(
    m_fsted = px_all(),
    omr     = px_all(),
    taar    = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) %>% 
  as_tibble() %>% 
  select(area = omr,
         pob  = m_fsted,
         time = taar,
         value) %>% 
  mutate(event="B",
         time = as.integer(as.character(time)))


pop_t_child_all <- mom_c %>%
  rbind(pop_t) %>% 
  mutate(pob=ifelse(pob=="A","S",pob)) %>% 
  group_by(area,pob,event,time) %>% 
  summarise(value = sum(value)) %>% 
  ungroup() %>% 
  pivot_wider(names_from = event, values_from = value) %>% 
# calculate exposure
  mutate(E = (P+U)/2,
         TF = B / E * 1000) %>% 
  select(time,area,pob,TF)


TFGrlN <- pop_t_child_all %>% 
  as_tibble() %>% 
  filter(area=="ALL" & time==CONST_taar & pob=="N") %>% 
  select(TF) %>% 
  mutate(TF=round(TF,digits = 1))

TFGrlS <- pop_t_child_all %>% 
  as_tibble() %>% 
  filter(area=="ALL" & time==CONST_taar & pob=="S") %>% 
  select(TF) %>% 
  mutate(TF=round(TF,digits = 1))

“Den summariske fertilitetskvotient er det simpleste kvotientmål og beregnes som det årlige antal levendefødte pr. 1000 indbyggere. Det er imidlertid uhensigtsmæssigt, at nævneren også omfatter mænd samt kvinder under og over den fertile alder (15-49 år), idet sammenligning af den summariske fertilitetskvotient mellem to befolkninger kan påvise forskelle, som alene skyldes en forskellig andel af kvinder i den fertile alder.” kilde: Matthiessen, Poul Chr.: fertilitet i Den Store Danske på lex.dk. Hentet 11. august 2021

På grund af det stærkt begrænsede informationsbehov ved beregning er målet tilgængeligt for stort set alle verdens lande, se: Verdensbanken

I 2024 er den summariske fertilitetsrate beregnet til 12.4 for personer født i Grønland og 9.4 for personer født udenfor Grønland, bosat i Grønland. Kun 1/3 af personer født udenfor Grønland er kvinder, medens der er omtrent lige mange mænd og kvinder, blandt de som er født i Grønland. Derfor er målet ikke egnet til sammenligninger, opdelt efter fødested. Det samme gør sig gældende for regionale sammenligninger, da udenlandsk fødte i høj grad bor i Nuuk.


pop_t_child_all %>% 
 filter(time >= 1995, pob == "N", area %in% c("ALL", "LP6", "LP3")) %>% 
  mutate(area = factor(area, 
                       levels = c("ALL", "LP3", "LP6"),
                       labels = c("Hele landet", "Bosteder med 200-699 indbyggere", "Nuuk"))) %>%   select(time,area,TF) %>% 
    ggplot(aes(
    x     = time,
    y     = TF,
    color = area 
  )) +
  geom_line(size = 1) +
  expand_limits(y = 0) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 2 Summarisk fertilitet 1995 -",
    subtitle = "Udvalgte regioner, mødre født i Grønland",
    x        = "",
    y        = "summarisk fertilitet",
    color    = ""
  )

kilde: Statistikbanken

Generel fertilitetskvotient

# Female population 
popF_raw <- 
  statgl_url("BEXCALCR2", api_url = statbank) %>%
  statgl_fetch(
    omr    = px_all(),
    ttype  = c("P","U"),
    faar   = px_all(),
    sex    = c("F"),
    fsted  = px_all(),
    taar   = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) %>% 
  as_tibble() %>% 
  select(area=omr,
         cohort  = faar,
         pob = fsted,
         event=ttype,
         time=taar,
         value) %>%
  mutate(value = as.numeric(value),
         cohort = as.integer(as.character(cohort)),
         time = as.integer(as.character(time)),
         ageUlt = time-cohort) %>% 
  filter(ageUlt >= 15 & ageUlt <= 49) %>% 
  select(-cohort)

pop_f <- popF_raw %>% 
  group_by(area,pob,event,time) %>% 
  summarise(value=sum(value))


pop_f_child_all <- mom_c %>%
  rbind(pop_f) %>% 
  mutate(pob=ifelse(pob=="A","S",pob)) %>% 
  group_by(area,pob,event,time) %>% 
  summarise(value = sum(value)) %>% 
  ungroup() %>% 
  pivot_wider(names_from = event, values_from = value) %>% 
# calculate exposure
  mutate(E = (P+U)/2,
         GF = B / E * 1000) %>% 
  select(time,area,pob,GF)


GFGrlN <- pop_f_child_all %>% 
  as_tibble() %>% 
  filter(area=="ALL" & time==CONST_taar & pob=="N") %>% 
  select(GF) %>% 
  mutate(GF=round(GF,digits = 1))

GFGrlS <- pop_f_child_all %>% 
  as_tibble() %>% 
  filter(area=="ALL" & time==CONST_taar & pob=="S") %>% 
  select(GF) %>% 
  mutate(GF=round(GF,digits = 1))

“Den generelle fertilitetskvotient defineres som antallet af levendefødte pr. 1000 kvinder i den fertile alder. Selvom der i nævneren for dette mål kun indgår personer, som antages at kunne føde, er målet afhængigt af aldersfordelingen blandt kvinder. En særlig høj værdi af den generelle fertilitetskvotient kan således helt eller delvis skyldes en stor andel af kvinder i aldersklassen 25-34 år, hvor fertilitetsniveauet er højere end i de øvrige aldersklasser.” kilde: Matthiessen, Poul Chr.: fertilitet i Den Store Danske på lex.dk. Hentet 11. august 2021



I 2024 er den generelle fertilitetsrate beregnet til 53.3 for personer født i Grønland og 39.4 for personer født udenfor Grønland, bosat i Grønland. Det bratte fertilitetsfald omkring 1970 medførte et kraftigt fald i det årlige antal levendefødte, så kraftigt, at fødselsårgangene blot 10 år senere var halveret i størrelse. Fødselsårgangene før fertilitetsfaldet omtales som ‘de store årgange’ og det er særdeles vigtigt for at have sammenlignelige mål at alderskomponenten standardiseres.

pop_f_child_all %>% 
  filter(time >= 1995 & pob=="N" & area %in% c("ALL","LP6","LP3")) %>% 
  mutate(area = factor(area, 
                       levels = c("ALL", "LP3", "LP6"),
                       labels = c("Hele landet", "Bosteder med 200-699 indbyggere", "Nuuk"))) %>%
  select(time,area,GF) %>% 
    ggplot(aes(
    x     = time,
    y     = GF,
    color = area 
  )) +
  geom_line(size = 1) +
  expand_limits(y = 0) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 3 Generel fertilitet 1995 -",
    subtitle = "Udvalgte regioner, mødre født i Grønland",
    x        = "år",
    y        = "Generel fertilitet",
    color    = ""
  )



pop_fert_indicator <- pop_t_child_all %>% 
  left_join(pop_f_child_all) %>% 
  pivot_longer(cols=c("TF","GF"),names_to="kvot")

kilde: Statistikbanken

Aldersbetinget fertilitet

“De aldersbetingede fertilitetskvotienter fremkommer ved at beregne antallet af levendefødte pr. 1000 kvinder i hver 1-års eller 5-års aldersklasse.

Den samlede fertilitet angiver det antal levendefødte børn, som 1000 kvinder ville sætte i verden i løbet af deres fertile periode, hvis de fødte i overensstemmelse med givne aldersbetingede fertilitetskvotienter og gennemlevede hele den fertile periode.”
kilde: Matthiessen, Poul Chr.: fertilitet i Den Store Danske på lex.dk. Hentet 11. august 2021


fert <- mom_child %>%
  ungroup() %>% 
  select(area, pob, type, ageUlt, time, value) %>% 
  arrange(area, pob, type, ageUlt, time) %>%
  pivot_wider(names_from = type, values_from = value) %>%
  # Beregn fertilitet per 1000
  mutate(fertkv1 = (B/E)*1000) %>%
  filter(ageUlt > 14) %>%
  arrange(area, pob, ageUlt, time) %>%
  # Gruppér data, så lag() beregnes inden for hver gruppe
  group_by(area, pob, ageUlt) %>%
  mutate(
    fertkv2 = (fertkv1 + lag(fertkv1, order_by = time, n = 1))/2,
    fertkv5 = (fertkv1 + lag(fertkv1, order_by = time, n = 1)
                          + lag(fertkv1, order_by = time, n = 2)
                          + lag(fertkv1, order_by = time, n = 3)
                          + lag(fertkv1, order_by = time, n = 4))/5,
    B2 = B + lag(B, order_by = time, n = 1),
    B5 = B + lag(B, order_by = time, n = 1)
         + lag(B, order_by = time, n = 2)
         + lag(B, order_by = time, n = 3)
         + lag(B, order_by = time, n = 4),
    E2 = E + lag(E, order_by = time, n = 1),
    E5 = E + lag(E, order_by = time, n = 1)
         + lag(E, order_by = time, n = 2)
         + lag(E, order_by = time, n = 3)
         + lag(E, order_by = time, n = 4),
    F1 = B/E*1000,
    F2 = B2/E2*1000,
    F5 = B5/E5*1000
  ) %>%
  ungroup() %>%
#  pivot_longer(cols=c("P","U","B","B2","B5","E","E2","E5","F1","F2","F5","fertkv1","fertkv2","fertkv5"),names_to = "kvot")
#  select(area,pob,ageUlt,time,B,E,F1,B2,E2,F2,B5,E5,F5) %>%
  select(-P,-U,-fertkv1,-fertkv2,-fertkv5) %>% 
pivot_longer(cols=c(B,E,F1,B2,E2,F2,B5,E5,F5),names_to = "kvot") %>% 
  arrange(kvot,area,pob,ageUlt,time)





# calculate and add total by Age (ageUlt)
px_data_1 <- fert %>%   
  group_by(kvot,time,area,pob) %>% 
  summarise(value = sum(value, na.rm = TRUE), .groups = "drop") %>% 
  mutate(ageUlt="-1") %>% 
  rbind(fert) %>% 
  select(time,area,`place of birth`=pob,age=ageUlt,kvot,value) %>% 
  arrange(area,desc(`place of birth`),time,age,kvot) %>%
  mutate(value = ifelse(is.na(value), "-", as.character(value))) %>% 
  filter(time>=1995 & time<=CONST_taar)

px_data_1_F1 <- px_data_1 %>% filter(time==CONST_taar & kvot=="F1" & area=="ALL" & age=="-1" & `place of birth`=="N") %>% mutate(value=as.numeric(value)/1000) %>% pull() %>% round(2)

De aldersbetingede fertilitetskvotienter og summen af disse over de fertile aldre, som kaldes samlet fertilitet er de vigtigste mål til at beskrive en befolknings fertilitet.

I figur 2a vises disse beregnet på hhv 1-år, 2-års og 5-års grundlag. Det ses at betydningen af tilfældige årsvariationer reduceres betydeligt, når beregningsgrundlaget er større.

I figur 2b ses udviklingen i den samlede fertilitet over de seneste 29 år. Mellem 2010 og 2020 var den samlede fertilitet på niveau omkring 2,1 barn per kvinde født i Grønland, hvilket er det fertilitetsniveau en befolkning skal have for at kunne reproducere sig selv, når der ses bort fra vandringer. Siden 2020 er den samlede fertilitet faldet, så den i 2024 er helt nede på 1.7

Figur 2 Fertilitetskvotienter


fert %>%
  select(time,area,pob,ageUlt,kvot,value) %>% 
  group_by(time,area,pob,ageUlt,kvot) %>% 
  summarise(value=sum(value)) %>% 
  filter(kvot %in% c("F1","F2","F5") & area == "ALL" & pob=="T" & time==CONST_taar) %>%
  select(ageUlt,kvot,value) %>%
  mutate(time = strtoi(ageUlt),
         kvot = as.factor(kvot)) %>% 
    mutate(kvot = factor(kvot, 
                       levels = c("F1", "F2", "F5"),
                       labels = c("1 år", "2 år","5 år"))) %>%
    ggplot(aes(
    x     = ageUlt,
    y     = value,
    color = kvot
  )) +
  geom_line(size = 1) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
#  geom_smooth(method = "gam", se = TRUE) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 2a Aldersbetinget fertilitet, 1-, 2- og 5-års grupper",
    subtitle = paste0(CONST_taar," , Hele landet, hele befolkningen"),
    x = "",
    y = "",
    color    = "antal år i beregning: "
  )


fert %>%
  select(time,area,pob,ageUlt,kvot,value) %>% 
  group_by(time,area,pob,kvot) %>% 
  summarise(value=sum(value)) %>% 
  filter(time >= 1995 & kvot %in% c("F1","F2","F5") & area == "ALL" & pob=="T") %>%
  select(time,kvot,value) %>%
  mutate(time = strtoi(time),
         kvot = as.factor(kvot)) %>%
    mutate(kvot = factor(kvot, 
                       levels = c("F1", "F2", "F5"),
                       labels = c("1 år", "2 år","5 år"))) %>%
  ggplot(aes(
    x     = time,
    y     = value,
    color = kvot
  )) +
  geom_line(size = 1) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  geom_smooth(method = "gam", se = TRUE) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 2b Samlet fertilitet",
    subtitle = paste0(" 1995-", CONST_taar,", Hele landet, hele befolkningen"),
    x = "",
    y = "",
    color = "Antal år i beregning: "
  )



Hovedstaden og hovedbostederne er uddannelsesbyer hvorfor de tiltrækker sig unge under uddannelse, der har lavere fertilitet end kvinder i samme aldre, som bor i de mindre bosteder.

Kvinder som bor i de mindre bosteder får børn tidligere end kvinder under uddannelse. De både begynder og slutter tidligere.

agegroups <- c(paste(seq(15, 45, by = 5), seq(15 + 5 - 1, 50 - 1, by = 5),sep = "-"))

fert %>% 
  filter(time >= 1995 & pob=="N" & area %in% c("LP3","LP6") & kvot=="F5") %>% 
  mutate(area = factor(area, 
                       levels = c("LP3", "LP6"),
                       labels = c("Bosteder med 200-699 indbyggere", "Nuuk"))) %>%
  filter(ageUlt < 45 ) %>% 
  select(time,area,ageUlt,time,value) %>% 
  mutate(AgeGroup = cut(ageUlt, 
                        breaks = c(seq(15, 45, by = 5), Inf), 
                        labels = agegroups, 
                        right = FALSE)) %>%
  group_by(time,area,AgeGroup) %>%
  summarise(value = sum(value)/5) %>% 
  rename(age=AgeGroup) %>% 
    ggplot(aes(
    x     = time,
    y     = value,
    color = factor(area) 
  )) +
  facet_wrap(~ age, ncol = 3) +
  geom_line(size = 1) +
  expand_limits(y = 0) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = paste0("Figur 3a Aldersbetinget fertilitet i 5-års grupper 1995 - ",CONST_taar),
    subtitle = "Hovedstad/Bosteder, mødre født i Grønland",
    x        = "",
    y        = "fertilitetskvotient",
    color    = ""
  )

agegroups <- c(paste(seq(15, 45, by = 5), seq(15 + 5 - 1, 50 - 1, by = 5),sep = "-"))

fert %>% 
  as_tibble() %>% 
  filter(pob=="N" & area %in% c("LP6","LP5","LP3") & kvot=="F5" & time==CONST_taar) %>% 
    mutate(area = factor(area, 
                       levels = c("LP6", "LP5", "LP3"),
                       labels = c("Bosteder med 3000-6000 indbyggere", "Bosteder med 200-699 indbyggere", "Nuuk"))) %>% 
select(area,ageUlt,value) %>% 
    ggplot(aes(
    x     = ageUlt,
    y     = value,
    color = area
  )) +
  geom_line(size = 1) +
  expand_limits(y = 0) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
#  geom_smooth(method = "gam", se = TRUE) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = paste0("Figur 3b Aldersbetinget fertilitet ",CONST_taar),
    subtitle = "Hele landet, mødre født i Grønland",
    x        = "",
    y        = "fertilitetskvotient",
    color    = ""
  )

# Total population 
pop_raw <- 
  statgl_url("BEXCALCR2", api_url = statbank) %>%
  statgl_fetch(omr = px_all(),
    ttype            = c("B"),
    fsted   = px_all(),
    sex             = px_all(),
    taar             = px_all(),
    .eliminate_rest    = TRUE ,
    .col_code          = TRUE,
    .val_code          = TRUE
  ) %>% 
  as_tibble() %>% 
  select(area=omr,
         sex,
         pob=fsted,
         event=ttype,
         time=taar,
         value) %>%
  mutate(value = as.numeric(value),
         time = as.integer(as.character(time)))

pop <- pop_raw %>%
  pivot_wider(names_from = sex, values_from = value) %>% 
  mutate(k = M/F*100)

KPGrlN <- pop %>% 
  as_tibble() %>% 
  filter(area=="ALL" & time==CONST_taar & pob=="N") %>% 
  select(k) %>% 
  mutate(k=round(k,digits = 1))

KPGrlS <- pop %>% 
  as_tibble() %>% 
  filter(area=="ALL" & time==CONST_taar & pob=="S") %>% 
  select(k) %>% 
  mutate(k=round(k,digits = 1))







Regionalt fertilitetsindeks

# Start calculate index
fert_ALL <- fert %>% 
  filter(area == "ALL") %>% 
  select(-area) %>% 
  pivot_wider(names_from = kvot,values_from = value) %>% 
  rename(B_all=B,E_all=E,F1_all=F1,B2_all=B2,E2_all=E2,F2_all=F2,B5_all=B5,E5_all=E5,F5_all=F5)
  
fert_tmp <- fert %>% 
  pivot_wider(names_from = kvot,values_from = value) %>% 
  left_join(fert_ALL) %>% 
  mutate(B1_hat=E*F1_all/1000,
         B2_hat=E2*F2_all/1000,
         B5_hat=E5*F5_all/1000)
  
fert_indx <- fert_tmp %>% 
  select(area,pob,ageUlt,time,B,F1,B_all,F1_all,B1_hat,B2,F2,B2_all,F2_all,B2_hat,B5,F5,B5_all,F5_all,B5_hat) %>% 
  pivot_longer(cols = c("B","F1","B_all","F1_all","B1_hat","B2","F2","B2_all","F2_all","B2_hat","B5","F5","B5_all","F5_all","B5_hat"), names_to = "kvot") %>% 
  group_by(area,pob,time,kvot) %>% 
  summarise(value = sum(value, na.rm = TRUE), .groups = "drop") %>% 
  pivot_wider(names_from = kvot,values_from = value) %>% 
  mutate(indx1 = B/B1_hat*100,
         indx2 = B2/B2_hat*100,
         indx5 = B5/B5_hat*100) %>% 
  select(area,pob,time,F1,F2,F5,indx1,indx2,indx5) %>% 
  pivot_longer(cols = c("F1","indx1","F2","indx2","F5","indx5"), names_to = "kvot") %>% 
  drop_na() %>% 
  mutate(value = round(value, digits = 1))


px_data_2 <- fert_indx %>%
  filter(time>=1995 & time<=CONST_taar) %>% 
  rbind(pop_fert_indicator) %>% 
  select(area,`place of birth`=pob,time,kvot,value) %>% 
  drop_na(value) %>% 
  filter(!is.infinite(value)) %>% 
  arrange(time,area,`place of birth`,kvot) 



Det regionale fertilitetsindeks er beregnet ved inddirekte standardisering og udtrykker forholdet mellem det faktiske antal fødte i en region og det forventede antal fødte, hvis kvinderne i regionen føder børn i overensstemmelse med landsgennemsnittet.

Om demografisk metode, se Teoretisk Demografi, PC Matthiessen 1970



For yderligere beskrivelse af metode, se fx dette metodenotat fra det norske statistikkontor (SSB.no) om Standardiserte rater

Ved denne beregning ses at fertilitetsniveauet er temmelig konstant i landets kommuner, de størrelsesgrupperede lokaliteter samt fleste distrikter, særligt når et 5-års gennemsnit ligger til grund for beregningerne.

Dog skiller Qaanaaq og Ittoqqortoormiit sig markant ud med med et fertilitetsniveau der ligner 2 og 2½ gange landsgennemsnittet, med væsentlig større usikkerhed pga beregningsgrundlagets størrelse.



fert_indx %>%
  filter(time> 2004 & kvot == "indx5" & area  %in% c("LP2","LP3","LP4","LP5","LP6") & pob=="N") %>%
  mutate(area=case_when(area=="D17"~"Qaanaaq",
                       area=="D19"~"Ittoqqortoormiit",
                       area=="LP2"~"50-199 indbyggere",
                       area=="LP3"~"200-699 indbyggere",
                       area=="LP4"~"700- 2.999 indbyggere",
                       area=="LP5"~"3.000-6.000 indbyggere",
                       area=="LP6"~">6.000 indbyggere",
                       )) %>% 
  select(time,area,value) %>%
  ggplot(aes(
    x     = time,
    y     = value,
    color = area
  )) +
  geom_line(size = 1) +
  scale_y_continuous(labels = scales::unit_format(
    suffix       = " ",
    big.mark     = ".",
    decimal.mark = ","
  )) +
  geom_smooth(method = "gam", se = TRUE) +
  theme_statgl() +
  scale_color_statgl() +
  labs(
    title    = "Figur 4a Fertilitetsindeks, i størrelsesgrupperede lokaliteter",
    subtitle = " 2010-2021, mødre født i Grønland",
    x        = "",
    y        = "indeks",
    color    = NULL
  )

pxmake - tabeller til Statistikbank

px_data_1a <- px_data_1 %>% 
  filter(time>=1999) %>%
  mutate(time=as.character(time)) %>% 
  filter(!is.infinite(value)) %>% 
  drop_na(value) %>% 
  rename(figures_=value) 

px_data_2a <- px_data_2 %>% 
#  filter(!(kvot %in% c("F1","B","E","indx1")) & time>=1995) %>%
  filter(time>=1999) %>%
  mutate(time=as.character(time)) %>% 
  filter(!is.infinite(value)) %>% 
  drop_na(value) %>% 
  rename(figures_=value)



px1 <- 
   # px("https://bank.stat.gl/Resources/PX/Databases/Greenland/BE/BE10/BE1001/BE100130/BEXBBSF.px") %>% 
  px(file.path(getwd(),"px",CONST_taar,"BEXBBSF25.px")) %>% 
  px_data(px_data_1a) %>% 
  px_last_updated(lastupdated) %>% 
  px_next_update(nextupdate)

px1_description <- px_description(px1)  %>%  
   extract(value, 
          into = c("beskrivelse", "start_aar", "slut_aar", "kode"), 
          regex = "^(.*?)(?:, )?(\\d+)-(\\d+) \\[(.*)\\]$") %>% 
mutate(value=paste0(beskrivelse,", ", "1999"," - ", CONST_taar," <em>[", kode,"]</em>")) %>% 
  select(language,value)

px1 %>% px_description(px1_description) %>% 
  px_save(paste0("px/",CONST_taar+1,"/BEXBBSF.px"))

px2 <- 
  # px("https://bank.stat.gl/Resources/PX/Databases/Greenland/BE/BE10/BE1001/BE100130/BEXBBF.px") %>% 
  px(file.path(getwd(),"px",CONST_taar,"BEXBBF25.px")) %>% 
  px_data(px_data_2a) %>% 
  px_last_updated(lastupdated) %>% 
  px_next_update(nextupdate)

px2_description <- px_description(px2)  %>%  
   extract(value, 
          into = c("beskrivelse", "start_aar", "slut_aar", "kode"), 
          regex = "^(.*?)(?:, )?(\\d+)-(\\d+) \\[(.*)\\]$") %>% 
mutate(value=paste0(beskrivelse,", ", "1999"," - ", CONST_taar," <em>[", kode,"]</em>")) %>% 
  select(language,value)

px2 %>% 
  px_description(px2_description) %>%
  px_save(paste0("px/",CONST_taar+1,"/BEXBBF.px"))