Projekt Końcowy

Analiza zbioru danyh swiss
Author

Dawid Tryka

Objaśnienie

Zbiór danych swiss

Zawiera informacje o demografii i gospodarce w 47 dystryktach Szwajcarii w 1888 roku. Dane dotyczą analizy wskaźników płodności w powiązaniu z innymi czynnikami społeczno-ekonomicznymi

Pokaż kod
head(swiss)
             Fertility Agriculture Examination Education Catholic
Courtelary        80.2        17.0          15        12     9.96
Delemont          83.1        45.1           6         9    84.84
Franches-Mnt      92.5        39.7           5         5    93.40
Moutier           85.8        36.5          12         7    33.77
Neuveville        76.9        43.5          17        15     5.16
Porrentruy        76.1        35.3           9         7    90.57
             Infant.Mortality
Courtelary               22.2
Delemont                 22.2
Franches-Mnt             20.2
Moutier                  20.3
Neuveville               20.6
Porrentruy               26.6

Wyjaśnienie danych

Płodność - Współczynnik dzietności w danym kantonie w ciągu roku na 1000 kobiet.
Rolnictwo - Procent mężczyzn zatrudnionych w rolnictwie.
Egzaminy - Procent rekrutów wojskowych, którzy zdali egzamin wstępny.
Wykształcenie - Procent mężczyzn posiadających wykształcenie wykraczające poza szkołę podstawową.
Katolicy - Procent ludności wyznania katolickiego w danym dystrykcie.
Śmierci - Liczba zgonów niemowląt na 1000 urodzeń.

Pokaż kod
dane = swiss
colnames(dane) = c('Płodność', 'Rolnictwo', 'Egzaminy',
                   'Wykształcenie', 'Katolicy', 'Śmierci')
tail(dane)
             Płodność Rolnictwo Egzaminy Wykształcenie Katolicy Śmierci
Neuchatel        64.4      17.6       35            32    16.92    23.0
Val de Ruz       77.6      37.6       15             7     4.97    20.0
ValdeTravers     67.6      18.7       25             7     8.65    19.5
V. De Geneve     35.0       1.2       37            53    42.34    18.0
Rive Droite      44.7      46.6       16            29    50.43    18.2
Rive Gauche      42.8      27.7       22            29    58.33    19.3

Podstawowe dane

Pokaż kod
df = data.frame(
  Średnia = c(mean(dane$Płodność),mean(dane$Rolnictwo), mean(dane$Egzaminy), mean(dane$Wykształcenie), mean(dane$Katolicy),mean(dane$Śmierci)),
  
  Q1 = c(quantile(dane$Płodność, 0.25), quantile(dane$Rolnictwo, 0.25), quantile(dane$Egzaminy, 0.25), quantile(dane$Wykształcenie, 0.25), quantile(dane$Katolicy, 0.25), quantile(dane$Śmierci, 0.25)),
  
  Mediana = c(median(dane$Płodność),median(dane$Rolnictwo), median(dane$Egzaminy), median(dane$Wykształcenie), median(dane$Katolicy),median(dane$Śmierci)),
  
  Q3 = c(quantile(dane$Płodność, 0.75), quantile(dane$Rolnictwo, 0.75), quantile(dane$Egzaminy, 0.75), quantile(dane$Wykształcenie, 0.75), quantile(dane$Katolicy, 0.75), quantile(dane$Śmierci, 0.75)),
  
  Minimum = c(min(dane$Płodność),min(dane$Rolnictwo), min(dane$Egzaminy), min(dane$Wykształcenie), min(dane$Katolicy),min(dane$Śmierci)),
  
  Maksimum = c(max(dane$Płodność),max(dane$Rolnictwo), max(dane$Egzaminy), max(dane$Wykształcenie), max(dane$Katolicy),max(dane$Śmierci)),
  
  Odchylenie = c(sd(dane$Płodność),sd(dane$Rolnictwo), sd(dane$Egzaminy), sd(dane$Wykształcenie), sd(dane$Katolicy),sd(dane$Śmierci)),
  
  Skośność = c(skewness(dane$Płodność),skewness(dane$Rolnictwo), skewness(dane$Egzaminy), skewness(dane$Wykształcenie), skewness(dane$Katolicy),skewness(dane$Śmierci))
)
rownames(df) = c('Płodność', 'Rolnictwo', 'Egzaminy',
                   'Wykształcenie', 'Katolicy', 'Śmierci')

