Wykres 1. Średnia liczba urodzeń na 1000 mieszkańców w Polsce
w latach 2002-2024
Polska zmaga się z jednym z najniższych współczynników dzietności w Europie. Całkowity współczynnik dzietności (TFR) wynosi około 1,1, co poniżej poziomu zastępowalności pokoleń (2,1). To zjawisko ma bezpośrednie konsekwencje ekonomiczne i społeczne: starzejące się społeczeństwo, wzrost obciążenia demograficznego oraz zmniejszająca się siła robocza. Dzietność to bardzo skomplikowany proces, który może kształtować wiele zmiennych, a zależności mogą zmieniać się w czasie.
Jednak dzietność nie jest równomiernie rozłożona w kraju. Istnieją wyraźne różnice regionalne wynikające z warunków ekonomicznych, dostępu do opieki nad dzieckiem, polityki społecznej i różnych czynników demograficznych.
W Polsce nie ma dostępnych danych na poziomie powiatów o TFR, dlatego analizowaną zmienną jest liczba żywych urodzeń na 1000 mieszkańców.
Cel badania: Zidentyfikować główne determinanty dzietności na poziomie powiatów, uwzględniając: efekty ekonomiczne (bezrobocie, wynagrodzenia, ceny mieszkań), efekty demograficzne i społeczne (urbanizacja, dostęp do opieki nad dzieckiem, świadczenia wychowawcze), efekty przestrzenne (autokorelacja przestrzenna, spillover między powiatami).
Prace teoretyczne i badania empiryczne sugerują, że istotnymi
determinantami są:
- Bezrobocie: Bezrobocie zmniejsza dzietność (choć
ważniejsze bezrobocie na poziomie indywidualnym, nie zagregowanym)
(Kristensen & Lappegård, 2022),
- Wynagrodzenia: Wpływ mieszany - wzrost dochodów może
zwiększać dzietnosć, ale efekt nie jest liniowy (Cohen et al.,
2013),
- Świadczenia rodzinne: Program “Rodzina 500+”, w 2015+
na początku zwiększył dzietność w Polsce (Bartnicki & Alimowski,
2022),
- Dostęp do opieki: Żłobki i kluby dziecięce ułatwiają
powrót kobiet do pracy (Kurowska, 2012),
- Urbanizacja: Miasta wykazują niższą dzietność niż
tereny wiejskie (Szukalski, 2019).
Badania europejskie (Ouedraogo et al., 2018) pokazują, że dzietność wykazuje pozytywną autokorelację przestrzenną - sąsiednie regiony mają podobne poziomy dzietności.
Jakie czynniki ekonomiczne, demograficzne i społeczne determinują dzietność w powiatach Polski, uwzględniając zależności przestrzenne?
H1: Wyższa stopa bezrobocia jest związana z niższą dzietnością.
H2: Im wyższa mediana wynagrodzeń, tym wyższa dzietność.
H3: Wzrost mediany ceny mieszkań obniża dzietność.
H4: Wyższy odsetek urbanizacji zmniejsza dzietność.
H5: Wyższe wydatki na świadczenia wychowawcze zwiększają dzietność.
H6: Wyższa dostępność miejsc w żłobkach zwiększa dzietność.
H7: Wyższa odległość od stolicy województwa obniża dzietność.
Wczytanie zbioru danych i przekształcenie zmiennych. Policzenie statystyk opisowych i macierzy korelacji między zmiennymi. Obliczenie macierzy wag przestrzennych, a następnie przeprowadzenie testu I Morana dla zmiennej objaśnianej (urodzenia). Pokazanie statystyki I Morana na przestrzeni lat oraz średniej liczba urodzeń w powiatach w podziale na grupy względem odległości do stolicy województwa. Zwizualizowanie urodzeń na mapie. Stworzenie wykresu punktowego Morana, pokazanie przypisania ćwiartek na mapie oraz przeprowadzenie testu join-count. Estymacja modeli ekonometrycznych: MNK, a następnie modeli zależności przestrzennych: GNS, SAC, SDEM, SEM, SDM, SAR, SLX. Następnie wybór najlepszego modelu, interpretacja oszacowań i wnioski.
# wczytanie bibliotek
required_pkgs <- c("sf",
"terra",
"ggplot2",
"dbscan",
"kableExtra",
"sp",
"spdep",
"RColorBrewer",
"spatialreg",
"readxl",
"moments",
"lmtest",
"car",
"texreg",
"viridis")
for(pkg in required_pkgs) {
if(!require(pkg, character.only = TRUE)) install.packages(pkg)
library(pkg, character.only = TRUE)
}
options(scipen=999)
# ustawienie folderu z danymi (należy zmienić)
setwd("C:/Users/Admin/Desktop/my_folder")
# wczytanie danych
data <- read_excel("FULL_DANE.xlsx",
col_types = c("Kod_rok" = "text",
"ID_MAP" = "numeric",
"Kod" = "text",
"Nazwa" = "text",
"Rok" = "numeric",
"urodzenia" = "numeric",
"bezrobocie" = "numeric",
"obciazenie_dem" = "numeric",
"cena_1m2_mediana" = "numeric",
"urb" = "numeric",
"zasieg_socj_prod" = "numeric",
"miejsca_zlobki" = "numeric",
"pomoc_socj" = "numeric",
"emisja_zanieczyszczen_pylowych" = "numeric",
"swiad_wych" = "numeric",
"zielen_udzial" = "numeric",
"zielen" = "numeric",
"dzieci_zlobki_proc" = "numeric",
"ludnosc" = "numeric",
"podm_ambul" = "numeric",
"wynagrodzenie_zl" = "numeric",
"wynagrodzenie_100p" = "numeric",
"pow_km2" = "numeric",
"dist" = "numeric",
"region_number" = "text",
"region_name" = "text"))
View(data)
# przekształcenie niektórych zmiennych
# podmioty ambulatoryjne na 1000 mieszkańców
data$podm_ambul = data$podm_ambul/data$ludnosc * 1000Mapy powiatów i województw pobrano ze strony GIS https://gis-support.pl/baza-wiedzy-2/dane-do-pobrania/granice-administracyjne/.
Wszystkie dane pochodzą z Banku Danych Lokalnych GUS. W dalszej analizie ograniczono się do roku 2024. Wszystkie zmienne zostały zlogarytmowane. Do analizy wybrano następujące zmienne:
Zmienna objaśniana:
UR – liczba żywych urodzeń na 1000 mieszkańców.
Zmienne objaśniające:
• BEZR – stopa bezrobocia rejestrowanego (%)
• WYN – przeciętne (mediana) miesięczne wynagrodzenia brutto w relacji
do średniej krajowej (Polska=100)
• MET – mediana cen za 1 m2 lokali mieszkalnych sprzedanych w ramach
transakcji rynkowych (zł)
• URB – wskaźnik urbanizacji (odsetek ludzi mieszkający w
miastach)
• ZLB – miejsca w żłobkach i klubach dziecięcych na 1000 dzieci w wieku
do lat 3 (liczba)
• EMI – emisja zanieczyszczeń pyłowych na km2 powierzchni (wyrażone w
tonach na rok)
• WYCH – wydatki na świadczenia wychowawcze (zł)
• ZIE – powierzchnia terenów zielonych na jednego mieszkańca (w
km2)
• UZ – udział terenów zielonych w całkowitej powierzchni powiatu
(%)
• AMB – liczba podmiotów ambulatoryjnych na 1000 mieszkańców
• ODL – odległość centroidu powiatu od stolicy województwa (km).
# przygotowanie danych i wybór roku
rok = 2024
sub<-data[data$Rok==rok, ]
sub$UR<-sub$urodzenia
sub$BEZR<-sub$bezrobocie
sub$WYN<-sub$wynagrodzenie_100p
sub$MET<-sub$cena_1m2_mediana
sub$URB<-sub$urb
sub$ZLB<-sub$miejsca_zlobki
sub$EMI<-sub$emisja_zanieczyszczen_pylowych
sub$WYCH<-sub$swiad_wych
sub$ZIE<-sub$zielen
sub$UZ<-sub$zielen_udzial
sub$AMB<-sub$podm_ambul
sub$ODL<-sub$dist
# zlogarytmowanie zmiennych
vars <- c("UR", "BEZR", "WYN", "MET", "URB", "ZLB", "EMI",
"WYCH", "ZIE", "AMB", "UZ", "ODL")
for(v in vars){
sub[[v]] <- log(sub[[v]]+0.1)
}# wektor nazw zmiennych
vars <- c("UR", "BEZR", "WYN", "MET", "URB", "ZLB", "EMI",
"WYCH", "ZIE", "AMB", "UZ", "ODL")
zmienne = sub[,vars]
summary(zmienne)
# macierz korelacji Pearsona
korelacje <- cor(sub[, vars], use = "complete.obs")
# przekształcenie do długiego formatu
korelacje_long <- expand.grid(Var1 = rownames(korelacje),
Var2 = colnames(korelacje))
korelacje_long$Korelacja <- as.vector(as.matrix(korelacje))
# macierz korelacji (heatmap)
ggplot(korelacje_long, aes(x = Var2, y = Var1, fill = Korelacja)) +
geom_tile(color = "white") +
geom_text(aes(label = round(Korelacja, 2),
color = abs(Korelacja) < 0.3),
size = 4, fontface = "bold") +
scale_fill_gradient2(low = "blue", high = "red", mid = "white",
midpoint = 0,
limits = c(-1,1)) +
scale_color_manual(values = c("TRUE" = "white", "FALSE" = "black")) +
guides(color = "none") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))Rys. 1. Macierz korelacji Pearsona dla zmiennych
Brak zmiennych o wysokiej korelacji (>0,8). Nie usunięto żadnej zmiennej.
# Statystyki opisowe
summary_tab <- data.frame(
Średnia = round(colMeans(zmienne, na.rm = TRUE), 2),
SD = round(apply(zmienne, 2, sd, na.rm = TRUE), 2),
Min = round(apply(zmienne, 2, min, na.rm = TRUE), 2),
Max = round(apply(zmienne, 2, max, na.rm = TRUE), 2),
Skośność = round(apply(zmienne, 2, skewness, na.rm = TRUE), 3)
)
# Wyświetlenie statystyk
kable(summary_tab, digits = 3, caption = "Statystyki opisowe zmiennych", align = "c") %>%
kable_styling(bootstrap_options = c("striped", "hover"))Tabela 1. Statystyki opisowe zmiennych
# macierz wag przestrzennych W wg kryterium wspólnej granicy
cont.nb<-poly2nb(st_make_valid(pov)) # class nb
cont.listw<-nb2listw(cont.nb, style="W") # class listw
# macierz wag przestrzennych W - n najbliższych sąsiadów
crds<-st_centroid(st_geometry(st_make_valid(pov))) # centroidy w sf
pow.knn<-knearneigh(crds, k=379) # knn dla wszystkich regionów (w sumie 380)
pow.nb<-knn2nb(pow.knn) # w klasie nb
pow.listw = nb2listw(pow.nb, style="W")
# macierz odwrotnej odległości
inv.dist<-nb2listwdist(pow.nb, crds, type="idw", style="raw",
alpha=1, dmax=NULL, longlat=TRUE, zero.policy=NULL)Test I Morana testuje istnienie autokorelacji przestrzennej. Autokorelacja dodatnia oznacza, że obserwacje podobne (regiony, w których wartości badanej cechy są zbliżone) stykają się częściej niż wynikałoby z rozkładu losowego (rozrzucenia wartości cechy pomiędzy ustalonymi lokalizacjami).
Wartość statystyki równa 0,55 oznacza pośrednią autokorelację przestrzenną, jej wartość jest statystycznie istotna (p-value bliskie zera), co oznacza, że należy odrzucić hipotezę zerową o braku autokorelacji przestrzennej. Powiaty sąsiadujące ze sobą mają podobne do siebie liczby urodzeń na 1000 mieszkańców (styk podobnych wartości częściej niż losowo).
# I Morana w pętli dla lat
# przygotowanie obiektu do zapisywania danych
moran<-matrix(0, ncol=15, nrow=1)
colnames(moran)<-2010:2024
rownames(moran)<-"I Morana"
for(i in 2010:2024){
result01<-moran.test(data$urodzenia[data$Rok==i], cont.listw, na.action=na.pass)
moran[1, i-2009]<-result01$estimate[1]
}
# wykres
plot(moran[1,], type="l", axes=FALSE, ylab="", xlab="", ylim=c(0.4, 0.6))
axis(1, at=1:15, labels=2010:2024)
axis(2)
points(moran[1,], bg="red", pch=21, cex=1.5)
abline(h=c(0.4, 0.45, 0.5, 0.55, 0.6), lty=3, lwd=3, col="grey80")
text(1:15, moran[1,]+0.018, labels=round(moran[1,],2))
title(main="Statystyka I Morana na przestrzeni lat
Urodzenia na 1000 mieszkańców 2010-2024 w Polsce")Wykres 2. Statystyka I Morana dla liczby urodzeń na
przestrzeni lat
#średnie urodzenia w poszczególnych latach
aggregate(data$urodzenia, by=list(data$Rok), mean, na.rm=TRUE)
# agregacja danych po latach i odległości
subs1<-data[data$dist==0,] # stolica województwa
subs2<-data[data$dist>=2 & data$dist<25, ] # < 25 km
subs3<-data[data$dist>=25 & data$dist<50, ] # 25<x<50 km
subs4<-data[data$dist>=50 & data$dist<100, ] # 50<x<100 km
subs5<-data[data$dist>=100, ] # > 100 km
msubs1<-aggregate(subs1$urodzenia, by=list(subs1$Rok), mean)
msubs2<-aggregate(subs2$urodzenia, by=list(subs2$Rok), mean)
msubs3<-aggregate(subs3$urodzenia, by=list(subs3$Rok), mean)
msubs4<-aggregate(subs4$urodzenia, by=list(subs4$Rok), mean, na.rm=TRUE)
msubs5<-aggregate(subs5$urodzenia, by=list(subs5$Rok), mean)
subs<-cbind(msubs1, msubs2$x, msubs3$x, msubs4$x, msubs5$x)
minsubs<-min(subs[,2:5], na.rm=TRUE)
maxsubs<-max(subs[,2:5], na.rm=TRUE)
#wykres ggplot
dane_wykres <- data.frame(
Rok = rep(2002:2024, 5),
Wartosc = c(msubs1[1:23,2], msubs2[1:23,2], msubs3[1:23,2], msubs4[1:23,2], msubs5[1:23,2]),
Grupa = rep(c("Stolice województw", "<25 km", "25-49 km", "50-99 km", ">100 km"), each = 23)
)
ggplot(dane_wykres, aes(x = Rok, y = Wartosc, color = Grupa, linetype = Grupa)) +
geom_line(linewidth = 1.5, aes(linetype = Grupa), show.legend = TRUE) +
geom_hline(yintercept = 5:12, linetype = "dotted", color = "grey70") +
geom_vline(xintercept = 2002:2024, linetype = "dotted", color = "grey70") +
scale_color_manual(values = c("Stolice województw" = "#2E86AB",
"<25 km" = "#A23B72",
"25-49 km" = "#F18F01",
"50-99 km" = "#C73E1D",
">100 km" = "#56B949")) +
scale_linetype_manual(values = c("Stolice województw" = 1,
"<25 km" = 5,
"25-49 km" = 5,
"50-99 km" = 2,
">100 km" = 1)) +
labs(title = "Średnia liczba urodzeń w powiatach\nW podziale na grupy względem odległości do stolicy województwa",
x = "", y = "") +
theme_minimal() +
theme(legend.position = "bottom",
legend.title = element_blank(),
plot.title = element_text(hjust = 0.5, size = 14, face="bold"),
panel.grid.minor = element_blank(),
legend.text = element_text(size = 12)) +
guides(linetype = guide_legend(override.aes = list(linewidth = 2))) Wykres 3. Średnia liczba urodzeń na 1000 mieszkańców w
powiatach w podziale na grupy względem odległości do stolicy
województwa
Na wykresie widać stopniowy spadek liczby urodzeń na 1000 mieszkańców po 2017 roku. Co więcej, na początku lat dwutysięcznych w dużych miastach średnio rodziło się najmniej dzieci w porównaniu z innymi grupami. Natomiast po roku 2014, w stolicach województw średnio rodziło się więcej dzieci niż w innych grupach miast. Podobne odwrócenie prawidłowości miało miejsce w najbardziej oddalonych miastach, gdzie kiedyś dzietność była największa, a w ostatnich latach była najmniejsza.
# rozkład przestrzenny – mapa dzietności
pov$variable<-sub$UR
ggplot() + geom_sf(data=pov, aes(fill = variable), color = NA) +
scale_fill_viridis_c(name = "Urodzenia") +
ggtitle("Urodzenia na 1000 mieszkańców na poziomie powiatu w 2024 r.") +
geom_sf(data=voi, color="black", fill=NA) +
theme_void() Wykres 4. Urodzenia na 1000 mieszkańców na poziomie powiatu w
2024 r.
# Wykres punktowy Morana
x = sub$UR # wybór zmiennej
zx<-as.data.frame(scale(x)) # standaryzacja
wzx<-lag.listw(cont.listw, zx$V1) # opóźnienie przestrzenne x
# – wersja automatyczna
moran.plot(zx$V1, cont.listw, pch=19, labels=as.character(sub$Nazwa))Wykres 5. Wykres punktowy Morana dla liczby urodzeń,
2024
Na wykresie oś X to standaryzowane wartości urodzeń, a oś Y to opóźnienie przestrzenne tej zmiennej.
Ćwiartka I (+,+)=HH (high-high) to wysokie wartości otoczone wysokimi
(obszary autokorelacji przestrzennej dodatniej).
Ćwiartka II (-,+)=LH (low-high) to niskie otoczone wysokimi (obszar
biedy, zapaść).
Ćwiartka III (-,-)=LL (low-low), to niskie wartości otoczone niskimi
(obszary autokorelacji przestrzennej dodatniej).
Ćwiartka IV (+,-)=HL (high-low) to wysokie otoczone niskimi (wyspa
bogactwa).
Na wykresie poniżej zobrazowano kolorami przynależność do ćwiartki (uwaga, inna numeracja ćwiartek).
# Mapowanie ćwiartek wykresu Morana
# wykorzystujemy x, wx i wzx jak wcześniej
sub$quart<-0
sub$quart[zx>=0 & wzx>=0]<-1
sub$quart[zx>=0 & wzx<0]<-2
sub$quart[zx<0 & wzx<0]<-3
sub$quart[zx<0 & wzx>=0]<-4
pov$quart<-sub$quart
# mapa ggplot()
ggplot() + geom_sf(data=pov, aes(fill=quart)) + scale_fill_viridis_c(name="Ćwiartki:
1 - high-high
2 - high-low
3 - low-low
4 - low-high") + ggtitle("Mapowanie ćwiartek wykresu Morana") + theme_void() +
theme(legend.title = element_text(size = 13))Wykres 6. Mapowanie ćwiartek wykresu Morana
# przygotowanie zmiennej - liczba urodzeń na 1000 mieszkańców w 2024 roku
UR24 = data$urodzenia[data$Rok==2024]
summary(UR24) # wartości
var.factor<-factor(cut(UR24, breaks=c(0, 5.5, 7.1, 15), labels=c("niska", "średnia", "wysoka")))
head(var.factor)
# parametry grafiki
brks1<-c(0, 5.5, 7.1, 15) # progi
cols<-c("green", "blue", "red") # kolor
# wykres punktowy wartości
jc<-data.frame(X1=1:380, X2=UR24, X3=var.factor, X4=cut(UR24, breaks=c(0, 5.5, 7.1, 15),
labels=c("niska", "średnia", "wysoka")))
ggplot(jc, aes(x=X1, y=X2, color=X4)) + geom_point() + theme_classic() +
labs(title="Liczba urodzeń w 2024", x="Numer powiatu", y="Liczba urodzeń na 1000")
# rozkład przestrzenny w 3 kolorach
pov$X3<-jc$X3
ggplot() + geom_sf(data=pov, aes(fill=X3)) + labs(title="Liczba urodzeń w 2024",
x="Długość geograficzna", y="Szerokość geograficzna") + theme_classic()
ggsave("liczba_urodzen_kolory.png", width = 8, height = 7, dpi = 300)
# join-count test – w grupach kolorów
joincount.test(var.factor, cont.listw)Wykres 7. Rozkład przestrzenny liczby urodzeń w 2024 w trzech
kolorach
Ideą testu join-count jest porównanie częstości obserwowanej graniczenia z powiatami o tym samym kolorze z wartościami oczekiwanymi. Hipotezą alternatywną jest to, że powiat częściej graniczy z powiatami o tym samym kolorze, niż by to miało miejsce przy losowym przypisaniu kolorów.
We wszystkich trzech grupach podobne kolory częściej niż przypadkowo występują obok siebie, a więc skupiają się w grupach kolorystycznych. Potwierdza to istnienie autokorelacji przestrzennej i odpowiednie jest wykorzystanie modeli zależności przestrzennych.
Najpierw estymacja MNK jako model bazowy oraz dla sprawdzenia autokorelacji przestrzennej w resztach.
# równanie modelu
eq = UR ~ BEZR + WYN + MET + URB + ZLB + EMI + WYCH + ZIE + UZ + AMB + ODL
model.lm<-lm(eq, data=sub)
summary(model.lm)
OLS_1<-lm(eq, data=sub)
#VIF dla modelu
vif(model.lm) # VIF poprawny (<10)
resettest(model.lm, power=2, type="regressor")
#odrzucona H0 o o poprawności formy funkcyjnej
bptest(model.lm)
#odrzucone H0 o homoskedastycznosci reszt
shapiro.test(model.lm$residuals)
#odrzucenie H0 o normalności reszt
# czy reszty są losowe przestrzennie?
lm.morantest(model.lm, cont.listw)
# odrzucenie H0 o tym, że brak autokorelacji przestrzennej Odrzucona H0 o poprawności formy funkcyjnej,
odrzucona H0 o homoskedastyczności reszt, odrzucona H0 o normalności
reszt.
Odrzucona H0 o tym, że brak występowania autokorelacji przestrzennej.
# przestrzenny rozkład reszt z modelu liniowego MNK
pov$res<-model.lm$residuals
pov$res.dummy<-as.factor(ifelse(model.lm$residuals<0, 0, 1))
# wykres reszt
ggplot(data = pov) +
geom_sf(aes(fill = res), color = "white", size = 0.2) +
scale_fill_gradient2(low = "blue", mid = "white", high = "red",
midpoint = 0, name = "Reszty MNK") +
theme_void() +
labs(title = "Przestrzenny rozkład reszt modelu liniowego") +
theme(plot.title = element_text(hjust = 0.5))Wykres 8. Przestrzenny rozkład reszt modelu
liniowego
Reszty są sklastrowane, nie są losowe przestrzennie. W join-count teście dla reszt p-value małe dla obu grup, a więc grupy kolorów częściej skupiają się obok siebie, niż miałoby to miejsce losowo. Potwierdza się to, że uzasadnione jest użycie modeli przestrzennych.
# test join.count dla reszt (dodatnie vs. ujemne)
reszty<-factor(cut(pov$res, breaks=c(-100, 0, 100), labels=c("ujemne", "dodatnie")))
joincount.test(reszty, cont.listw)
#dodatnie kolo dodatnich, ujemne kolo ujemnych (p-value male w obu przypadkach)Rys. 2. Klasyfikacja modeli przestrzennych (Elhorst,
2010)
Manski model (GNS) zawiera opóźnienie przestrzenne Y (rho),
opóźnienie przestrzenne X (theta) oraz opóźnienie przestrzenne błędu
(lambda).
Kolejne modele zawierają po dwa komponenty opóźnienia:
SAC - rho, lambda;
SDM - rho, theta;
SDEM - lambda, theta.
Następnie można wyróżnić modele o tylko jednym komponencie opóźnionym
przestrzennie:
SAR - rho;
SLX - theta;
SEM - lambda.
Model nieuwzględniający żadnych opóźnień to MNK.
# Manski model
eq = UR ~ BEZR + WYN + MET + URB + ZLB + EMI + WYCH + ZIE + UZ +AMB + ODL
GNS_1<-sacsarlm(eq, data=sub, listw=cont.listw, type="sacmixed", method="eigen")
summary(GNS_1)
# SAC model
SAC_1<-sacsarlm(eq, data=sub, listw=cont.listw)
summary(SAC_1)
# SDEM model
SDEM_1<-errorsarlm(eq, data=sub, listw=cont.listw, etype="emixed")
summary(SDEM_1)
# SEM model
SEM_1<-errorsarlm(eq, data=sub, listw=cont.listw)
summary(SEM_1)
# SDM model
SDM_1<-lagsarlm(eq, data=sub, listw=cont.listw, type="mixed")
summary(SDM_1)
# SAR model
SAR_1<-lagsarlm(eq, data=sub, listw=cont.listw)
summary(SAR_1)
# SLX model
SLX_1<-lmSLX(eq, data=sub, listw=cont.listw)
summary(SLX_1)
# podsumowanie 8 modeli
screenreg(list(GNS_1, SAC_1, SDEM_1, SEM_1, SDM_1, SAR_1, SLX_1, OLS_1),
custom.model.names=c("GNS_1", "SAC_1", "SDEM_1", "SEM_1", "SDM_1", "SAR_1", "SLX_1", "OLS_1"))Rys. 3. Porównanie oszacowań modeli przestrzennych
W modelu GNS rho ujemne, co oznacza błąd specyfikacji modelu. Istotne statystycznie (na poziomie 10%) są zmienne BEZR (-), MET (+), URB (-), WYCH (+), ZIE (-), ODL (-). Również istotne jest opóźnienie przestrzenne URB (-) i ODL (+). Lambda jest istotna, dodatnia (0,70). AIC równe -588,74.
Model SAC uwzględnia opóźnienia Y i błędu losowego. Lambda jest ujemna, co jest niepożądane, ale jest nieistotna. Rho jest istotne i dodatnie (0,69), co sugeruje autokorelację przestrzenną dzietności. Ten model ma mniej zmiennych istotnych: BEZR (-), URB (-), WYCH (+). AIC wzrosło nieznacznie, co oznacza nieco gorsze dopasowanie modelu.
Kolejny model to SDEM - z uwzględnieniem opóźnienia przestrzennego X i błędu losowego. Lambda jest istotna, wynosi 0,66. Statystycznie istotne zmienne są takie jak w modelu GNS: BEZR (-), MET (+), URB (-), WYCH (+), ZIE (-), ODL (-). Opóźnienia URB (-) i ODL (+) także wykazują statystyczną istotność, a dodatkowo jeszcze BEZR (-). AIC modelu jest niższe niż w modelu GNS, więcej zmiennych jest istotnych, zatem mamy lepsze dopasowanie modelu.
W modelu SEM AIC jest wyraźnie niższe. Nieuwzględnienie opóźnienia przestrzennego Y lub X wydaje się błędem.
Model SAR wykazuje niską wartość AIC, tylko nieznacznie wyższą od GNS. Istotne jest rho (0,64). Zmienne istotne bardzo podobne jak w modelu SDEM; różnica jest w ODL, które tutaj nie wykazuje statystycznej istotności. W tym modelu brak podstaw do odrzucenia H0 o braku autokorelacji reszt (p-value 0.40661), co jest pożądane.
Widać, że istotne jest uwzględnienie opóźnienia zmiennych objaśniających. Co najmniej jedna z nich jest zawsze w tych modelach istotna, oraz mają one niższe AIC. W modelu należy uwzględnić rho ALBO lambdę. Dodanie ich obu psuje specyfikację. Gdy tylko jedno z nich jest w modelu, to dają podobne oszacowania w różnych modelach.
Za najlepszy model wybrałbym SDEM (Spatial Durbin Error Model), który uwzględnia opóźnienie przestrzenne X i błędu losowego. Ma on najwięcej istotnych zmiennych i najniższe AIC.
# rozkład efektów
# vector of traces of powers of a spatial weights matrix
# converting censored listw to CsparseMatrix form
W.c<-as(as_dgRMatrix_listw(cont.listw), "CsparseMatrix")
# the default values for the number of powers is 30
trMat<-trW(W.c, type="mult")
#tr - slad macierzy, przeksztalcenie macierzy wag
SDEM_1_imp<-impacts(SDEM_1, tr=trMat, R=8000)
summary(SDEM_1_imp, zstats=TRUE, short=TRUE)W modelu SDEM można bezpośrednio interpretować oszacowania zmiennych. Oszacowanie przy x to efekty bezpośrednie, a przy opóźnionej zmiennej są efekty pośrednie (spillover) - theta. Suma efektu bezpośredniego i pośredniego to efekt całkowity.
Tabela 2. Efekty bezpośrednie, pośrednie i całkowite w modelu
SDEM
H1: Wyższa stopa bezrobocia jest związana z niższą dzietnością – zweryfikowana pozytywnie. Bezrobocie zwiększa niepewność ekonomiczną, co nie sprzyja decyzji o posiadaniu dzieci; brak stabilnego dochodu hamuje dzietność.
H2: Im wyższa mediana wynagrodzeń, tym wyższa dzietność – zmienna ta okazała się nieistotna. W tym badaniu, dzietność nie zależała od mediany wynagrodzeń w powiecie. Gdyby zejść na niższy poziom agregacji (gminy, gospodarstwa domowe), to mogłaby okazać się istotna.
H3: Wzrost mediany ceny mieszkań obniża dzietność – zweryfikowana negatywnie. Wzrostowi cen mieszkań towarzyszy wzrost dzietności. Może to być dlatego, że są to ceny transakcyjne. Jak ktoś sprzedał mieszkanie, to miał więcej środków na kupno innego, czy też większego, oczekując narodzin dziecka w bliskiej przyszłości.
H4: Wyższy odsetek urbanizacji zmniejsza dzietność – zweryfikowana pozytywnie. Urbanizacja zwiększa koszt alternatywny czasu, opieki nad dzieckiem i zmienia preferencje (priorytetem kariera nad rodziną), co obniża dzietność w miastach.
H5: Wyższe wydatki na świadczenia wychowawcze zwiększają dzietność – zweryfikowana pozytywnie. Zachęty finansowe pomagają odciążyć rodziców w utrzymaniu dziecka.
H6: Wyższa dostępność żłobków zwiększa dzietność – nie można było zweryfikować, zmienna nieistotna. Brak efektu może wynikać, na przykład, ze zbyt niskiej dostępności (niewystarczający wzrost), albo z za wysokiej dostępności (już jest dobrze, więc wzrost nic nie daje).
H7: Wyższa odległość od stolicy województwa obniża dzietność – częściowo zweryfikowana. Jeśli chodzi o efekt bezpośredni, to faktycznie obniża on liczbę urodzeń. Natomiast efekt pośredni zwiększa liczbę urodzeń. Można to uzasadnić tym, że oddalenie od stolicy województwa jest dla mnie czymś niekorzystnym (dostęp do usług opieki nad dzieckiem, placówek zdrowia, pracy, kultury), ale jeśli moi sąsiedzi też są wysoko oddaleni, to tworzymy własne miejsca, usługi i nawzajem się wspieramy. Tworzy się mniejszy ośrodek pełniący te funkcje, co miasto wojewódzkie. W związku z tym, efekt bezpośredni i pośredni nawzajem się znoszą i dają efekt całkowity nieistotny statystycznie.
Bartnicki, S., & Alimowski, M. (2022). W poszukiwaniu demograficznych efektów rządowego programu „rodzina 500 plus”. Studia Socjologiczne, 1(244), 193-219.
Cohen, A., Dehejia, R., & Romanov, D. (2013). Financial incentives and fertility. Review of Economics and Statistics, 95(1), 1-20.
Kristensen, A. P., & Lappegård, T. (2022). Unemployment and fertility. Demographic Research, 46, 1037-1064.
Kurowska, A. (2012). Wpływ wybranych instrumentów polityki rodzinnej i polityki zatrudnienia na dzietność oraz aktywność zawodową kobiet. Polityka Społeczna, 464(11-12), 14-19.
Szukalski, P. (2019). Wzrost dzietności w ostatnich latach: dlaczego najbardziej z niego korzystają duże miasta?. Demografia i Gerontologia Społeczna – Biuletyn Informacyjny 2019, Nr 5.
Ouedraogo, A., Tosun, M. S., & Yang, J. (2018). Fertility and population policy. Public Sector Economics, 42(1), 21-43.