df$Rozstęp = df$Maksimum - df$Minimum

df$Średnia = round(df$Średnia, 2)
df$Odchylenie = round(df$Odchylenie, 2)
df$Skośność = round(df$Skośność, 2)
df$Q1 = round(df$Q1, 2)
df$Q3 = round(df$Q3, 2)

Miary przeciętne

Pokaż kod
df[, c("Średnia", "Q1", "Mediana", "Q3")]
              Średnia    Q1 Mediana    Q3
Płodność        70.14 64.70   70.40 78.45
Rolnictwo       50.66 35.90   54.10 67.65
Egzaminy        16.49 12.00   16.00 22.00
Wykształcenie   10.98  6.00    8.00 12.00
Katolicy        41.14  5.20   15.14 93.12
Śmierci         19.94 18.15   20.00 21.70

Miary zróżnicowania

Pokaż kod
df[, c("Odchylenie", "Maksimum", "Minimum", "Rozstęp")]
              Odchylenie Maksimum Minimum Rozstęp
Płodność           12.49     92.5   35.00   57.50
Rolnictwo          22.71     89.7    1.20   88.50
Egzaminy            7.98     37.0    3.00   34.00
Wykształcenie       9.62     53.0    1.00   52.00
Katolicy           41.70    100.0    2.15   97.85
Śmierci             2.91     26.6   10.80   15.80

Skośność

Pokaż kod
df[, 'Skośność', drop=FALSE]
              Skośność
Płodność         -0.46
Rolnictwo        -0.32
Egzaminy          0.45
Wykształcenie     2.27
Katolicy          0.48
Śmierci          -0.33

Rozpiętość danych

Pokaż kod
boxplot(dane,
        col='#05998c',
        main='Rozpiętość danych')

Zauważamy, że zmienna Katolicy przyjmuje wartości skrajne, co przypomina nam, że w Szwajcarii po za kościołem Rzymsko-Katolickim duży udział ma też kościół Protestancki. Z drugiej strony widzimy małą rozpiętość dla śmierci noworodków, co może sugerować dobrą dostępność do służby medycznej na terernie całego kraju.

Histogramy i ciekawostki

Płodność

Pokaż kod
ggplot(swiss, aes(x = Fertility)) +
  geom_histogram(binwidth = 5, fill = "#05998c", color = "black") +
  labs(title = "Histogram - Płodność", x = "Płodność", y = "Liczba kantonów") +
  theme_grey()+
  scale_x_continuous(breaks = seq(30, 90, by = 10)) +   
  scale_y_continuous(breaks = seq(0, 10, by = 2)) +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Szybko dostrzegamy, że jeden z kantonów wyraża znacznie niższą płodność niż reszta. Co ciekawe jest to Genewa, czyli jeden z najbogatszych regionów w Szwajcarii - zarówno w roku 1888 jak i dzisiaj, Już w II połowie XIX wieku powstawały tam siedziby organizacji międzynarodowych np. Międzynarodowy Komitet Czerwonego Krzyża, co powodowało napływ polityków i specjalistów. Taki charakter demograficzny, zdominowany przez osoby z wykształceniem wyższym, często prowadzi do opóźnienia lub rezygnacji z decyzji o założeniu rodziny.

Pokaż kod
kanton_min_plodnosc = dane %>%
  arrange(Płodność) %>%
  slice(1) 

kanton_min_plodnosc
             Płodność Rolnictwo Egzaminy Wykształcenie Katolicy Śmierci
V. De Geneve       35       1.2       37            53    42.34      18

Rolnictwo

Pokaż kod
ggplot(dane, aes(x = Rolnictwo)) +
  geom_histogram(binwidth = 7, fill = "#05998c", color = "black") +
  labs(title = "Histogram - Rolnictwo", x = "Wartość", y = "Liczba kantonów") +
  theme_grey()+
  scale_x_continuous(breaks = seq(0, 90, by = 10)) +   
  scale_y_continuous(breaks = seq(0, 8, by = 1)) +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Po raz kolejny Genewa ukazuje się nam jako jeden z najbardziej rozwinięych regionów, gdzie tylko 1.2% osób było zatrudnione w rolnictwie. Na drugim końcu histogramu widzimy kanton Herens (obecnie wcielony w kanton Valais), czyli jeden z najmniej zaludnionych terenów w całej Szwajcarii

Pokaż kod
kanton_min_rolnictwo = dane %>%
  arrange(Rolnictwo) %>%
  slice(1,47) %>%
  select(Rolnictwo)

kanton_min_rolnictwo
             Rolnictwo
V. De Geneve       1.2
Herens            89.7

Egzaminy sprawnościowe

Pokaż kod
ggplot(dane, aes(x = Egzaminy)) +
  geom_histogram(binwidth = 3, fill = "#05998c", color = "black") +
  labs(title = "Histogram - Egzaminy", x = "Wartość", y = "Liczba kantonów") +
  theme_grey()+
  scale_x_continuous(breaks = seq(0, 40, by = 5)) +   
  scale_y_continuous(breaks = seq(0, 12, by = 3)) +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Wykształcenie

Pokaż kod
ggplot(dane, aes(x = Wykształcenie)) +
  geom_histogram(binwidth = 4, fill = "#05998c", color = "black") +
  labs(title = "Histogram - Wykształcenie", x = "Wartość", y = "Liczba kantonów") +
  theme_grey() +
  scale_x_continuous(breaks = seq(0, 50, by = 5)) +   
  scale_y_continuous(breaks = seq(0, 12, by = 3)) +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Pokaż kod
kanton_wyksztalcenie = dane %>%
  arrange(Wykształcenie) %>%
  slice(47) %>%
  select(Wykształcenie)

kanton_wyksztalcenie
             Wykształcenie
V. De Geneve            53

Powyższy histogram ponownie pokazuje jak bardzo Genewa była rozwinięta na tle innych szwajcarskich kantonów.

Katolicy

Pokaż kod
ggplot(dane, aes(x = Katolicy)) +
  geom_histogram(binwidth = 7, fill = "#05998c", color = "black") +
  labs(title = "Histogram - Katolicy", x = "Wartość", y = "Liczba kantonów") +
  theme_grey() +
  scale_x_continuous(breaks = seq(0, 100, by = 10)) +   
  scale_y_continuous(breaks = seq(0, 12, by = 3)) +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Na histogramie widzimy jak bardzo zróżnicowanym krajem pod względem Religii jest Szwajcaria. Mamy regiony, które praktycznie w 100% były Katolickie - z reguły te, położone blisko granicy Włoskiej, (ta zależność istnieje do dzisiaj), ale z drugiej strony mamy regiony, gdzie prawie w ogóle nie ma katolików - dominował tam protestantyzm - głównie Szwajcaria południowo-zachodnia.

Śmiertelność niemowląt

Pokaż kod
ggplot(dane, aes(x = Śmierci)) +
  geom_histogram(binwidth = 1, fill = "#05998c", color = "black") +
  labs(title = "Histogram - Śmierci", x = "Wartość", y = "Liczba kantonów") +
  theme_grey() +
  scale_x_continuous(breaks = seq(0, 30, by = 5)) +   
  scale_y_continuous(breaks = seq(0, 10, by = 2)) +
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'))

Kantony z największą i najmniejszą śmiertelnością wśrod niemowląt:

Pokaż kod
kanton_śmierci = dane %>%
  arrange(Śmierci) %>%
  slice(1,47) %>%
  select(Śmierci)

kanton_śmierci
           Śmierci
La Vallee     10.8
Porrentruy    26.6

Analiza zależności

Macierz korelacji

Pokaż kod
macierz_kor = cor(dane)

ggcorrplot(macierz_kor,
           method = "square",    
           type = "lower",       
           lab = TRUE,           
           lab_size = 3,         
           colors = c("#05998c", "white", "#2E2E2E"), 
           title = 'Macierz korelacji dla danych "swiss"',
           ggtheme = ggplot2::theme_grey()) +
  ggplot2::scale_fill_gradient2(name = "Korelacja",  
                                low = "#05998c", 
                                mid = "white", 
                                high = "#2E2E2E", 
                                midpoint = 0,
                                breaks = c(-1, 1),  
                                limits = c(-1, 1)) +  
  ggplot2::theme(legend.position = "right",           
                 legend.title.align = 0.5,
                 plot.title = element_text(hjust = 0.5, size = 14))  

Na macierzy korelacji widać, że kilka zależności między zmiennymi jest szczególnie interesujących i zasługuje na dalsze rozwinięcie. Przedstawię je poniżej. Część z tych zależności jest silna, a część może prowadzić do ciekawych wniosków dotyczących badanych zmiennych.

Korelacja z wykształceniem

Widzimy, że wykształcenie silnie koreluje ze zdawalnością egzaminów (0.7), co nie jest zaskoczeniem. Na uwagę zasługuje również fakt, że im wyższe wykształcenie, tym mniej narodzin w kantonie. Inną podstawową zależnością, jest oczywiście ujemna korelacja między wykształceniem, a odsetkiem mężczyzn pracujących w rolnictwie.

Pokaż kod
ggplot(swiss, aes(x = Education, y = Fertility, color = Agriculture)) +
  geom_point(size = 3) +
  scale_color_gradient(low = "#81cdc6", high = "black") +
  labs(
    title = "Zależność między wykształceniem a współczynnikiem urodzeń",
    x = "Wykształcenie (%)",
    y = "Współczynnik urodzeń",
    color = "Rolnictwo (%)"
  ) +
  theme_grey() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    legend.position = "right",
    legend.title = element_text(hjust = 0.5)
  )

Korelacja z katolictwem

Nie dziwi dodatnia korelacja między odsetkiem katolików, a ilością urodzeń. Co ciekawe obserwuję się małą korelacje z wykształceniem, ale znacznie większą ze zdawalnością egzaminów.

Pokaż kod
model = lm(Egzaminy ~ Katolicy, data = dane)
r_squared = summary(model)$r.squared


ggplot(dane, aes(x = Katolicy, y = Egzaminy)) +
  geom_point(color = "#05998c", size = 2.5) +  
  geom_smooth(method = "lm", se = FALSE, color = "orange") + #linia
  labs(title = "Wykres rozrzutu: Egzaminy a Katolicy", 
       x = "% katolików", 
       y = "% zdawalności") +
  annotate("text", x = max(dane$Katolicy), y = max(dane$Egzaminy), 
           label = paste("R² = ", round(r_squared, 2)), 
           hjust = 1, vjust = 1, size = 5, color = "black") +  
  theme_grey() +  
  theme(axis.text = element_text(size = 12), 
        axis.title = element_text(size = 12),
        plot.title = element_text(hjust = 0.5, size = 14))

Podsumowanie analizy

W przeprowadzonej analizie statystycznej skupiłem się na kilku kluczowych aspektach, które miały na celu głębsze zrozumienie danych. Po pierwsze, zwróciłem uwagę na aspekt historyczny, który pozwolił mi uchwycić zmiany w czasie oraz zrozumieć tło, na którym opierają się wyniki. Kolejnym istotnym elementem była dbałość o spójność kolorów w dokumencie. Na końcu, skupiłem się na najciekawszych zależnościach między zmiennymi, takich jak korelacje czy wzorce w danych, które pozwoliły mi wyciągnąć wartościowe wnioski. Dzięki temu mogłem spojrzeć na dane z różnych perspektyw, co umożliwiło dokładniejsze zrozumienie wyników.