#Biblioteki
library(googlesheets4)
## Warning: pakiet 'googlesheets4' został zbudowany w wersji R 4.3.3
library(dplyr)
## Warning: pakiet 'dplyr' został zbudowany w wersji R 4.3.2
## 
## Dołączanie pakietu: 'dplyr'
## Następujące obiekty zostały zakryte z 'package:stats':
## 
##     filter, lag
## Następujące obiekty zostały zakryte z 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(knitr)
## Warning: pakiet 'knitr' został zbudowany w wersji R 4.3.3
library(gridExtra)
## 
## Dołączanie pakietu: 'gridExtra'
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     combine

I. Wstęp do projektu

1. Temat Projektu

Niniejszy projekt obejmuje analizę rynku nieruchomości w Polsce oraz opracowanie metod prognozowania cen w tym sektorze. Jego celem jest dogłębne zrozumienie dynamiki oraz czynników wpływających na kształtowanie się wartości nieruchomości, a także przygotowanie prognozy możliwych scenariuszy rozwoju rynku nieruchomości w Polsce w perspektywie najbliższych lat. Prognoza ta zostanie oparta na szczegółowej analizie zmian, które miały miejsce na rynku w latach 2010–2023.

1.1. Wprowadzenie do problematyki rynku nieruchomości

Opis znaczenia rynku nieruchomości w gospodarce: Rynek nieruchomości odgrywa kluczową rolę w gospodarce, będąc istotnym elementem wspierającym rozwój społeczno-ekonomiczny. Z punktu widzenia inwestorów stanowi stabilne i atrakcyjne narzędzie lokowania kapitału, oferujące potencjał generowania długoterminowych zysków. Dla przeciętnego obywatela, zakup nieruchomości jest natomiast jedną z najważniejszych decyzji finansowych, mającą bezpośredni wpływ na stabilność bytową i bezpieczeństwo materialne.

W Polsce rynek nieruchomości w ostatnich latach cechował się znaczną dynamiką. Wzrost cen, wynikający z rosnącego popytu oraz ograniczonej podaży, był szczególnie zauważalny w największych aglomeracjach. Procesy urbanizacyjne, migracje oraz zmiany demograficzne, takie jak starzenie się społeczeństwa, w znacznym stopniu kształtują strukturę popytu. Jednocześnie zmienność cen była wyraźnie powiązana z czynnikami makroekonomicznymi, w tym inflacją, stopami procentowymi i sytuacją gospodarczą, co uwydatnia złożoność tego sektora.

Na kształtowanie się cen nieruchomości wpływają zarówno czynniki lokalne, jak i globalne. Lokalne uwarunkowania obejmują m.in. regionalne różnice cenowe wynikające z poziomu urbanizacji, dostępności infrastruktury, atrakcyjności inwestycyjnej oraz specyfiki lokalnych rynków pracy. Z kolei czynniki globalne, takie jak skutki pandemii COVID-19, wzrost inflacji czy zmiany w sytuacji makroekonomicznej, w istotny sposób wpływają na dostępność finansowania, preferencje inwestycyjne oraz zdolność kredytową gospodarstw domowych. Uwzględnienie tych różnorodnych czynników jest niezbędne do kompleksowej analizy rynku nieruchomości, co podkreśla wieloaspektowość tego sektora i jego znaczenie dla gospodarki.

1.2. Znaczenie prognozowania cen nieruchomości

Prognozowanie cen nieruchomości odgrywa kluczową rolę w podejmowaniu świadomych decyzji ekonomicznych i planowaniu finansowym. Jest to szczególnie istotne w kontekście rosnącej zmienności gospodarczej oraz złożoności rynku, na który wpływają zarówno czynniki lokalne, jak i globalne. Rzetelne prognozy stanowią nieocenione wsparcie dla różnych grup interesariuszy:

  • Inwestorzy mogą na ich podstawie efektywnie planować zyski, minimalizować ryzyko oraz podejmować trafne decyzje dotyczące zakupu, sprzedaży lub wynajmu nieruchomości, co pozwala na optymalne zarządzanie portfelem inwestycyjnym.
  • Rządy i samorządy wykorzystują prognozy cen nieruchomości przy opracowywaniu polityki mieszkaniowej, programów wspierających dostępność mieszkań oraz planowaniu urbanistycznym, co umożliwia efektywne zarządzanie przestrzenią i zasobami mieszkaniowymi.
  • Instytucje finansowe, w tym banki, opierają się na prognozach przy ocenie wartości zabezpieczeń hipotecznych, zarządzaniu ryzykiem kredytowym oraz podejmowaniu decyzji dotyczących finansowania inwestycji.

Nieruchomości są dobrem heterogenicznym, co oznacza, że ich wartość zależy od szerokiego spektrum czynników, takich jak lokalizacja, infrastruktura, demografia, warunki ekonomiczne czy sytuacja polityczna. Złożoność ta sprawia, że precyzyjne prognozowanie wymaga uwzględnienia zarówno trendów makroekonomicznych, jak i specyficznych uwarunkowań regionalnych. W niniejszym projekcie szczególny nacisk zostanie położony na analizę czynników ekonomicznych i demograficznych, które odgrywają kluczową rolę w kształtowaniu się cen nieruchomości. Prognozy te mogą przyczynić się do lepszego zarządzania ryzykiem, wsparcia procesów decyzyjnych oraz zwiększenia efektywności działań zarówno na poziomie indywidualnym, jak i instytucjonalnym.

1.3. Uzasadnienie wyboru tematu

Wybór tego tematu jest uzasadniony zarówno jego aktualnością, jak i praktycznym znaczeniem wyników badania. W obliczu obecnych wyzwań gospodarczych oraz dynamicznych zmian zachodzących na rynku nieruchomości w Polsce, tematyka prognozowania cen nieruchomości nabiera szczególnej wagi. Zmienność stóp procentowych, rosnąca inflacja oraz globalne zawirowania gospodarcze, takie jak skutki pandemii COVID-19, znacząco wpływają na zachowania inwestorów, zdolność kredytową gospodarstw domowych oraz dostępność mieszkań. Dodatkowo w Polsce obserwowane są wyraźne oznaki kryzysu mieszkaniowego, które przejawiają się w dynamicznym wzroście cen nieruchomości oraz spadku ich dostępności dla przeciętnego obywatela.

2. Opis Danych

Dane wykorzystane w analizie pochodzą z Bazy Danych Lokalnych (BDL) prowadzonej przez Główny Urząd Statystyczny (GUS). BDL dostarcza szczegółowych informacji na temat różnych aspektów społecznych, gospodarczych i demograficznych, co czyni ją wiarygodnym źródłem danych do analizy rynku nieruchomości.

Dane zostały zebrane i przechowywane w formacie arkusza kalkulacyjnego za pomocą Excela online. Wybraliśmy ten format, ponieważ:

  • Ułatwia współpracę zespołową. Excel online pozwala na jednoczesną pracę nad arkuszem, co umożliwiło członkom zespołu dodawanie danych w jednym miejscu i bieżące śledzenie postępów.

  • Przejrzystość. Arkusz kalkulacyjny umożliwia łatwe przechowywanie dużej liczby zmiennych i ich edycję, a także szybki podgląd danych.

  • Uniwersalność. Dane w Excelu mogą być łatwo eksportowane do innych formatów, np.CSV lub XLS, co umożliwia dalsze przetwarzanie w R Studio, z którego korzystamy do dalszych etapów projektu.

Na etapie początkowej obróbki danych w Excelu wykonano następujące kroki:

  1. Zebrano dane z dwóch kategorii (ekonomiczne, demograficzne) w jednym skoroszycie, aby ułatwić analizę.
  2. Sprawdzono kompletność danych (czy zebrane dane dotyczą tego samego okresu, czy dla danej zmiennej nie brakuje danych w danym roku).
  3. Zastosowano jednolite formatowanie (zastąpienie przecinków kropkami, zmiana formatu tekstowego na liczbowy), co miało na celu ułatwienie późniejszej analizy.

Działania te pozwoliły na lepsze przygotowanie danych do dalszej analizy w R Studio.

W analizie cen nieruchomości uwzględniliśmy zarówno czynniki ekonomiczne, jak i demograficzne, ponieważ ceny mieszkań są wynikiem interakcji między popytem a podażą, a te z kolei są kształtowane przez różnorodne aspekty.

Czynniki ekonomiczne: Bezpośrednio wpływają na zdolność nabywczą konsumentów, koszty budowy i finansowanie transakcji. Ich analiza pozwala ocenić, w jakim stopniu zmienne makroekonomiczne oddziałują na rynek nieruchomości. Czynniki demograficzne: Są kluczowe w zrozumieniu struktury i dynamiki popytu na nieruchomości. Migracje, wzrost liczby gospodarstw domowych, czy zmiany w powierzchni mieszkań wpływają na zachowania zakupowe oraz trendy mieszkaniowe.

Wybór obu grup zmiennych pozwala na całościowe spojrzenie na rynek nieruchomości, uwzględniając nie tylko czynniki finansowe, ale także potrzeby ludności i ich zmienność.

Zgodność teoretyczna: Relacja zmiennej z objaśnianą powinna być zgodna z teorią ekonomiczną lub innymi założeniami dziedziny. Poniżej wykazujemy, że każda z wybranych zmiennych jest teoretycznie uzasadniona i może mieć wpływ na ceny nieruchomości.

2.1. Czynniki Ekonomiczne

  • Przeciętne miesięczne wynagrodzenia brutto. Wysokość wynagrodzeń odzwierciedla poziom dobrobytu społeczeństwa. Wyższe zarobki zwiększają zdolność kredytową i możliwości inwestycyjne, co podnosi popyt na nieruchomości. W konsekwencji, rosnący popyt prowadzi do wzrostu cen. Zgodnie z teorią konsumpcji, przy wyższych dochodach konsumenci są bardziej skłonni wydawać na dobra trwałe, takie jak mieszkania.

  • Stopa bezrobocia rejestrowanego. Wyższa stopa bezrobocia zmniejsza siłę nabywczą społeczeństwa i obniża popyt na mieszkania, co może powodować spadek cen nieruchomości. Z kolei niski poziom bezrobocia jest pozytywnym sygnałem dla rynku nieruchomości.

  • Inflacja. Inflacja wpływa na ceny nieruchomości w dwojaki sposób. Z jednej strony, w warunkach wysokiej inflacji rosną koszty budowy, co podnosi ceny nowych mieszkań. Z drugiej strony, nieruchomości mogą być postrzegane jako inwestycja chroniąca kapitał przed inflacją, co zwiększa ich atrakcyjność.

  • Wydatki w Dziale 700 - Gospodarka mieszkaniowa - wydatki budżetowe na gospodarkę mieszkaniową, obejmujące np. inwestycje w budownictwo mieszkaniowe czy wsparcie dla najemców.Wzrost wydatków w tym dziale stymuluje podaż nowych mieszkań, co może stabilizować ceny nieruchomości. Jednocześnie większe inwestycje w infrastrukturę mieszkaniową mogą podnieść atrakcyjność lokalnych rynków.

  • Dochody do dyspozycji brutto na 1 mieszkańca.Wyższe dochody do dyspozycji zwiększają możliwości finansowe gospodarstw domowych, co prowadzi do wzrostu popytu na mieszkania, a tym samym wzrostu cen nieruchomości.

2.2. Czyniki Demograficzne

  • Liczba lokali mieszkalnych sprzedanych w ramach transakcji rynkowych. Wysoka liczba transakcji wskazuje na dynamiczny rynek. Jeżeli popyt na nieruchomości przewyższa podaż, ceny rosną. Zgodnie z teorią popytu i podaży, większa aktywność zakupowa przy ograniczonej podaży prowadzi do wzrostu cen.

  • Powierzchnia użytkowa. Powierzchnia użytkowa jest jednym z kluczowych czynników wpływających na cenę jednostkową nieruchomości. Większe mieszkania są zwykle droższe, ale mogą być mniej dostępne dla przeciętnego nabywcy.

  • Małżeństwa zawarte. Zawarcie małżeństwa często wiąże się z tworzeniem nowego gospodarstwa domowego i poszukiwaniem mieszkania. Wzrost liczby małżeństw zwiększa popyt na nieruchomości, co może prowadzić do wzrostu cen.

  • Mieszkania oddane do użytkowania. Oddanie większej liczby mieszkań zwiększa podaż na rynku, co może ograniczać wzrost cen lub prowadzić do ich spadku. Zgodnie z teorią podaży, wzrost liczby dostępnych mieszkań przy stałym popycie obniża ich wartość.

  • Pozwolenia na budowę. Liczba wydanych pozwoleń wskazuje na przyszłą podaż mieszkań. Jeśli rośnie liczba pozwoleń, oznacza to potencjalny spadek cen w przyszłości w wyniku zwiększenia dostępności mieszkań.

  • Zameldowania. Wzrost liczby zameldowań sugeruje rosnącą migrację do danego regionu, co może zwiększać popyt na nieruchomości i prowadzić do wzrostu ich cen.

  • Wymeldowania. Wzrost liczby wymeldowań może sygnalizować odpływ ludności, co zmniejsza popyt na mieszkania i może prowadzić do spadku cen.

  • Saldo migracji. Dodatnie saldo migracji (więcej zameldowań niż wymeldowań) oznacza wzrost liczby ludności w danym regionie, co zwiększa popyt na mieszkania. Wysoki popyt w regionach o pozytywnym saldzie migracji może prowadzić do wzrostu cen nieruchomości. Negatywne saldo działa odwrotnie.

II. Wizualizacja oraz analiza danych

1. Data Wrangling

1.1. Obliczanie liczby brakujących wartości (NA) w każdej kolumnie:

library(knitr)

polska_data_clean <- data_sheet1

na_counts <- colSums(is.na(polska_data_clean))

na_counts_df <- data.frame(Kolumna = names(na_counts), Liczba_NA = as.numeric(na_counts))

kable(na_counts_df, caption = "Liczba brakujących wartości (NA) w każdej kolumnie")
Liczba brakujących wartości (NA) w każdej kolumnie
Kolumna Liczba_NA
Rok 0
Liczba_sprzedanych 0
Powierzchnia_użytkowa 0
Średnia cena za 1m2 0
Mediana cen 0
Średnia_cena_lokali 0
Wartość_lokali 0
Wynagrodz_brutto 0
Bezrobocie 0
Małżeństwa 0
Inflacja 0
Wydatki_700 0
Mieszkania _oddane 0
Pozwolenia_budowa 0
Miesięczny_dochód 0
# Przypisanie danych do odpowiednich zmiennych
DOLNOŚLĄSKIE_DATA <- data_sheet2
KUJAWSKO_POMORSKIE_DATA <- data_sheet3
LUBELSKIE_DATA <- data_sheet4
LUBUSKIE_DATA <- data_sheet5
ŁÓDZKIE_DATA <- data_sheet6
MAŁOPOLSKIE_DATA <- data_sheet7
OPOLSKIE_DATA <- data_sheet8
MAZOWIECKIE_DATA <- data_sheet9
PODKARPACKIE_DATA <- data_sheet10
PODLASKIE_DATA <- data_sheet11
POMORSKIE_DATA <- data_sheet12
ŚWIĘTOKRZYSKIE_DATA <- data_sheet13
WIELKOPOLSKIE_DATA <- data_sheet14
WARMIŃSKO_MAZURSKIE_DATA <- data_sheet15
ZACHODNIOPOMORSKIE_DATA <- data_sheet16

# Lista danych z odpowiednimi nazwami
data_list <- list(
  DOLNOŚLĄSKIE = DOLNOŚLĄSKIE_DATA,
  KUJAWSKO_POMORSKIE = KUJAWSKO_POMORSKIE_DATA,
  LUBELSKIE = LUBELSKIE_DATA,
  LUBUSKIE = LUBUSKIE_DATA,
  ŁÓDZKIE = ŁÓDZKIE_DATA,
  MAŁOPOLSKIE = MAŁOPOLSKIE_DATA,
  OPOLSKIE = OPOLSKIE_DATA,
  MAZOWIECKIE = MAZOWIECKIE_DATA,
  PODKARPACKIE = PODKARPACKIE_DATA,
  PODLASKIE = PODLASKIE_DATA,
  POMORSKIE = POMORSKIE_DATA,
  ŚWIĘTOKRZYSKIE = ŚWIĘTOKRZYSKIE_DATA,
  WIELKOPOLSKIE = WIELKOPOLSKIE_DATA,
  WARMIŃSKO_MAZURSKIE = WARMIŃSKO_MAZURSKIE_DATA,
  ZACHODNIOPOMORSKIE = ZACHODNIOPOMORSKIE_DATA
)

# Obliczenie liczby braków dla każdej kolumny w każdym regionie
na_counts_list <- lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  na_counts <- colSums(is.na(data))
  data.frame(
    Kolumna = names(na_counts),
    Liczba_NA = as.numeric(na_counts),
    Region = region_name
  )
})

# Połączenie wyników w jedną tabelę
na_counts_df <- bind_rows(na_counts_list)

# Przekształcenie danych na szeroki format (pivot)
na_pivot <- na_counts_df %>%
  pivot_wider(names_from = Region, values_from = Liczba_NA, values_fill = 0)



# Prezentacja wyników
kable(na_pivot, caption = "Liczba brakujących wartości (NA) w każdej kolumnie dla każdego regionu")
Liczba brakujących wartości (NA) w każdej kolumnie dla każdego regionu
Kolumna DOLNOŚLĄSKIE KUJAWSKO_POMORSKIE LUBELSKIE LUBUSKIE ŁÓDZKIE MAŁOPOLSKIE OPOLSKIE MAZOWIECKIE PODKARPACKIE PODLASKIE POMORSKIE ŚWIĘTOKRZYSKIE WIELKOPOLSKIE WARMIŃSKO_MAZURSKIE ZACHODNIOPOMORSKIE
…1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Liczba_sprzedanych 1 1 1 1 0 0 1 0 0 1 1 0 0 0 0
Powierzchnia_użytkowa 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Średnia cena za 1m2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mediana cen 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Średnia_cena_lokali 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wartość_lokali 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wynagrodz_brutto 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Bezrobocie 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Małżeństwa 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Inflacja 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Wydatki_700 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Mieszkania _oddane 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0
Pozwolenia_budowa 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Miesięczny_dochód 1 1 0 1 0 0 1 1 0 1 1 0 0 0 0
Zameldowania 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0
Wymeldowania 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0

Wyniki analizy wskazują, że brakujące wartości (NA) występują w różnych kolumnach dla poszczególnych regionów. Kluczowe obserwacje to:

  1. Brakujące dane w kluczowych kolumnach:

    • Kolumny takie jak Wynagrodz_brutto, Bezrobocie, Małżeństwa, Inflacja, Wydatki_700, Mieszkania_oddane zawierają brakujące wartości w większości regionów.

    • Kolumny związane z nieruchomościami (Liczba_sprzedanych, Powierzchnia_użytkowa, Średnia cena za 1m2, Mediana cen) wykazują brakujące dane głównie w regionie LUBUSKIE.

  2. Kolumna bez nazwy:

    • Pierwsza kolumna, która prawdopodobnie zawiera dane o latach, nie ma przypisanej nazwy (…1). Może to być źródłem nieścisłości w analizie i wymaga poprawienia.
  3. Regiony bez braków:

    • Niektóre regiony, takie jak Zachodniopomorskie, Wielkopolskie, czy Warmińsko-Mazurskie, mają minimalną liczbę brakujących danych w większości kolumn.

ROZWIĄZANIE

  1. Usunięcie niepotrzbenych wierszy
# Funkcja, która usuwa ostatni wiersz, jeśli liczba wierszy wynosi 15
clean_data_list <- lapply(data_list, function(data) {
  if (nrow(data) == 15) {
    data <- data[-nrow(data), ]  # Usuń ostatni wiersz
  }
  return(data)
})

# Aktualizacja danych w liście
data_list <- clean_data_list

# Sprawdzenie wyników (opcjonalnie)
print(lapply(data_list, nrow))  # Wyświetl liczbę wierszy w każdej ramce danych
## $DOLNOŚLĄSKIE
## [1] 14
## 
## $KUJAWSKO_POMORSKIE
## [1] 14
## 
## $LUBELSKIE
## [1] 14
## 
## $LUBUSKIE
## [1] 14
## 
## $ŁÓDZKIE
## [1] 14
## 
## $MAŁOPOLSKIE
## [1] 14
## 
## $OPOLSKIE
## [1] 14
## 
## $MAZOWIECKIE
## [1] 14
## 
## $PODKARPACKIE
## [1] 14
## 
## $PODLASKIE
## [1] 14
## 
## $POMORSKIE
## [1] 14
## 
## $ŚWIĘTOKRZYSKIE
## [1] 14
## 
## $WIELKOPOLSKIE
## [1] 14
## 
## $WARMIŃSKO_MAZURSKIE
## [1] 14
## 
## $ZACHODNIOPOMORSKIE
## [1] 14
  1. Usunięcie ostatniego wiersza tam gdzie jest 15 rekordów
# Zmiana nazwy pierwszej kolumny na "Rok" w każdej ramce danych
data_list <- lapply(data_list, function(data) {
  colnames(data)[1] <- "Rok"  # Zmień nazwę pierwszej kolumny
  return(data)
})

# Sprawdzenie wyników (opcjonalne)
lapply(data_list, function(data) head(data))
## $DOLNOŚLĄSKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl>                 <dbl>                 <dbl>
## 1  2010              14390               779887.                  4248
## 2  2011              14136               766094.                  4255
## 3  2012              14859               820648                   3987
## 4  2013              17811               978110.                  4337
## 5  2014              16431               901802.                  4127
## 6  2015              18523              1012338.                  4136
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>, Zameldowania <dbl>, Wymeldowania <dbl>
## 
## $KUJAWSKO_POMORSKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               4454 <dbl [1]>             <dbl [1]>            
## 2  2011               5247 <dbl [1]>             <dbl [1]>            
## 3  2012               5629 <dbl [1]>             <dbl [1]>            
## 4  2013               6095 <dbl [1]>             <dbl [1]>            
## 5  2014               6056 <dbl [1]>             <dbl [1]>            
## 6  2015               6616 <dbl [1]>             <dbl [1]>            
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>, Zameldowania <dbl>, Wymeldowania <dbl>
## 
## $LUBELSKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               2950 <dbl [1]>             <dbl [1]>            
## 2  2011               3106 <dbl [1]>             <dbl [1]>            
## 3  2012               3239 <dbl [1]>             <dbl [1]>            
## 4  2013               3388 <dbl [1]>             <dbl [1]>            
## 5  2014               2964 <dbl [1]>             <dbl [1]>            
## 6  2015               4441 <dbl [1]>             <dbl [1]>            
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>, Zameldowania <dbl>,
## #   Wymeldowania <dbl>, Miesięczny_dochód <list>
## 
## $LUBUSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               3512 <dbl [1]>             <dbl [1]>            
## 2  2011               3749 <dbl [1]>             <dbl [1]>            
## 3  2012               4094 <dbl [1]>             <dbl [1]>            
## 4  2013               4028 <dbl [1]>             <dbl [1]>            
## 5  2014               3778 <dbl [1]>             <dbl [1]>            
## 6  2015               3936 <dbl [1]>             <dbl [1]>            
## # ℹ 11 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $ŁÓDZKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               3852 <dbl [1]>             <dbl [1]>            
## 2  2011               4363 <dbl [1]>             <dbl [1]>            
## 3  2012               4441 <dbl [1]>             <dbl [1]>            
## 4  2013               6859 <dbl [1]>             <dbl [1]>            
## 5  2014               6287 <dbl [1]>             <dbl [1]>            
## 6  2015               7207 <dbl [1]>             <dbl [1]>            
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>, Zameldowania <dbl>,
## #   Wymeldowania <dbl>, Miesięczny_dochód <chr>
## 
## $MAŁOPOLSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010              10510 <dbl [1]>             <dbl [1]>            
## 2  2011               9206 <dbl [1]>             <dbl [1]>            
## 3  2012               9276 <dbl [1]>             <dbl [1]>            
## 4  2013              12047 <dbl [1]>             <dbl [1]>            
## 5  2014              13441 <dbl [1]>             <dbl [1]>            
## 6  2015              13832 <dbl [1]>             <dbl [1]>            
## # ℹ 11 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $OPOLSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               2352 <dbl [1]>             <dbl [1]>            
## 2  2011               2181 <dbl [1]>             <dbl [1]>            
## 3  2012               2445 <dbl [1]>             <dbl [1]>            
## 4  2013               2614 <dbl [1]>             <dbl [1]>            
## 5  2014               2469 <dbl [1]>             <dbl [1]>            
## 6  2015               2605 <dbl [1]>             <dbl [1]>            
## # ℹ 11 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $MAZOWIECKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl> <list>             <list>                <list>               
## 1  2010 <dbl [1]>          <dbl [1]>             <dbl [1]>            
## 2  2011 <dbl [1]>          <dbl [1]>             <dbl [1]>            
## 3  2012 <dbl [1]>          <dbl [1]>             <dbl [1]>            
## 4  2013 <dbl [1]>          <dbl [1]>             <dbl [1]>            
## 5  2014 <dbl [1]>          <dbl [1]>             <dbl [1]>            
## 6  2015 <dbl [1]>          <dbl [1]>             <dbl [1]>            
## # ℹ 11 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $PODKARPACKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               1480 <dbl [1]>             <dbl [1]>            
## 2  2011               1747 <dbl [1]>             <dbl [1]>            
## 3  2012               2487 <dbl [1]>             <dbl [1]>            
## 4  2013               2766 <dbl [1]>             <dbl [1]>            
## 5  2014               2684 <dbl [1]>             <dbl [1]>            
## 6  2015               3647 <dbl [1]>             <dbl [1]>            
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>, Zameldowania <dbl>,
## #   Wymeldowania <dbl>, Miesięczny_dochód <list>
## 
## $PODLASKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               2496 <dbl [1]>             <dbl [1]>            
## 2  2011               2918 <dbl [1]>             <dbl [1]>            
## 3  2012               2970 <dbl [1]>             <dbl [1]>            
## 4  2013               3114 <dbl [1]>             <dbl [1]>            
## 5  2014               3635 <dbl [1]>             <dbl [1]>            
## 6  2015               3605 <dbl [1]>             <dbl [1]>            
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>, Zameldowania <dbl>,
## #   Wymeldowania <dbl>, Miesięczny_dochód <chr>
## 
## $POMORSKIE
## # A tibble: 6 × 17
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               8968 <dbl [1]>             <dbl [1]>            
## 2  2011              11287 <dbl [1]>             <dbl [1]>            
## 3  2012              12396 <dbl [1]>             <dbl [1]>            
## 4  2013              14192 <dbl [1]>             <dbl [1]>            
## 5  2014              13573 <dbl [1]>             <dbl [1]>            
## 6  2015              15371 <dbl [1]>             <dbl [1]>            
## # ℹ 13 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>, Zameldowania <dbl>,
## #   Wymeldowania <dbl>, Miesięczny_dochód <chr>
## 
## $ŚWIĘTOKRZYSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl> <list>                <list>               
## 1  2010               1141 <dbl [1]>             <dbl [1]>            
## 2  2011                985 <dbl [1]>             <dbl [1]>            
## 3  2012               1503 <dbl [1]>             <dbl [1]>            
## 4  2013               1617 <dbl [1]>             <dbl [1]>            
## 5  2014               1667 <dbl [1]>             <dbl [1]>            
## 6  2015               1955 <dbl [1]>             <dbl [1]>            
## # ℹ 11 more variables: `Mediana cen` <list>, Średnia_cena_lokali <list>,
## #   Wartość_lokali <list>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $WIELKOPOLSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl>                 <dbl>                 <dbl>
## 1  2010               8903               498182.                  4357
## 2  2011               9454               523039                   4264
## 3  2012              10059               555624.                  4138
## 4  2013              10613               584126.                  4113
## 5  2014              11125               616795.                  4182
## 6  2015              12401               682518.                  4208
## # ℹ 11 more variables: `Mediana cen` <dbl>, Średnia_cena_lokali <dbl>,
## #   Wartość_lokali <dbl>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $WARMIŃSKO_MAZURSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl>                 <dbl>                 <dbl>
## 1  2010               5211               261072.                  3398
## 2  2011               5055               257505.                  3384
## 3  2012               5612               284344.                  3215
## 4  2013               5542               280955                   3127
## 5  2014               5963               302864.                  3228
## 6  2015               6149               313261.                  3181
## # ℹ 11 more variables: `Mediana cen` <dbl>, Średnia_cena_lokali <dbl>,
## #   Wartość_lokali <dbl>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>
## 
## $ZACHODNIOPOMORSKIE
## # A tibble: 6 × 15
##     Rok Liczba_sprzedanych Powierzchnia_użytkowa `Średnia cena za 1m2`
##   <dbl>              <dbl>                 <dbl>                 <dbl>
## 1  2010               5859               312975.                  3886
## 2  2011               6589               351718.                  3778
## 3  2012               7271               387324.                  3671
## 4  2013               7856               414591.                  3690
## 5  2014               8044               422303.                  3595
## 6  2015               7451               398731.                  3493
## # ℹ 11 more variables: `Mediana cen` <dbl>, Średnia_cena_lokali <dbl>,
## #   Wartość_lokali <dbl>, Wynagrodz_brutto <dbl>, Bezrobocie <dbl>,
## #   Małżeństwa <dbl>, Inflacja <dbl>, Wydatki_700 <dbl>,
## #   `Mieszkania _oddane` <dbl>, Pozwolenia_budowa <chr>,
## #   Miesięczny_dochód <chr>

Pokazanie Wyników Ogólnie:

na_counts_list <- lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  na_counts <- colSums(is.na(data))
  data.frame(
    Kolumna = names(na_counts),
    Liczba_NA = as.numeric(na_counts),
    Region = region_name
  )
})

# Połączenie wyników w jedną tabelę
na_counts_df <- do.call(rbind, na_counts_list)

# Przekształcenie danych na szeroki format (pivot)
library(tidyr)
na_pivot <- pivot_wider(
  na_counts_df,
  names_from = Region,
  values_from = Liczba_NA,
  values_fill = 0
)

# Prezentacja wyników
library(knitr)
kable(na_pivot, caption = "Liczba brakujących wartości (NA) w każdej kolumnie dla każdego regionu")
Liczba brakujących wartości (NA) w każdej kolumnie dla każdego regionu
Kolumna DOLNOŚLĄSKIE KUJAWSKO_POMORSKIE LUBELSKIE LUBUSKIE ŁÓDZKIE MAŁOPOLSKIE OPOLSKIE MAZOWIECKIE PODKARPACKIE PODLASKIE POMORSKIE ŚWIĘTOKRZYSKIE WIELKOPOLSKIE WARMIŃSKO_MAZURSKIE ZACHODNIOPOMORSKIE
Rok 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Liczba_sprzedanych 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Powierzchnia_użytkowa 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Średnia cena za 1m2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mediana cen 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Średnia_cena_lokali 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wartość_lokali 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wynagrodz_brutto 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Bezrobocie 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Małżeństwa 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Inflacja 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wydatki_700 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Mieszkania _oddane 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Pozwolenia_budowa 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Miesięczny_dochód 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Zameldowania 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Wymeldowania 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1.2. Obliczanie unikatowych wartości w każdej kolumnie:

unique_counts <- sapply(polska_data_clean, function(col) length(unique(col)))

unique_counts_df <- data.frame(
  Kolumna = names(unique_counts), 
  Liczba_Unikalnych = as.numeric(unique_counts)
)

kable(unique_counts_df, caption = "Liczba unikalnych wartości w każdej kolumnie")
Liczba unikalnych wartości w każdej kolumnie
Kolumna Liczba_Unikalnych
Rok 14
Liczba_sprzedanych 14
Powierzchnia_użytkowa 14
Średnia cena za 1m2 14
Mediana cen 14
Średnia_cena_lokali 14
Wartość_lokali 14
Wynagrodz_brutto 14
Bezrobocie 11
Małżeństwa 14
Inflacja 14
Wydatki_700 14
Mieszkania _oddane 14
Pozwolenia_budowa 14
Miesięczny_dochód 14

Bezrobocie w niektórych latach było takie samo: Tak się zdarza

# Obliczenie liczby unikalnych wartości dla każdej kolumny w każdym regionie
unique_counts_list <- lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  unique_counts <- sapply(data, function(col) length(unique(col)))
  data.frame(
    Kolumna = names(unique_counts),
    Liczba_Unikalnych = as.numeric(unique_counts),
    Region = region_name
  )
})

# Połączenie wyników w jedną tabelę
unique_counts_df <- bind_rows(unique_counts_list)

# Przekształcenie danych na szeroki format (pivot)
unique_pivot <- unique_counts_df %>%
  pivot_wider(names_from = Region, values_from = Liczba_Unikalnych, values_fill = 0)

# Prezentacja wyników
kable(unique_pivot, caption = "Liczba unikalnych wartości w każdej kolumnie dla każdego regionu")
Liczba unikalnych wartości w każdej kolumnie dla każdego regionu
Kolumna DOLNOŚLĄSKIE KUJAWSKO_POMORSKIE LUBELSKIE LUBUSKIE ŁÓDZKIE MAŁOPOLSKIE OPOLSKIE MAZOWIECKIE PODKARPACKIE PODLASKIE POMORSKIE ŚWIĘTOKRZYSKIE WIELKOPOLSKIE WARMIŃSKO_MAZURSKIE ZACHODNIOPOMORSKIE
Rok 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Liczba_sprzedanych 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Powierzchnia_użytkowa 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Średnia cena za 1m2 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Mediana cen 14 14 14 14 14 14 14 14 14 14 14 14 14 14 13
Średnia_cena_lokali 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Wartość_lokali 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Wynagrodz_brutto 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Bezrobocie 13 13 12 14 12 13 13 14 14 12 13 12 12 13 13
Małżeństwa 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Inflacja 13 14 14 14 14 13 14 14 13 14 12 14 14 14 13
Wydatki_700 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Mieszkania _oddane 14 14 14 13 14 14 14 14 14 14 14 14 14 14 14
Pozwolenia_budowa 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Miesięczny_dochód 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
Zameldowania 14 14 14 0 14 0 0 0 14 14 14 0 0 0 0
Wymeldowania 14 14 14 0 14 0 0 0 14 14 14 0 0 0 0

1. Różnice w liczbie unikalnych wartości między regionami

  • Na przykład:

    • W kolumnie Bezrobocie, regiony LUBUSKIE i ŁÓDZKIE mają odpowiednio tylko 13 i 12 unikalnych wartości, podczas gdy w większości regionów jest ich 14 lub 15.

    • Kolumna Inflacja wykazuje 13 unikalnych wartości w regionie PODKARPACKIE, w porównaniu do 15 w innych regionach.

2. Kolumny z zerową liczbą unikalnych wartości w niektórych regionach

  • Kolumny Zameldowania i Wymeldowania mają wartość 0 w regionach LUBUSKIE, ŁÓDZKIE, MAŁOPOLSKIE, OPOLSKIE, MAZOWIECKIE, co oznacza, że te dane nie zostały ujęte w tych regionach.

    Rozwiązanie:

  • Usunięcie zmiennych zameldowanie i wymeldowanie

    # Usunięcie kolumn "Zameldowania" i "Wymeldowania" z każdej ramki danych w liście
    data_list <- lapply(data_list, function(data) {
      data <- data[, !colnames(data) %in% c("Zameldowania", "Wymeldowania")]  # Usuń wybrane kolumny
      return(data)
    })
    
    # Sprawdzenie wyników (opcjonalne)
    lapply(data_list, colnames)  # Wyświetl nazwy kolumn w każdej ramce danych
    ## $DOLNOŚLĄSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $KUJAWSKO_POMORSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $LUBELSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $LUBUSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $ŁÓDZKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $MAŁOPOLSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $OPOLSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $MAZOWIECKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $PODKARPACKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $PODLASKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $POMORSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $ŚWIĘTOKRZYSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $WIELKOPOLSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $WARMIŃSKO_MAZURSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"    
    ## 
    ## $ZACHODNIOPOMORSKIE
    ##  [1] "Rok"                   "Liczba_sprzedanych"    "Powierzchnia_użytkowa"
    ##  [4] "Średnia cena za 1m2"   "Mediana cen"           "Średnia_cena_lokali"  
    ##  [7] "Wartość_lokali"        "Wynagrodz_brutto"      "Bezrobocie"           
    ## [10] "Małżeństwa"            "Inflacja"              "Wydatki_700"          
    ## [13] "Mieszkania _oddane"    "Pozwolenia_budowa"     "Miesięczny_dochód"

1.3. Sprawdzanie typu danych w każdej kolumnie:

# Sprawdzenie typu danych dla wszystkich zmiennych w każdej ramce danych
variable_types <- lapply(data_list, function(data) {
  sapply(data, class)  # Pobierz klasy (typy) wszystkich kolumn
})

# Wyświetlenie wyników (opcjonalne)
# Sprawdzenie typu danych dla każdej kolumny w każdej ramce danych
variable_types <- lapply(data_list, function(data) {
  sapply(data, class)  # Pobierz klasy (typy) wszystkich kolumn
})

# Przekształcenie wyników do formatu tabelarycznego
variable_types_df <- as.data.frame(do.call(cbind, variable_types))
variable_types_df <- cbind(Kolumna = rownames(variable_types_df), variable_types_df)
rownames(variable_types_df) <- NULL  # Usuń indeksy wierszy

# Ustawianie nazw kolumn (pierwsza to Kolumna, reszta to regiony)
colnames(variable_types_df) <- c("Kolumna", names(data_list))

# Wyświetlenie tabeli w oczekiwanym formacie
library(knitr)
kable(variable_types_df, caption = "Typy zmiennych w każdej ramce danych")
Typy zmiennych w każdej ramce danych
Kolumna DOLNOŚLĄSKIE KUJAWSKO_POMORSKIE LUBELSKIE LUBUSKIE ŁÓDZKIE MAŁOPOLSKIE OPOLSKIE MAZOWIECKIE PODKARPACKIE PODLASKIE POMORSKIE ŚWIĘTOKRZYSKIE WIELKOPOLSKIE WARMIŃSKO_MAZURSKIE ZACHODNIOPOMORSKIE
Rok numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Liczba_sprzedanych numeric numeric numeric numeric numeric numeric numeric list numeric numeric numeric numeric numeric numeric numeric
Powierzchnia_użytkowa numeric list list list list list list list list list list list numeric numeric numeric
Średnia cena za 1m2 numeric list list list list list list list list list list list numeric numeric numeric
Mediana cen list list list list list list list list list list list list numeric numeric numeric
Średnia_cena_lokali list list list list list list list list list list list list numeric numeric numeric
Wartość_lokali list list list list list list list list list list list list numeric numeric numeric
Wynagrodz_brutto numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Bezrobocie numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Małżeństwa numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Inflacja numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Wydatki_700 numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Mieszkania _oddane numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric numeric
Pozwolenia_budowa character character character character character character character character character character character character character character character
Miesięczny_dochód character character list character character character character character list character character character character character character

Rozwiązanie

Próbne

# Funkcja do oczyszczania danych (usuwanie spacji, zamiana przecinków na kropki) Próbne
clean_column <- function(column) {
  # Zamiana kolumny na character w celu przeprowadzenia operacji
  column <- as.character(column)
  column <- gsub(" ", "", column)  # Usuń spacje
  column <- gsub(",", ".", column)  # Zamień przecinki na kropki
  
  # Próba konwersji na numeryczne, jeśli nie powiedzie się, pozostaje jako tekst
  cleaned_column <- suppressWarnings(as.numeric(column))
  if (all(is.na(cleaned_column))) {
    return(column)  # Jeśli wszystkie wartości są NA po konwersji, zostaw jako tekst
  } else {
    return(cleaned_column)  # Jeśli można, zwróć jako numeryczne
  }
}

# Edycja wszystkich kolumn w każdej ramce danych
data_list <- lapply(data_list, function(data) {
  data <- data.frame(lapply(data, clean_column))  # Oczyść każdą kolumnę
  return(data)
})

# Sprawdzenie typu danych dla każdej kolumny w każdej ramce danych
data_characteristics <- lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Kolumna = colnames(data),
    Typ = sapply(data, class),
    Region = region_name
  )
})

# Połączenie wyników w jedną tabelę
data_characteristics_df <- do.call(rbind, data_characteristics)

# Wyświetlenie wyników
library(knitr)
kable(data_characteristics_df, caption = "Charakterystyka danych w każdej ramce danych")
Charakterystyka danych w każdej ramce danych
Kolumna Typ Region
Rok Rok numeric DOLNOŚLĄSKIE
Liczba_sprzedanych Liczba_sprzedanych numeric DOLNOŚLĄSKIE
Powierzchnia_użytkowa Powierzchnia_użytkowa numeric DOLNOŚLĄSKIE
Średnia.cena.za.1m2 Średnia.cena.za.1m2 numeric DOLNOŚLĄSKIE
Mediana.cen Mediana.cen numeric DOLNOŚLĄSKIE
Średnia_cena_lokali Średnia_cena_lokali numeric DOLNOŚLĄSKIE
Wartość_lokali Wartość_lokali numeric DOLNOŚLĄSKIE
Wynagrodz_brutto Wynagrodz_brutto numeric DOLNOŚLĄSKIE
Bezrobocie Bezrobocie numeric DOLNOŚLĄSKIE
Małżeństwa Małżeństwa numeric DOLNOŚLĄSKIE
Inflacja Inflacja numeric DOLNOŚLĄSKIE
Wydatki_700 Wydatki_700 numeric DOLNOŚLĄSKIE
Mieszkania._oddane Mieszkania._oddane numeric DOLNOŚLĄSKIE
Pozwolenia_budowa Pozwolenia_budowa numeric DOLNOŚLĄSKIE
Miesięczny_dochód Miesięczny_dochód numeric DOLNOŚLĄSKIE
Rok1 Rok numeric KUJAWSKO_POMORSKIE
Liczba_sprzedanych1 Liczba_sprzedanych numeric KUJAWSKO_POMORSKIE
Powierzchnia_użytkowa1 Powierzchnia_użytkowa numeric KUJAWSKO_POMORSKIE
Średnia.cena.za.1m21 Średnia.cena.za.1m2 numeric KUJAWSKO_POMORSKIE
Mediana.cen1 Mediana.cen numeric KUJAWSKO_POMORSKIE
Średnia_cena_lokali1 Średnia_cena_lokali numeric KUJAWSKO_POMORSKIE
Wartość_lokali1 Wartość_lokali numeric KUJAWSKO_POMORSKIE
Wynagrodz_brutto1 Wynagrodz_brutto numeric KUJAWSKO_POMORSKIE
Bezrobocie1 Bezrobocie numeric KUJAWSKO_POMORSKIE
Małżeństwa1 Małżeństwa numeric KUJAWSKO_POMORSKIE
Inflacja1 Inflacja numeric KUJAWSKO_POMORSKIE
Wydatki_7001 Wydatki_700 numeric KUJAWSKO_POMORSKIE
Mieszkania._oddane1 Mieszkania._oddane numeric KUJAWSKO_POMORSKIE
Pozwolenia_budowa1 Pozwolenia_budowa numeric KUJAWSKO_POMORSKIE
Miesięczny_dochód1 Miesięczny_dochód numeric KUJAWSKO_POMORSKIE
Rok2 Rok numeric LUBELSKIE
Liczba_sprzedanych2 Liczba_sprzedanych numeric LUBELSKIE
Powierzchnia_użytkowa2 Powierzchnia_użytkowa numeric LUBELSKIE
Średnia.cena.za.1m22 Średnia.cena.za.1m2 numeric LUBELSKIE
Mediana.cen2 Mediana.cen numeric LUBELSKIE
Średnia_cena_lokali2 Średnia_cena_lokali numeric LUBELSKIE
Wartość_lokali2 Wartość_lokali numeric LUBELSKIE
Wynagrodz_brutto2 Wynagrodz_brutto numeric LUBELSKIE
Bezrobocie2 Bezrobocie numeric LUBELSKIE
Małżeństwa2 Małżeństwa numeric LUBELSKIE
Inflacja2 Inflacja numeric LUBELSKIE
Wydatki_7002 Wydatki_700 numeric LUBELSKIE
Mieszkania._oddane2 Mieszkania._oddane numeric LUBELSKIE
Pozwolenia_budowa2 Pozwolenia_budowa numeric LUBELSKIE
Miesięczny_dochód2 Miesięczny_dochód numeric LUBELSKIE
Rok3 Rok numeric LUBUSKIE
Liczba_sprzedanych3 Liczba_sprzedanych numeric LUBUSKIE
Powierzchnia_użytkowa3 Powierzchnia_użytkowa numeric LUBUSKIE
Średnia.cena.za.1m23 Średnia.cena.za.1m2 numeric LUBUSKIE
Mediana.cen3 Mediana.cen numeric LUBUSKIE
Średnia_cena_lokali3 Średnia_cena_lokali numeric LUBUSKIE
Wartość_lokali3 Wartość_lokali numeric LUBUSKIE
Wynagrodz_brutto3 Wynagrodz_brutto numeric LUBUSKIE
Bezrobocie3 Bezrobocie numeric LUBUSKIE
Małżeństwa3 Małżeństwa numeric LUBUSKIE
Inflacja3 Inflacja numeric LUBUSKIE
Wydatki_7003 Wydatki_700 numeric LUBUSKIE
Mieszkania._oddane3 Mieszkania._oddane numeric LUBUSKIE
Pozwolenia_budowa3 Pozwolenia_budowa numeric LUBUSKIE
Miesięczny_dochód3 Miesięczny_dochód numeric LUBUSKIE
Rok4 Rok numeric ŁÓDZKIE
Liczba_sprzedanych4 Liczba_sprzedanych numeric ŁÓDZKIE
Powierzchnia_użytkowa4 Powierzchnia_użytkowa numeric ŁÓDZKIE
Średnia.cena.za.1m24 Średnia.cena.za.1m2 numeric ŁÓDZKIE
Mediana.cen4 Mediana.cen numeric ŁÓDZKIE
Średnia_cena_lokali4 Średnia_cena_lokali numeric ŁÓDZKIE
Wartość_lokali4 Wartość_lokali numeric ŁÓDZKIE
Wynagrodz_brutto4 Wynagrodz_brutto numeric ŁÓDZKIE
Bezrobocie4 Bezrobocie numeric ŁÓDZKIE
Małżeństwa4 Małżeństwa numeric ŁÓDZKIE
Inflacja4 Inflacja numeric ŁÓDZKIE
Wydatki_7004 Wydatki_700 numeric ŁÓDZKIE
Mieszkania._oddane4 Mieszkania._oddane numeric ŁÓDZKIE
Pozwolenia_budowa4 Pozwolenia_budowa numeric ŁÓDZKIE
Miesięczny_dochód4 Miesięczny_dochód numeric ŁÓDZKIE
Rok5 Rok numeric MAŁOPOLSKIE
Liczba_sprzedanych5 Liczba_sprzedanych numeric MAŁOPOLSKIE
Powierzchnia_użytkowa5 Powierzchnia_użytkowa numeric MAŁOPOLSKIE
Średnia.cena.za.1m25 Średnia.cena.za.1m2 numeric MAŁOPOLSKIE
Mediana.cen5 Mediana.cen numeric MAŁOPOLSKIE
Średnia_cena_lokali5 Średnia_cena_lokali numeric MAŁOPOLSKIE
Wartość_lokali5 Wartość_lokali numeric MAŁOPOLSKIE
Wynagrodz_brutto5 Wynagrodz_brutto numeric MAŁOPOLSKIE
Bezrobocie5 Bezrobocie numeric MAŁOPOLSKIE
Małżeństwa5 Małżeństwa numeric MAŁOPOLSKIE
Inflacja5 Inflacja numeric MAŁOPOLSKIE
Wydatki_7005 Wydatki_700 numeric MAŁOPOLSKIE
Mieszkania._oddane5 Mieszkania._oddane numeric MAŁOPOLSKIE
Pozwolenia_budowa5 Pozwolenia_budowa numeric MAŁOPOLSKIE
Miesięczny_dochód5 Miesięczny_dochód numeric MAŁOPOLSKIE
Rok6 Rok numeric OPOLSKIE
Liczba_sprzedanych6 Liczba_sprzedanych numeric OPOLSKIE
Powierzchnia_użytkowa6 Powierzchnia_użytkowa numeric OPOLSKIE
Średnia.cena.za.1m26 Średnia.cena.za.1m2 numeric OPOLSKIE
Mediana.cen6 Mediana.cen numeric OPOLSKIE
Średnia_cena_lokali6 Średnia_cena_lokali numeric OPOLSKIE
Wartość_lokali6 Wartość_lokali numeric OPOLSKIE
Wynagrodz_brutto6 Wynagrodz_brutto numeric OPOLSKIE
Bezrobocie6 Bezrobocie numeric OPOLSKIE
Małżeństwa6 Małżeństwa numeric OPOLSKIE
Inflacja6 Inflacja numeric OPOLSKIE
Wydatki_7006 Wydatki_700 numeric OPOLSKIE
Mieszkania._oddane6 Mieszkania._oddane numeric OPOLSKIE
Pozwolenia_budowa6 Pozwolenia_budowa numeric OPOLSKIE
Miesięczny_dochód6 Miesięczny_dochód numeric OPOLSKIE
Rok7 Rok numeric MAZOWIECKIE
Liczba_sprzedanych7 Liczba_sprzedanych numeric MAZOWIECKIE
Powierzchnia_użytkowa7 Powierzchnia_użytkowa numeric MAZOWIECKIE
Średnia.cena.za.1m27 Średnia.cena.za.1m2 numeric MAZOWIECKIE
Mediana.cen7 Mediana.cen numeric MAZOWIECKIE
Średnia_cena_lokali7 Średnia_cena_lokali numeric MAZOWIECKIE
Wartość_lokali7 Wartość_lokali numeric MAZOWIECKIE
Wynagrodz_brutto7 Wynagrodz_brutto numeric MAZOWIECKIE
Bezrobocie7 Bezrobocie numeric MAZOWIECKIE
Małżeństwa7 Małżeństwa numeric MAZOWIECKIE
Inflacja7 Inflacja numeric MAZOWIECKIE
Wydatki_7007 Wydatki_700 numeric MAZOWIECKIE
Mieszkania._oddane7 Mieszkania._oddane numeric MAZOWIECKIE
Pozwolenia_budowa7 Pozwolenia_budowa numeric MAZOWIECKIE
Miesięczny_dochód7 Miesięczny_dochód numeric MAZOWIECKIE
Rok8 Rok numeric PODKARPACKIE
Liczba_sprzedanych8 Liczba_sprzedanych numeric PODKARPACKIE
Powierzchnia_użytkowa8 Powierzchnia_użytkowa numeric PODKARPACKIE
Średnia.cena.za.1m28 Średnia.cena.za.1m2 numeric PODKARPACKIE
Mediana.cen8 Mediana.cen numeric PODKARPACKIE
Średnia_cena_lokali8 Średnia_cena_lokali numeric PODKARPACKIE
Wartość_lokali8 Wartość_lokali numeric PODKARPACKIE
Wynagrodz_brutto8 Wynagrodz_brutto numeric PODKARPACKIE
Bezrobocie8 Bezrobocie numeric PODKARPACKIE
Małżeństwa8 Małżeństwa numeric PODKARPACKIE
Inflacja8 Inflacja numeric PODKARPACKIE
Wydatki_7008 Wydatki_700 numeric PODKARPACKIE
Mieszkania._oddane8 Mieszkania._oddane numeric PODKARPACKIE
Pozwolenia_budowa8 Pozwolenia_budowa numeric PODKARPACKIE
Miesięczny_dochód8 Miesięczny_dochód numeric PODKARPACKIE
Rok9 Rok numeric PODLASKIE
Liczba_sprzedanych9 Liczba_sprzedanych numeric PODLASKIE
Powierzchnia_użytkowa9 Powierzchnia_użytkowa numeric PODLASKIE
Średnia.cena.za.1m29 Średnia.cena.za.1m2 numeric PODLASKIE
Mediana.cen9 Mediana.cen numeric PODLASKIE
Średnia_cena_lokali9 Średnia_cena_lokali numeric PODLASKIE
Wartość_lokali9 Wartość_lokali numeric PODLASKIE
Wynagrodz_brutto9 Wynagrodz_brutto numeric PODLASKIE
Bezrobocie9 Bezrobocie numeric PODLASKIE
Małżeństwa9 Małżeństwa numeric PODLASKIE
Inflacja9 Inflacja numeric PODLASKIE
Wydatki_7009 Wydatki_700 numeric PODLASKIE
Mieszkania._oddane9 Mieszkania._oddane numeric PODLASKIE
Pozwolenia_budowa9 Pozwolenia_budowa numeric PODLASKIE
Miesięczny_dochód9 Miesięczny_dochód numeric PODLASKIE
Rok10 Rok numeric POMORSKIE
Liczba_sprzedanych10 Liczba_sprzedanych numeric POMORSKIE
Powierzchnia_użytkowa10 Powierzchnia_użytkowa numeric POMORSKIE
Średnia.cena.za.1m210 Średnia.cena.za.1m2 numeric POMORSKIE
Mediana.cen10 Mediana.cen numeric POMORSKIE
Średnia_cena_lokali10 Średnia_cena_lokali numeric POMORSKIE
Wartość_lokali10 Wartość_lokali numeric POMORSKIE
Wynagrodz_brutto10 Wynagrodz_brutto numeric POMORSKIE
Bezrobocie10 Bezrobocie numeric POMORSKIE
Małżeństwa10 Małżeństwa numeric POMORSKIE
Inflacja10 Inflacja numeric POMORSKIE
Wydatki_70010 Wydatki_700 numeric POMORSKIE
Mieszkania._oddane10 Mieszkania._oddane numeric POMORSKIE
Pozwolenia_budowa10 Pozwolenia_budowa numeric POMORSKIE
Miesięczny_dochód10 Miesięczny_dochód numeric POMORSKIE
Rok11 Rok numeric ŚWIĘTOKRZYSKIE
Liczba_sprzedanych11 Liczba_sprzedanych numeric ŚWIĘTOKRZYSKIE
Powierzchnia_użytkowa11 Powierzchnia_użytkowa numeric ŚWIĘTOKRZYSKIE
Średnia.cena.za.1m211 Średnia.cena.za.1m2 numeric ŚWIĘTOKRZYSKIE
Mediana.cen11 Mediana.cen numeric ŚWIĘTOKRZYSKIE
Średnia_cena_lokali11 Średnia_cena_lokali numeric ŚWIĘTOKRZYSKIE
Wartość_lokali11 Wartość_lokali numeric ŚWIĘTOKRZYSKIE
Wynagrodz_brutto11 Wynagrodz_brutto numeric ŚWIĘTOKRZYSKIE
Bezrobocie11 Bezrobocie numeric ŚWIĘTOKRZYSKIE
Małżeństwa11 Małżeństwa numeric ŚWIĘTOKRZYSKIE
Inflacja11 Inflacja numeric ŚWIĘTOKRZYSKIE
Wydatki_70011 Wydatki_700 numeric ŚWIĘTOKRZYSKIE
Mieszkania._oddane11 Mieszkania._oddane numeric ŚWIĘTOKRZYSKIE
Pozwolenia_budowa11 Pozwolenia_budowa numeric ŚWIĘTOKRZYSKIE
Miesięczny_dochód11 Miesięczny_dochód numeric ŚWIĘTOKRZYSKIE
Rok12 Rok numeric WIELKOPOLSKIE
Liczba_sprzedanych12 Liczba_sprzedanych numeric WIELKOPOLSKIE
Powierzchnia_użytkowa12 Powierzchnia_użytkowa numeric WIELKOPOLSKIE
Średnia.cena.za.1m212 Średnia.cena.za.1m2 numeric WIELKOPOLSKIE
Mediana.cen12 Mediana.cen numeric WIELKOPOLSKIE
Średnia_cena_lokali12 Średnia_cena_lokali numeric WIELKOPOLSKIE
Wartość_lokali12 Wartość_lokali numeric WIELKOPOLSKIE
Wynagrodz_brutto12 Wynagrodz_brutto numeric WIELKOPOLSKIE
Bezrobocie12 Bezrobocie numeric WIELKOPOLSKIE
Małżeństwa12 Małżeństwa numeric WIELKOPOLSKIE
Inflacja12 Inflacja numeric WIELKOPOLSKIE
Wydatki_70012 Wydatki_700 numeric WIELKOPOLSKIE
Mieszkania._oddane12 Mieszkania._oddane numeric WIELKOPOLSKIE
Pozwolenia_budowa12 Pozwolenia_budowa numeric WIELKOPOLSKIE
Miesięczny_dochód12 Miesięczny_dochód numeric WIELKOPOLSKIE
Rok13 Rok numeric WARMIŃSKO_MAZURSKIE
Liczba_sprzedanych13 Liczba_sprzedanych numeric WARMIŃSKO_MAZURSKIE
Powierzchnia_użytkowa13 Powierzchnia_użytkowa numeric WARMIŃSKO_MAZURSKIE
Średnia.cena.za.1m213 Średnia.cena.za.1m2 numeric WARMIŃSKO_MAZURSKIE
Mediana.cen13 Mediana.cen numeric WARMIŃSKO_MAZURSKIE
Średnia_cena_lokali13 Średnia_cena_lokali numeric WARMIŃSKO_MAZURSKIE
Wartość_lokali13 Wartość_lokali numeric WARMIŃSKO_MAZURSKIE
Wynagrodz_brutto13 Wynagrodz_brutto numeric WARMIŃSKO_MAZURSKIE
Bezrobocie13 Bezrobocie numeric WARMIŃSKO_MAZURSKIE
Małżeństwa13 Małżeństwa numeric WARMIŃSKO_MAZURSKIE
Inflacja13 Inflacja numeric WARMIŃSKO_MAZURSKIE
Wydatki_70013 Wydatki_700 numeric WARMIŃSKO_MAZURSKIE
Mieszkania._oddane13 Mieszkania._oddane numeric WARMIŃSKO_MAZURSKIE
Pozwolenia_budowa13 Pozwolenia_budowa numeric WARMIŃSKO_MAZURSKIE
Miesięczny_dochód13 Miesięczny_dochód numeric WARMIŃSKO_MAZURSKIE
Rok14 Rok numeric ZACHODNIOPOMORSKIE
Liczba_sprzedanych14 Liczba_sprzedanych numeric ZACHODNIOPOMORSKIE
Powierzchnia_użytkowa14 Powierzchnia_użytkowa numeric ZACHODNIOPOMORSKIE
Średnia.cena.za.1m214 Średnia.cena.za.1m2 numeric ZACHODNIOPOMORSKIE
Mediana.cen14 Mediana.cen numeric ZACHODNIOPOMORSKIE
Średnia_cena_lokali14 Średnia_cena_lokali numeric ZACHODNIOPOMORSKIE
Wartość_lokali14 Wartość_lokali numeric ZACHODNIOPOMORSKIE
Wynagrodz_brutto14 Wynagrodz_brutto numeric ZACHODNIOPOMORSKIE
Bezrobocie14 Bezrobocie numeric ZACHODNIOPOMORSKIE
Małżeństwa14 Małżeństwa numeric ZACHODNIOPOMORSKIE
Inflacja14 Inflacja numeric ZACHODNIOPOMORSKIE
Wydatki_70014 Wydatki_700 numeric ZACHODNIOPOMORSKIE
Mieszkania._oddane14 Mieszkania._oddane numeric ZACHODNIOPOMORSKIE
Pozwolenia_budowa14 Pozwolenia_budowa numeric ZACHODNIOPOMORSKIE
Miesięczny_dochód14 Miesięczny_dochód numeric ZACHODNIOPOMORSKIE
# Funkcja do oczyszczania danych
clean_numeric_column <- function(column) {
  if (is.character(column)) {
    column <- gsub(" ", "", column)  # Usuń spacje
    column <- gsub(",", ".", column)  # Zamień przecinki na kropki
    return(as.numeric(column))  # Konwertuj na numeryczne
  } else if (is.list(column)) {
    return(as.numeric(unlist(column)))  # Jeśli lista, rozwiń i konwertuj
  } else {
    return(column)  # Jeśli już numeryczne, pozostaw bez zmian
  }
}

# Edycja wszystkich kolumn w każdej ramce danych
data_list <- lapply(data_list, function(data) {
  data <- data.frame(lapply(data, clean_numeric_column))  # Oczyść każdą kolumnę
  return(data)
})

# Sprawdzenie typu danych dla każdej kolumny w każdej ramce danych
data_characteristics <- lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Kolumna = colnames(data),
    Typ = sapply(data, class),
    Region = region_name
  )
})

# Połączenie wyników w jedną tabelę
data_characteristics_df <- do.call(rbind, data_characteristics)

# Wyświetlenie wyników
library(knitr)
kable(data_characteristics_df, caption = "Charakterystyka danych w każdej ramce danych")
Charakterystyka danych w każdej ramce danych
Kolumna Typ Region
Rok Rok numeric DOLNOŚLĄSKIE
Liczba_sprzedanych Liczba_sprzedanych numeric DOLNOŚLĄSKIE
Powierzchnia_użytkowa Powierzchnia_użytkowa numeric DOLNOŚLĄSKIE
Średnia.cena.za.1m2 Średnia.cena.za.1m2 numeric DOLNOŚLĄSKIE
Mediana.cen Mediana.cen numeric DOLNOŚLĄSKIE
Średnia_cena_lokali Średnia_cena_lokali numeric DOLNOŚLĄSKIE
Wartość_lokali Wartość_lokali numeric DOLNOŚLĄSKIE
Wynagrodz_brutto Wynagrodz_brutto numeric DOLNOŚLĄSKIE
Bezrobocie Bezrobocie numeric DOLNOŚLĄSKIE
Małżeństwa Małżeństwa numeric DOLNOŚLĄSKIE
Inflacja Inflacja numeric DOLNOŚLĄSKIE
Wydatki_700 Wydatki_700 numeric DOLNOŚLĄSKIE
Mieszkania._oddane Mieszkania._oddane numeric DOLNOŚLĄSKIE
Pozwolenia_budowa Pozwolenia_budowa numeric DOLNOŚLĄSKIE
Miesięczny_dochód Miesięczny_dochód numeric DOLNOŚLĄSKIE
Rok1 Rok numeric KUJAWSKO_POMORSKIE
Liczba_sprzedanych1 Liczba_sprzedanych numeric KUJAWSKO_POMORSKIE
Powierzchnia_użytkowa1 Powierzchnia_użytkowa numeric KUJAWSKO_POMORSKIE
Średnia.cena.za.1m21 Średnia.cena.za.1m2 numeric KUJAWSKO_POMORSKIE
Mediana.cen1 Mediana.cen numeric KUJAWSKO_POMORSKIE
Średnia_cena_lokali1 Średnia_cena_lokali numeric KUJAWSKO_POMORSKIE
Wartość_lokali1 Wartość_lokali numeric KUJAWSKO_POMORSKIE
Wynagrodz_brutto1 Wynagrodz_brutto numeric KUJAWSKO_POMORSKIE
Bezrobocie1 Bezrobocie numeric KUJAWSKO_POMORSKIE
Małżeństwa1 Małżeństwa numeric KUJAWSKO_POMORSKIE
Inflacja1 Inflacja numeric KUJAWSKO_POMORSKIE
Wydatki_7001 Wydatki_700 numeric KUJAWSKO_POMORSKIE
Mieszkania._oddane1 Mieszkania._oddane numeric KUJAWSKO_POMORSKIE
Pozwolenia_budowa1 Pozwolenia_budowa numeric KUJAWSKO_POMORSKIE
Miesięczny_dochód1 Miesięczny_dochód numeric KUJAWSKO_POMORSKIE
Rok2 Rok numeric LUBELSKIE
Liczba_sprzedanych2 Liczba_sprzedanych numeric LUBELSKIE
Powierzchnia_użytkowa2 Powierzchnia_użytkowa numeric LUBELSKIE
Średnia.cena.za.1m22 Średnia.cena.za.1m2 numeric LUBELSKIE
Mediana.cen2 Mediana.cen numeric LUBELSKIE
Średnia_cena_lokali2 Średnia_cena_lokali numeric LUBELSKIE
Wartość_lokali2 Wartość_lokali numeric LUBELSKIE
Wynagrodz_brutto2 Wynagrodz_brutto numeric LUBELSKIE
Bezrobocie2 Bezrobocie numeric LUBELSKIE
Małżeństwa2 Małżeństwa numeric LUBELSKIE
Inflacja2 Inflacja numeric LUBELSKIE
Wydatki_7002 Wydatki_700 numeric LUBELSKIE
Mieszkania._oddane2 Mieszkania._oddane numeric LUBELSKIE
Pozwolenia_budowa2 Pozwolenia_budowa numeric LUBELSKIE
Miesięczny_dochód2 Miesięczny_dochód numeric LUBELSKIE
Rok3 Rok numeric LUBUSKIE
Liczba_sprzedanych3 Liczba_sprzedanych numeric LUBUSKIE
Powierzchnia_użytkowa3 Powierzchnia_użytkowa numeric LUBUSKIE
Średnia.cena.za.1m23 Średnia.cena.za.1m2 numeric LUBUSKIE
Mediana.cen3 Mediana.cen numeric LUBUSKIE
Średnia_cena_lokali3 Średnia_cena_lokali numeric LUBUSKIE
Wartość_lokali3 Wartość_lokali numeric LUBUSKIE
Wynagrodz_brutto3 Wynagrodz_brutto numeric LUBUSKIE
Bezrobocie3 Bezrobocie numeric LUBUSKIE
Małżeństwa3 Małżeństwa numeric LUBUSKIE
Inflacja3 Inflacja numeric LUBUSKIE
Wydatki_7003 Wydatki_700 numeric LUBUSKIE
Mieszkania._oddane3 Mieszkania._oddane numeric LUBUSKIE
Pozwolenia_budowa3 Pozwolenia_budowa numeric LUBUSKIE
Miesięczny_dochód3 Miesięczny_dochód numeric LUBUSKIE
Rok4 Rok numeric ŁÓDZKIE
Liczba_sprzedanych4 Liczba_sprzedanych numeric ŁÓDZKIE
Powierzchnia_użytkowa4 Powierzchnia_użytkowa numeric ŁÓDZKIE
Średnia.cena.za.1m24 Średnia.cena.za.1m2 numeric ŁÓDZKIE
Mediana.cen4 Mediana.cen numeric ŁÓDZKIE
Średnia_cena_lokali4 Średnia_cena_lokali numeric ŁÓDZKIE
Wartość_lokali4 Wartość_lokali numeric ŁÓDZKIE
Wynagrodz_brutto4 Wynagrodz_brutto numeric ŁÓDZKIE
Bezrobocie4 Bezrobocie numeric ŁÓDZKIE
Małżeństwa4 Małżeństwa numeric ŁÓDZKIE
Inflacja4 Inflacja numeric ŁÓDZKIE
Wydatki_7004 Wydatki_700 numeric ŁÓDZKIE
Mieszkania._oddane4 Mieszkania._oddane numeric ŁÓDZKIE
Pozwolenia_budowa4 Pozwolenia_budowa numeric ŁÓDZKIE
Miesięczny_dochód4 Miesięczny_dochód numeric ŁÓDZKIE
Rok5 Rok numeric MAŁOPOLSKIE
Liczba_sprzedanych5 Liczba_sprzedanych numeric MAŁOPOLSKIE
Powierzchnia_użytkowa5 Powierzchnia_użytkowa numeric MAŁOPOLSKIE
Średnia.cena.za.1m25 Średnia.cena.za.1m2 numeric MAŁOPOLSKIE
Mediana.cen5 Mediana.cen numeric MAŁOPOLSKIE
Średnia_cena_lokali5 Średnia_cena_lokali numeric MAŁOPOLSKIE
Wartość_lokali5 Wartość_lokali numeric MAŁOPOLSKIE
Wynagrodz_brutto5 Wynagrodz_brutto numeric MAŁOPOLSKIE
Bezrobocie5 Bezrobocie numeric MAŁOPOLSKIE
Małżeństwa5 Małżeństwa numeric MAŁOPOLSKIE
Inflacja5 Inflacja numeric MAŁOPOLSKIE
Wydatki_7005 Wydatki_700 numeric MAŁOPOLSKIE
Mieszkania._oddane5 Mieszkania._oddane numeric MAŁOPOLSKIE
Pozwolenia_budowa5 Pozwolenia_budowa numeric MAŁOPOLSKIE
Miesięczny_dochód5 Miesięczny_dochód numeric MAŁOPOLSKIE
Rok6 Rok numeric OPOLSKIE
Liczba_sprzedanych6 Liczba_sprzedanych numeric OPOLSKIE
Powierzchnia_użytkowa6 Powierzchnia_użytkowa numeric OPOLSKIE
Średnia.cena.za.1m26 Średnia.cena.za.1m2 numeric OPOLSKIE
Mediana.cen6 Mediana.cen numeric OPOLSKIE
Średnia_cena_lokali6 Średnia_cena_lokali numeric OPOLSKIE
Wartość_lokali6 Wartość_lokali numeric OPOLSKIE
Wynagrodz_brutto6 Wynagrodz_brutto numeric OPOLSKIE
Bezrobocie6 Bezrobocie numeric OPOLSKIE
Małżeństwa6 Małżeństwa numeric OPOLSKIE
Inflacja6 Inflacja numeric OPOLSKIE
Wydatki_7006 Wydatki_700 numeric OPOLSKIE
Mieszkania._oddane6 Mieszkania._oddane numeric OPOLSKIE
Pozwolenia_budowa6 Pozwolenia_budowa numeric OPOLSKIE
Miesięczny_dochód6 Miesięczny_dochód numeric OPOLSKIE
Rok7 Rok numeric MAZOWIECKIE
Liczba_sprzedanych7 Liczba_sprzedanych numeric MAZOWIECKIE
Powierzchnia_użytkowa7 Powierzchnia_użytkowa numeric MAZOWIECKIE
Średnia.cena.za.1m27 Średnia.cena.za.1m2 numeric MAZOWIECKIE
Mediana.cen7 Mediana.cen numeric MAZOWIECKIE
Średnia_cena_lokali7 Średnia_cena_lokali numeric MAZOWIECKIE
Wartość_lokali7 Wartość_lokali numeric MAZOWIECKIE
Wynagrodz_brutto7 Wynagrodz_brutto numeric MAZOWIECKIE
Bezrobocie7 Bezrobocie numeric MAZOWIECKIE
Małżeństwa7 Małżeństwa numeric MAZOWIECKIE
Inflacja7 Inflacja numeric MAZOWIECKIE
Wydatki_7007 Wydatki_700 numeric MAZOWIECKIE
Mieszkania._oddane7 Mieszkania._oddane numeric MAZOWIECKIE
Pozwolenia_budowa7 Pozwolenia_budowa numeric MAZOWIECKIE
Miesięczny_dochód7 Miesięczny_dochód numeric MAZOWIECKIE
Rok8 Rok numeric PODKARPACKIE
Liczba_sprzedanych8 Liczba_sprzedanych numeric PODKARPACKIE
Powierzchnia_użytkowa8 Powierzchnia_użytkowa numeric PODKARPACKIE
Średnia.cena.za.1m28 Średnia.cena.za.1m2 numeric PODKARPACKIE
Mediana.cen8 Mediana.cen numeric PODKARPACKIE
Średnia_cena_lokali8 Średnia_cena_lokali numeric PODKARPACKIE
Wartość_lokali8 Wartość_lokali numeric PODKARPACKIE
Wynagrodz_brutto8 Wynagrodz_brutto numeric PODKARPACKIE
Bezrobocie8 Bezrobocie numeric PODKARPACKIE
Małżeństwa8 Małżeństwa numeric PODKARPACKIE
Inflacja8 Inflacja numeric PODKARPACKIE
Wydatki_7008 Wydatki_700 numeric PODKARPACKIE
Mieszkania._oddane8 Mieszkania._oddane numeric PODKARPACKIE
Pozwolenia_budowa8 Pozwolenia_budowa numeric PODKARPACKIE
Miesięczny_dochód8 Miesięczny_dochód numeric PODKARPACKIE
Rok9 Rok numeric PODLASKIE
Liczba_sprzedanych9 Liczba_sprzedanych numeric PODLASKIE
Powierzchnia_użytkowa9 Powierzchnia_użytkowa numeric PODLASKIE
Średnia.cena.za.1m29 Średnia.cena.za.1m2 numeric PODLASKIE
Mediana.cen9 Mediana.cen numeric PODLASKIE
Średnia_cena_lokali9 Średnia_cena_lokali numeric PODLASKIE
Wartość_lokali9 Wartość_lokali numeric PODLASKIE
Wynagrodz_brutto9 Wynagrodz_brutto numeric PODLASKIE
Bezrobocie9 Bezrobocie numeric PODLASKIE
Małżeństwa9 Małżeństwa numeric PODLASKIE
Inflacja9 Inflacja numeric PODLASKIE
Wydatki_7009 Wydatki_700 numeric PODLASKIE
Mieszkania._oddane9 Mieszkania._oddane numeric PODLASKIE
Pozwolenia_budowa9 Pozwolenia_budowa numeric PODLASKIE
Miesięczny_dochód9 Miesięczny_dochód numeric PODLASKIE
Rok10 Rok numeric POMORSKIE
Liczba_sprzedanych10 Liczba_sprzedanych numeric POMORSKIE
Powierzchnia_użytkowa10 Powierzchnia_użytkowa numeric POMORSKIE
Średnia.cena.za.1m210 Średnia.cena.za.1m2 numeric POMORSKIE
Mediana.cen10 Mediana.cen numeric POMORSKIE
Średnia_cena_lokali10 Średnia_cena_lokali numeric POMORSKIE
Wartość_lokali10 Wartość_lokali numeric POMORSKIE
Wynagrodz_brutto10 Wynagrodz_brutto numeric POMORSKIE
Bezrobocie10 Bezrobocie numeric POMORSKIE
Małżeństwa10 Małżeństwa numeric POMORSKIE
Inflacja10 Inflacja numeric POMORSKIE
Wydatki_70010 Wydatki_700 numeric POMORSKIE
Mieszkania._oddane10 Mieszkania._oddane numeric POMORSKIE
Pozwolenia_budowa10 Pozwolenia_budowa numeric POMORSKIE
Miesięczny_dochód10 Miesięczny_dochód numeric POMORSKIE
Rok11 Rok numeric ŚWIĘTOKRZYSKIE
Liczba_sprzedanych11 Liczba_sprzedanych numeric ŚWIĘTOKRZYSKIE
Powierzchnia_użytkowa11 Powierzchnia_użytkowa numeric ŚWIĘTOKRZYSKIE
Średnia.cena.za.1m211 Średnia.cena.za.1m2 numeric ŚWIĘTOKRZYSKIE
Mediana.cen11 Mediana.cen numeric ŚWIĘTOKRZYSKIE
Średnia_cena_lokali11 Średnia_cena_lokali numeric ŚWIĘTOKRZYSKIE
Wartość_lokali11 Wartość_lokali numeric ŚWIĘTOKRZYSKIE
Wynagrodz_brutto11 Wynagrodz_brutto numeric ŚWIĘTOKRZYSKIE
Bezrobocie11 Bezrobocie numeric ŚWIĘTOKRZYSKIE
Małżeństwa11 Małżeństwa numeric ŚWIĘTOKRZYSKIE
Inflacja11 Inflacja numeric ŚWIĘTOKRZYSKIE
Wydatki_70011 Wydatki_700 numeric ŚWIĘTOKRZYSKIE
Mieszkania._oddane11 Mieszkania._oddane numeric ŚWIĘTOKRZYSKIE
Pozwolenia_budowa11 Pozwolenia_budowa numeric ŚWIĘTOKRZYSKIE
Miesięczny_dochód11 Miesięczny_dochód numeric ŚWIĘTOKRZYSKIE
Rok12 Rok numeric WIELKOPOLSKIE
Liczba_sprzedanych12 Liczba_sprzedanych numeric WIELKOPOLSKIE
Powierzchnia_użytkowa12 Powierzchnia_użytkowa numeric WIELKOPOLSKIE
Średnia.cena.za.1m212 Średnia.cena.za.1m2 numeric WIELKOPOLSKIE
Mediana.cen12 Mediana.cen numeric WIELKOPOLSKIE
Średnia_cena_lokali12 Średnia_cena_lokali numeric WIELKOPOLSKIE
Wartość_lokali12 Wartość_lokali numeric WIELKOPOLSKIE
Wynagrodz_brutto12 Wynagrodz_brutto numeric WIELKOPOLSKIE
Bezrobocie12 Bezrobocie numeric WIELKOPOLSKIE
Małżeństwa12 Małżeństwa numeric WIELKOPOLSKIE
Inflacja12 Inflacja numeric WIELKOPOLSKIE
Wydatki_70012 Wydatki_700 numeric WIELKOPOLSKIE
Mieszkania._oddane12 Mieszkania._oddane numeric WIELKOPOLSKIE
Pozwolenia_budowa12 Pozwolenia_budowa numeric WIELKOPOLSKIE
Miesięczny_dochód12 Miesięczny_dochód numeric WIELKOPOLSKIE
Rok13 Rok numeric WARMIŃSKO_MAZURSKIE
Liczba_sprzedanych13 Liczba_sprzedanych numeric WARMIŃSKO_MAZURSKIE
Powierzchnia_użytkowa13 Powierzchnia_użytkowa numeric WARMIŃSKO_MAZURSKIE
Średnia.cena.za.1m213 Średnia.cena.za.1m2 numeric WARMIŃSKO_MAZURSKIE
Mediana.cen13 Mediana.cen numeric WARMIŃSKO_MAZURSKIE
Średnia_cena_lokali13 Średnia_cena_lokali numeric WARMIŃSKO_MAZURSKIE
Wartość_lokali13 Wartość_lokali numeric WARMIŃSKO_MAZURSKIE
Wynagrodz_brutto13 Wynagrodz_brutto numeric WARMIŃSKO_MAZURSKIE
Bezrobocie13 Bezrobocie numeric WARMIŃSKO_MAZURSKIE
Małżeństwa13 Małżeństwa numeric WARMIŃSKO_MAZURSKIE
Inflacja13 Inflacja numeric WARMIŃSKO_MAZURSKIE
Wydatki_70013 Wydatki_700 numeric WARMIŃSKO_MAZURSKIE
Mieszkania._oddane13 Mieszkania._oddane numeric WARMIŃSKO_MAZURSKIE
Pozwolenia_budowa13 Pozwolenia_budowa numeric WARMIŃSKO_MAZURSKIE
Miesięczny_dochód13 Miesięczny_dochód numeric WARMIŃSKO_MAZURSKIE
Rok14 Rok numeric ZACHODNIOPOMORSKIE
Liczba_sprzedanych14 Liczba_sprzedanych numeric ZACHODNIOPOMORSKIE
Powierzchnia_użytkowa14 Powierzchnia_użytkowa numeric ZACHODNIOPOMORSKIE
Średnia.cena.za.1m214 Średnia.cena.za.1m2 numeric ZACHODNIOPOMORSKIE
Mediana.cen14 Mediana.cen numeric ZACHODNIOPOMORSKIE
Średnia_cena_lokali14 Średnia_cena_lokali numeric ZACHODNIOPOMORSKIE
Wartość_lokali14 Wartość_lokali numeric ZACHODNIOPOMORSKIE
Wynagrodz_brutto14 Wynagrodz_brutto numeric ZACHODNIOPOMORSKIE
Bezrobocie14 Bezrobocie numeric ZACHODNIOPOMORSKIE
Małżeństwa14 Małżeństwa numeric ZACHODNIOPOMORSKIE
Inflacja14 Inflacja numeric ZACHODNIOPOMORSKIE
Wydatki_70014 Wydatki_700 numeric ZACHODNIOPOMORSKIE
Mieszkania._oddane14 Mieszkania._oddane numeric ZACHODNIOPOMORSKIE
Pozwolenia_budowa14 Pozwolenia_budowa numeric ZACHODNIOPOMORSKIE
Miesięczny_dochód14 Miesięczny_dochód numeric ZACHODNIOPOMORSKIE
# Funkcja do analizy ramki danych
analyze_dataframe <- function(data) {
  data.frame(
    Kolumna = colnames(data),                     # Nazwa kolumny
    Typ = sapply(data, class),                   # Typ danych w kolumnie
    Liczba_NA = colSums(is.na(data)),            # Liczba brakujących wartości w kolumnie
    Liczba_Wierszy = nrow(data)                  # Liczba wierszy (ta sama dla wszystkich kolumn)
  )
}

# Analiza każdej ramki danych w data_list
analysis_list <- lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  result <- analyze_dataframe(data)
  result$Region <- region_name  # Dodanie informacji o regionie
  return(result)
})

# Połączenie wyników w jedną tabelę
analysis_df <- do.call(rbind, analysis_list)

# Wyświetlenie wyników w wygodnym formacie
library(knitr)
kable(analysis_df, caption = "Analiza danych w data_list")
Analiza danych w data_list
Kolumna Typ Liczba_NA Liczba_Wierszy Region
Rok Rok numeric 0 14 DOLNOŚLĄSKIE
Liczba_sprzedanych Liczba_sprzedanych numeric 0 14 DOLNOŚLĄSKIE
Powierzchnia_użytkowa Powierzchnia_użytkowa numeric 0 14 DOLNOŚLĄSKIE
Średnia.cena.za.1m2 Średnia.cena.za.1m2 numeric 0 14 DOLNOŚLĄSKIE
Mediana.cen Mediana.cen numeric 0 14 DOLNOŚLĄSKIE
Średnia_cena_lokali Średnia_cena_lokali numeric 0 14 DOLNOŚLĄSKIE
Wartość_lokali Wartość_lokali numeric 0 14 DOLNOŚLĄSKIE
Wynagrodz_brutto Wynagrodz_brutto numeric 0 14 DOLNOŚLĄSKIE
Bezrobocie Bezrobocie numeric 0 14 DOLNOŚLĄSKIE
Małżeństwa Małżeństwa numeric 0 14 DOLNOŚLĄSKIE
Inflacja Inflacja numeric 0 14 DOLNOŚLĄSKIE
Wydatki_700 Wydatki_700 numeric 0 14 DOLNOŚLĄSKIE
Mieszkania._oddane Mieszkania._oddane numeric 0 14 DOLNOŚLĄSKIE
Pozwolenia_budowa Pozwolenia_budowa numeric 0 14 DOLNOŚLĄSKIE
Miesięczny_dochód Miesięczny_dochód numeric 0 14 DOLNOŚLĄSKIE
Rok1 Rok numeric 0 14 KUJAWSKO_POMORSKIE
Liczba_sprzedanych1 Liczba_sprzedanych numeric 0 14 KUJAWSKO_POMORSKIE
Powierzchnia_użytkowa1 Powierzchnia_użytkowa numeric 0 14 KUJAWSKO_POMORSKIE
Średnia.cena.za.1m21 Średnia.cena.za.1m2 numeric 0 14 KUJAWSKO_POMORSKIE
Mediana.cen1 Mediana.cen numeric 0 14 KUJAWSKO_POMORSKIE
Średnia_cena_lokali1 Średnia_cena_lokali numeric 0 14 KUJAWSKO_POMORSKIE
Wartość_lokali1 Wartość_lokali numeric 0 14 KUJAWSKO_POMORSKIE
Wynagrodz_brutto1 Wynagrodz_brutto numeric 0 14 KUJAWSKO_POMORSKIE
Bezrobocie1 Bezrobocie numeric 0 14 KUJAWSKO_POMORSKIE
Małżeństwa1 Małżeństwa numeric 0 14 KUJAWSKO_POMORSKIE
Inflacja1 Inflacja numeric 0 14 KUJAWSKO_POMORSKIE
Wydatki_7001 Wydatki_700 numeric 0 14 KUJAWSKO_POMORSKIE
Mieszkania._oddane1 Mieszkania._oddane numeric 0 14 KUJAWSKO_POMORSKIE
Pozwolenia_budowa1 Pozwolenia_budowa numeric 0 14 KUJAWSKO_POMORSKIE
Miesięczny_dochód1 Miesięczny_dochód numeric 0 14 KUJAWSKO_POMORSKIE
Rok2 Rok numeric 0 14 LUBELSKIE
Liczba_sprzedanych2 Liczba_sprzedanych numeric 0 14 LUBELSKIE
Powierzchnia_użytkowa2 Powierzchnia_użytkowa numeric 0 14 LUBELSKIE
Średnia.cena.za.1m22 Średnia.cena.za.1m2 numeric 0 14 LUBELSKIE
Mediana.cen2 Mediana.cen numeric 0 14 LUBELSKIE
Średnia_cena_lokali2 Średnia_cena_lokali numeric 0 14 LUBELSKIE
Wartość_lokali2 Wartość_lokali numeric 0 14 LUBELSKIE
Wynagrodz_brutto2 Wynagrodz_brutto numeric 0 14 LUBELSKIE
Bezrobocie2 Bezrobocie numeric 0 14 LUBELSKIE
Małżeństwa2 Małżeństwa numeric 0 14 LUBELSKIE
Inflacja2 Inflacja numeric 0 14 LUBELSKIE
Wydatki_7002 Wydatki_700 numeric 0 14 LUBELSKIE
Mieszkania._oddane2 Mieszkania._oddane numeric 0 14 LUBELSKIE
Pozwolenia_budowa2 Pozwolenia_budowa numeric 0 14 LUBELSKIE
Miesięczny_dochód2 Miesięczny_dochód numeric 0 14 LUBELSKIE
Rok3 Rok numeric 0 14 LUBUSKIE
Liczba_sprzedanych3 Liczba_sprzedanych numeric 0 14 LUBUSKIE
Powierzchnia_użytkowa3 Powierzchnia_użytkowa numeric 0 14 LUBUSKIE
Średnia.cena.za.1m23 Średnia.cena.za.1m2 numeric 0 14 LUBUSKIE
Mediana.cen3 Mediana.cen numeric 0 14 LUBUSKIE
Średnia_cena_lokali3 Średnia_cena_lokali numeric 0 14 LUBUSKIE
Wartość_lokali3 Wartość_lokali numeric 0 14 LUBUSKIE
Wynagrodz_brutto3 Wynagrodz_brutto numeric 0 14 LUBUSKIE
Bezrobocie3 Bezrobocie numeric 0 14 LUBUSKIE
Małżeństwa3 Małżeństwa numeric 0 14 LUBUSKIE
Inflacja3 Inflacja numeric 0 14 LUBUSKIE
Wydatki_7003 Wydatki_700 numeric 0 14 LUBUSKIE
Mieszkania._oddane3 Mieszkania._oddane numeric 0 14 LUBUSKIE
Pozwolenia_budowa3 Pozwolenia_budowa numeric 0 14 LUBUSKIE
Miesięczny_dochód3 Miesięczny_dochód numeric 0 14 LUBUSKIE
Rok4 Rok numeric 0 14 ŁÓDZKIE
Liczba_sprzedanych4 Liczba_sprzedanych numeric 0 14 ŁÓDZKIE
Powierzchnia_użytkowa4 Powierzchnia_użytkowa numeric 0 14 ŁÓDZKIE
Średnia.cena.za.1m24 Średnia.cena.za.1m2 numeric 0 14 ŁÓDZKIE
Mediana.cen4 Mediana.cen numeric 0 14 ŁÓDZKIE
Średnia_cena_lokali4 Średnia_cena_lokali numeric 0 14 ŁÓDZKIE
Wartość_lokali4 Wartość_lokali numeric 0 14 ŁÓDZKIE
Wynagrodz_brutto4 Wynagrodz_brutto numeric 0 14 ŁÓDZKIE
Bezrobocie4 Bezrobocie numeric 0 14 ŁÓDZKIE
Małżeństwa4 Małżeństwa numeric 0 14 ŁÓDZKIE
Inflacja4 Inflacja numeric 0 14 ŁÓDZKIE
Wydatki_7004 Wydatki_700 numeric 0 14 ŁÓDZKIE
Mieszkania._oddane4 Mieszkania._oddane numeric 0 14 ŁÓDZKIE
Pozwolenia_budowa4 Pozwolenia_budowa numeric 0 14 ŁÓDZKIE
Miesięczny_dochód4 Miesięczny_dochód numeric 0 14 ŁÓDZKIE
Rok5 Rok numeric 0 14 MAŁOPOLSKIE
Liczba_sprzedanych5 Liczba_sprzedanych numeric 0 14 MAŁOPOLSKIE
Powierzchnia_użytkowa5 Powierzchnia_użytkowa numeric 0 14 MAŁOPOLSKIE
Średnia.cena.za.1m25 Średnia.cena.za.1m2 numeric 0 14 MAŁOPOLSKIE
Mediana.cen5 Mediana.cen numeric 0 14 MAŁOPOLSKIE
Średnia_cena_lokali5 Średnia_cena_lokali numeric 0 14 MAŁOPOLSKIE
Wartość_lokali5 Wartość_lokali numeric 0 14 MAŁOPOLSKIE
Wynagrodz_brutto5 Wynagrodz_brutto numeric 0 14 MAŁOPOLSKIE
Bezrobocie5 Bezrobocie numeric 0 14 MAŁOPOLSKIE
Małżeństwa5 Małżeństwa numeric 0 14 MAŁOPOLSKIE
Inflacja5 Inflacja numeric 0 14 MAŁOPOLSKIE
Wydatki_7005 Wydatki_700 numeric 0 14 MAŁOPOLSKIE
Mieszkania._oddane5 Mieszkania._oddane numeric 0 14 MAŁOPOLSKIE
Pozwolenia_budowa5 Pozwolenia_budowa numeric 0 14 MAŁOPOLSKIE
Miesięczny_dochód5 Miesięczny_dochód numeric 0 14 MAŁOPOLSKIE
Rok6 Rok numeric 0 14 OPOLSKIE
Liczba_sprzedanych6 Liczba_sprzedanych numeric 0 14 OPOLSKIE
Powierzchnia_użytkowa6 Powierzchnia_użytkowa numeric 0 14 OPOLSKIE
Średnia.cena.za.1m26 Średnia.cena.za.1m2 numeric 0 14 OPOLSKIE
Mediana.cen6 Mediana.cen numeric 0 14 OPOLSKIE
Średnia_cena_lokali6 Średnia_cena_lokali numeric 0 14 OPOLSKIE
Wartość_lokali6 Wartość_lokali numeric 0 14 OPOLSKIE
Wynagrodz_brutto6 Wynagrodz_brutto numeric 0 14 OPOLSKIE
Bezrobocie6 Bezrobocie numeric 0 14 OPOLSKIE
Małżeństwa6 Małżeństwa numeric 0 14 OPOLSKIE
Inflacja6 Inflacja numeric 0 14 OPOLSKIE
Wydatki_7006 Wydatki_700 numeric 0 14 OPOLSKIE
Mieszkania._oddane6 Mieszkania._oddane numeric 0 14 OPOLSKIE
Pozwolenia_budowa6 Pozwolenia_budowa numeric 0 14 OPOLSKIE
Miesięczny_dochód6 Miesięczny_dochód numeric 0 14 OPOLSKIE
Rok7 Rok numeric 0 14 MAZOWIECKIE
Liczba_sprzedanych7 Liczba_sprzedanych numeric 0 14 MAZOWIECKIE
Powierzchnia_użytkowa7 Powierzchnia_użytkowa numeric 0 14 MAZOWIECKIE
Średnia.cena.za.1m27 Średnia.cena.za.1m2 numeric 0 14 MAZOWIECKIE
Mediana.cen7 Mediana.cen numeric 0 14 MAZOWIECKIE
Średnia_cena_lokali7 Średnia_cena_lokali numeric 0 14 MAZOWIECKIE
Wartość_lokali7 Wartość_lokali numeric 0 14 MAZOWIECKIE
Wynagrodz_brutto7 Wynagrodz_brutto numeric 0 14 MAZOWIECKIE
Bezrobocie7 Bezrobocie numeric 0 14 MAZOWIECKIE
Małżeństwa7 Małżeństwa numeric 0 14 MAZOWIECKIE
Inflacja7 Inflacja numeric 0 14 MAZOWIECKIE
Wydatki_7007 Wydatki_700 numeric 0 14 MAZOWIECKIE
Mieszkania._oddane7 Mieszkania._oddane numeric 0 14 MAZOWIECKIE
Pozwolenia_budowa7 Pozwolenia_budowa numeric 0 14 MAZOWIECKIE
Miesięczny_dochód7 Miesięczny_dochód numeric 0 14 MAZOWIECKIE
Rok8 Rok numeric 0 14 PODKARPACKIE
Liczba_sprzedanych8 Liczba_sprzedanych numeric 0 14 PODKARPACKIE
Powierzchnia_użytkowa8 Powierzchnia_użytkowa numeric 0 14 PODKARPACKIE
Średnia.cena.za.1m28 Średnia.cena.za.1m2 numeric 0 14 PODKARPACKIE
Mediana.cen8 Mediana.cen numeric 0 14 PODKARPACKIE
Średnia_cena_lokali8 Średnia_cena_lokali numeric 0 14 PODKARPACKIE
Wartość_lokali8 Wartość_lokali numeric 0 14 PODKARPACKIE
Wynagrodz_brutto8 Wynagrodz_brutto numeric 0 14 PODKARPACKIE
Bezrobocie8 Bezrobocie numeric 0 14 PODKARPACKIE
Małżeństwa8 Małżeństwa numeric 0 14 PODKARPACKIE
Inflacja8 Inflacja numeric 0 14 PODKARPACKIE
Wydatki_7008 Wydatki_700 numeric 0 14 PODKARPACKIE
Mieszkania._oddane8 Mieszkania._oddane numeric 0 14 PODKARPACKIE
Pozwolenia_budowa8 Pozwolenia_budowa numeric 0 14 PODKARPACKIE
Miesięczny_dochód8 Miesięczny_dochód numeric 0 14 PODKARPACKIE
Rok9 Rok numeric 0 14 PODLASKIE
Liczba_sprzedanych9 Liczba_sprzedanych numeric 0 14 PODLASKIE
Powierzchnia_użytkowa9 Powierzchnia_użytkowa numeric 0 14 PODLASKIE
Średnia.cena.za.1m29 Średnia.cena.za.1m2 numeric 0 14 PODLASKIE
Mediana.cen9 Mediana.cen numeric 0 14 PODLASKIE
Średnia_cena_lokali9 Średnia_cena_lokali numeric 0 14 PODLASKIE
Wartość_lokali9 Wartość_lokali numeric 0 14 PODLASKIE
Wynagrodz_brutto9 Wynagrodz_brutto numeric 0 14 PODLASKIE
Bezrobocie9 Bezrobocie numeric 0 14 PODLASKIE
Małżeństwa9 Małżeństwa numeric 0 14 PODLASKIE
Inflacja9 Inflacja numeric 0 14 PODLASKIE
Wydatki_7009 Wydatki_700 numeric 0 14 PODLASKIE
Mieszkania._oddane9 Mieszkania._oddane numeric 0 14 PODLASKIE
Pozwolenia_budowa9 Pozwolenia_budowa numeric 0 14 PODLASKIE
Miesięczny_dochód9 Miesięczny_dochód numeric 0 14 PODLASKIE
Rok10 Rok numeric 0 14 POMORSKIE
Liczba_sprzedanych10 Liczba_sprzedanych numeric 0 14 POMORSKIE
Powierzchnia_użytkowa10 Powierzchnia_użytkowa numeric 0 14 POMORSKIE
Średnia.cena.za.1m210 Średnia.cena.za.1m2 numeric 0 14 POMORSKIE
Mediana.cen10 Mediana.cen numeric 0 14 POMORSKIE
Średnia_cena_lokali10 Średnia_cena_lokali numeric 0 14 POMORSKIE
Wartość_lokali10 Wartość_lokali numeric 0 14 POMORSKIE
Wynagrodz_brutto10 Wynagrodz_brutto numeric 0 14 POMORSKIE
Bezrobocie10 Bezrobocie numeric 0 14 POMORSKIE
Małżeństwa10 Małżeństwa numeric 0 14 POMORSKIE
Inflacja10 Inflacja numeric 0 14 POMORSKIE
Wydatki_70010 Wydatki_700 numeric 0 14 POMORSKIE
Mieszkania._oddane10 Mieszkania._oddane numeric 0 14 POMORSKIE
Pozwolenia_budowa10 Pozwolenia_budowa numeric 0 14 POMORSKIE
Miesięczny_dochód10 Miesięczny_dochód numeric 0 14 POMORSKIE
Rok11 Rok numeric 0 14 ŚWIĘTOKRZYSKIE
Liczba_sprzedanych11 Liczba_sprzedanych numeric 0 14 ŚWIĘTOKRZYSKIE
Powierzchnia_użytkowa11 Powierzchnia_użytkowa numeric 0 14 ŚWIĘTOKRZYSKIE
Średnia.cena.za.1m211 Średnia.cena.za.1m2 numeric 0 14 ŚWIĘTOKRZYSKIE
Mediana.cen11 Mediana.cen numeric 0 14 ŚWIĘTOKRZYSKIE
Średnia_cena_lokali11 Średnia_cena_lokali numeric 0 14 ŚWIĘTOKRZYSKIE
Wartość_lokali11 Wartość_lokali numeric 0 14 ŚWIĘTOKRZYSKIE
Wynagrodz_brutto11 Wynagrodz_brutto numeric 0 14 ŚWIĘTOKRZYSKIE
Bezrobocie11 Bezrobocie numeric 0 14 ŚWIĘTOKRZYSKIE
Małżeństwa11 Małżeństwa numeric 0 14 ŚWIĘTOKRZYSKIE
Inflacja11 Inflacja numeric 0 14 ŚWIĘTOKRZYSKIE
Wydatki_70011 Wydatki_700 numeric 0 14 ŚWIĘTOKRZYSKIE
Mieszkania._oddane11 Mieszkania._oddane numeric 0 14 ŚWIĘTOKRZYSKIE
Pozwolenia_budowa11 Pozwolenia_budowa numeric 0 14 ŚWIĘTOKRZYSKIE
Miesięczny_dochód11 Miesięczny_dochód numeric 0 14 ŚWIĘTOKRZYSKIE
Rok12 Rok numeric 0 14 WIELKOPOLSKIE
Liczba_sprzedanych12 Liczba_sprzedanych numeric 0 14 WIELKOPOLSKIE
Powierzchnia_użytkowa12 Powierzchnia_użytkowa numeric 0 14 WIELKOPOLSKIE
Średnia.cena.za.1m212 Średnia.cena.za.1m2 numeric 0 14 WIELKOPOLSKIE
Mediana.cen12 Mediana.cen numeric 0 14 WIELKOPOLSKIE
Średnia_cena_lokali12 Średnia_cena_lokali numeric 0 14 WIELKOPOLSKIE
Wartość_lokali12 Wartość_lokali numeric 0 14 WIELKOPOLSKIE
Wynagrodz_brutto12 Wynagrodz_brutto numeric 0 14 WIELKOPOLSKIE
Bezrobocie12 Bezrobocie numeric 0 14 WIELKOPOLSKIE
Małżeństwa12 Małżeństwa numeric 0 14 WIELKOPOLSKIE
Inflacja12 Inflacja numeric 0 14 WIELKOPOLSKIE
Wydatki_70012 Wydatki_700 numeric 0 14 WIELKOPOLSKIE
Mieszkania._oddane12 Mieszkania._oddane numeric 0 14 WIELKOPOLSKIE
Pozwolenia_budowa12 Pozwolenia_budowa numeric 0 14 WIELKOPOLSKIE
Miesięczny_dochód12 Miesięczny_dochód numeric 0 14 WIELKOPOLSKIE
Rok13 Rok numeric 0 14 WARMIŃSKO_MAZURSKIE
Liczba_sprzedanych13 Liczba_sprzedanych numeric 0 14 WARMIŃSKO_MAZURSKIE
Powierzchnia_użytkowa13 Powierzchnia_użytkowa numeric 0 14 WARMIŃSKO_MAZURSKIE
Średnia.cena.za.1m213 Średnia.cena.za.1m2 numeric 0 14 WARMIŃSKO_MAZURSKIE
Mediana.cen13 Mediana.cen numeric 0 14 WARMIŃSKO_MAZURSKIE
Średnia_cena_lokali13 Średnia_cena_lokali numeric 0 14 WARMIŃSKO_MAZURSKIE
Wartość_lokali13 Wartość_lokali numeric 0 14 WARMIŃSKO_MAZURSKIE
Wynagrodz_brutto13 Wynagrodz_brutto numeric 0 14 WARMIŃSKO_MAZURSKIE
Bezrobocie13 Bezrobocie numeric 0 14 WARMIŃSKO_MAZURSKIE
Małżeństwa13 Małżeństwa numeric 0 14 WARMIŃSKO_MAZURSKIE
Inflacja13 Inflacja numeric 0 14 WARMIŃSKO_MAZURSKIE
Wydatki_70013 Wydatki_700 numeric 0 14 WARMIŃSKO_MAZURSKIE
Mieszkania._oddane13 Mieszkania._oddane numeric 0 14 WARMIŃSKO_MAZURSKIE
Pozwolenia_budowa13 Pozwolenia_budowa numeric 0 14 WARMIŃSKO_MAZURSKIE
Miesięczny_dochód13 Miesięczny_dochód numeric 0 14 WARMIŃSKO_MAZURSKIE
Rok14 Rok numeric 0 14 ZACHODNIOPOMORSKIE
Liczba_sprzedanych14 Liczba_sprzedanych numeric 0 14 ZACHODNIOPOMORSKIE
Powierzchnia_użytkowa14 Powierzchnia_użytkowa numeric 0 14 ZACHODNIOPOMORSKIE
Średnia.cena.za.1m214 Średnia.cena.za.1m2 numeric 0 14 ZACHODNIOPOMORSKIE
Mediana.cen14 Mediana.cen numeric 0 14 ZACHODNIOPOMORSKIE
Średnia_cena_lokali14 Średnia_cena_lokali numeric 0 14 ZACHODNIOPOMORSKIE
Wartość_lokali14 Wartość_lokali numeric 0 14 ZACHODNIOPOMORSKIE
Wynagrodz_brutto14 Wynagrodz_brutto numeric 0 14 ZACHODNIOPOMORSKIE
Bezrobocie14 Bezrobocie numeric 0 14 ZACHODNIOPOMORSKIE
Małżeństwa14 Małżeństwa numeric 0 14 ZACHODNIOPOMORSKIE
Inflacja14 Inflacja numeric 0 14 ZACHODNIOPOMORSKIE
Wydatki_70014 Wydatki_700 numeric 0 14 ZACHODNIOPOMORSKIE
Mieszkania._oddane14 Mieszkania._oddane numeric 0 14 ZACHODNIOPOMORSKIE
Pozwolenia_budowa14 Pozwolenia_budowa numeric 0 14 ZACHODNIOPOMORSKIE
Miesięczny_dochód14 Miesięczny_dochód numeric 0 14 ZACHODNIOPOMORSKIE

2. Wizualizacja i Analiza zmiennych w podziale na Województwa

2.1 Wykresy Linowe

library(ggplot2)
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.3.3
# Tworzenie wykresów liniowych dla wszystkich zmiennych w każdej ramce danych
for (region_name in names(data_list)) {
  data <- data_list[[region_name]]
  
  # Iteracja przez wszystkie kolumny (poza "Rok", która będzie osią X)
  for (col_name in colnames(data)[-1]) {
    # Tworzenie wykresu
    plot <- ggplot(data, aes_string(x = "Rok", y = col_name)) +
      geom_line(color = "blue") +
      theme_minimal() +
      labs(
        title = paste("Wykres dla", col_name, "w regionie", region_name),
        x = "Rok",
        y = col_name
      )
    
    # Zapis wykresu do pliku (opcjonalnie) lub wyświetlenie
    print(plot)
  }
}
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

library(ggplot2)

# Lista nazw kolumn (zmiennych) do iteracji
variable_names <- colnames(data_list[[1]])[-1]  # Załóżmy, że kolumna "Rok" jest w każdej ramce danych

# Iteracja przez wszystkie zmienne
for (variable_name in variable_names) {
  
  # Tworzenie zbiorczej ramki danych dla danej zmiennej
  combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
    data <- data_list[[region_name]]
    data.frame(
      Rok = data[["Rok"]],
      Wartość = data[[variable_name]],
      Region = region_name
    )
  }))
  
  # Tworzenie wykresu dla danej zmiennej
  plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
    geom_line() +
    theme_minimal() +
    labs(
      title = paste("Wykres dla zmiennej:", variable_name),
      x = "Rok",
      y = variable_name
    )
  
  # Wyświetlenie wykresu
  print(plot)
}

1. Liczba_sprzedanych

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Liczba_sprzedanych"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Liczba_sprzedanych'),
    x = 'Rok',
    y = 'Liczba_sprzedanych'
  )




print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
library(knitr)
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Liczba_sprzedanych'")
Statystyki opisowe dla zmiennej ‘Liczba_sprzedanych’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 21473.286 21107.0 5870.6545 14136 33606 14
KUJAWSKO_POMORSKIE 7636.357 7481.0 2065.1281 4454 10639 14
LUBELSKIE 5602.214 5449.5 2279.9850 2950 8990 14
LUBUSKIE 5129.929 5046.0 1269.4297 3512 6933 14
MAZOWIECKIE 30302.429 34209.0 9510.2805 17046 43304 14
MAŁOPOLSKIE 15159.071 14051.0 4455.5374 9206 22952 14
OPOLSKIE 3282.143 3093.0 868.6602 2181 4453 14
PODKARPACKIE 4150.357 3513.0 2048.5028 1480 7595 14
PODLASKIE 4562.071 4417.0 1509.6835 2496 7154 14
POMORSKIE 18096.571 18012.5 5575.8446 8968 26367 14
WARMIŃSKO_MAZURSKIE 7380.286 7063.0 1850.8795 5055 10089 14
WIELKOPOLSKIE 14542.786 13701.5 4536.0854 8903 22247 14
ZACHODNIOPOMORSKIE 8436.071 8308.5 1679.6986 5859 11678 14
ŁÓDZKIE 8485.214 8048.5 3177.2109 3852 13501 14
ŚWIĘTOKRZYSKIE 2262.214 2088.0 849.1341 985 3581 14

2. Powierzchnia_użytkowa

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Powierzchnia_użytkowa"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Powierzchnia_użytkowa'),
    x = 'Rok',
    y = 'Powierzchnia_użytkowa'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
library(knitr)
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Powierzchnia_użytkowa'")
Statystyki opisowe dla zmiennej ‘Powierzchnia_użytkowa’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 1184739.7 1166527.1 332991.75 766093.8 1886647.0 14
KUJAWSKO_POMORSKIE 391549.8 384970.7 105793.42 227609.6 554379.6 14
LUBELSKIE 293409.9 285910.9 118067.76 155034.5 462302.9 14
LUBUSKIE 270291.2 264851.0 69235.28 181949.6 367625.5 14
MAZOWIECKIE 1749036.6 1912800.0 570064.03 961549.1 2546477.4 14
MAŁOPOLSKIE 795151.6 726318.2 240252.04 485136.7 1208748.6 14
OPOLSKIE 178755.2 168680.4 48820.27 114732.5 247661.5 14
PODKARPACKIE 224704.2 180799.5 115291.76 75777.7 408252.4 14
PODLASKIE 235851.1 225445.0 77879.76 132953.3 375563.2 14
POMORSKIE 995266.3 982591.9 316697.61 487259.3 1494232.1 14
WARMIŃSKO_MAZURSKIE 380892.0 364418.2 100523.64 257505.1 531073.2 14
WIELKOPOLSKIE 814753.6 745225.8 261810.73 498182.1 1253588.1 14
ZACHODNIOPOMORSKIE 449099.2 431151.7 91104.65 312974.6 624831.7 14
ŁÓDZKIE 430736.0 407618.0 155746.09 199049.1 677240.5 14
ŚWIĘTOKRZYSKIE 115278.9 104464.7 44111.40 49135.8 185752.2 14

3. Miesięczny_dochód

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Miesięczny_dochód"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Miesięczny_dochód'),
    x = 'Rok',
    y = 'Miesięczny_dochód'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Miesięczny_dochód'")
Statystyki opisowe dla zmiennej ‘Miesięczny_dochód’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 1733.731 1606.105 452.6426 1239.17 2739.90 14
KUJAWSKO_POMORSKIE 1544.111 1382.590 442.8368 1108.94 2534.15 14
LUBELSKIE 1468.379 1367.860 439.5289 978.49 2461.44 14
LUBUSKIE 1654.417 1544.865 474.7911 1153.06 2745.66 14
MAZOWIECKIE 2035.965 1846.485 469.9396 1601.97 3208.99 14
MAŁOPOLSKIE 1610.324 1457.685 490.8983 1107.54 2789.94 14
OPOLSKIE 1495.866 1450.325 302.6984 1115.73 2128.76 14
PODKARPACKIE 1324.744 1194.200 406.0204 907.28 2280.97 14
PODLASKIE 1619.856 1502.700 475.2813 1103.20 2681.20 14
POMORSKIE 1630.394 1604.695 309.0178 1243.12 2291.82 14
WARMIŃSKO_MAZURSKIE 1530.942 1433.970 434.7732 1096.87 2428.06 14
WIELKOPOLSKIE 1561.446 1503.315 411.9283 1125.74 2495.02 14
ZACHODNIOPOMORSKIE 1673.039 1567.750 469.5398 1186.91 2800.81 14
ŁÓDZKIE 1632.252 1512.125 432.0110 1178.73 2555.46 14
ŚWIĘTOKRZYSKIE 1476.675 1369.320 408.9410 1026.36 2418.76 14

4. Pozwolenia_budowa

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Pozwolenia_budowa"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Pozwolenia_budowa'),
    x = 'Rok',
    y = 'Pozwolenia_budowa'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )


kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Pozwolenia_budowa'")
Statystyki opisowe dla zmiennej ‘Pozwolenia_budowa’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 21359.500 20619.5 6036.778 13561 29805 14
KUJAWSKO_POMORSKIE 10021.929 9085.5 3033.350 6252 16220 14
LUBELSKIE 9073.071 8405.0 2584.029 5687 15368 14
LUBUSKIE 5379.643 5732.5 1526.925 2766 8044 14
MAZOWIECKIE 43029.071 43484.0 10118.078 26501 62568 14
MAŁOPOLSKIE 21788.929 23130.0 4507.729 13548 29745 14
OPOLSKIE 2943.857 2583.5 1021.992 1682 4895 14
PODKARPACKIE 9995.857 9823.0 2187.369 7071 13532 14
PODLASKIE 6279.429 5570.5 2141.934 3806 10444 14
POMORSKIE 19282.929 18708.0 6605.778 10636 31296 14
WARMIŃSKO_MAZURSKIE 6895.786 6449.5 2114.808 3743 10865 14
WIELKOPOLSKIE 23758.571 23307.0 6577.647 14275 37193 14
ZACHODNIOPOMORSKIE 10091.429 9951.0 3134.997 5279 13949 14
ŁÓDZKIE 12463.071 11220.5 4955.871 7403 22694 14
ŚWIĘTOKRZYSKIE 4628.429 4505.0 1033.443 2985 6596 14

5. Mieszkania._oddane

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Mieszkania._oddane"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Mieszkania._oddane'),
    x = 'Rok',
    y = 'Mieszkania._oddane'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Mieszkania._oddane'")
Statystyki opisowe dla zmiennej ‘Mieszkania._oddane’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 9513.643 9452.5 5245.9972 157 16913 14
KUJAWSKO_POMORSKIE 3505.857 2785.5 1398.6157 1939 6265 14
LUBELSKIE 3157.071 3138.0 1115.0635 1643 4983 14
LUBUSKIE 1762.429 1629.0 743.0970 332 2883 14
MAZOWIECKIE 20797.500 18583.0 10920.6878 312 35308 14
MAŁOPOLSKIE 9989.929 10451.5 3115.0015 5352 14222 14
OPOLSKIE 889.500 732.0 512.3340 161 1773 14
PODKARPACKIE 2404.643 2434.0 1403.8305 254 4548 14
PODLASKIE 3016.929 2582.5 966.8825 2036 4887 14
POMORSKIE 9520.643 9003.0 4832.0810 649 15813 14
WARMIŃSKO_MAZURSKIE 2271.071 2433.5 1579.5034 38 4936 14
WIELKOPOLSKIE 9898.143 10052.0 4607.3794 639 16961 14
ZACHODNIOPOMORSKIE 3873.429 3435.0 2176.6839 529 7071 14
ŁÓDZKIE 3898.286 3101.5 2067.1724 1535 7365 14
ŚWIĘTOKRZYSKIE 1026.500 851.5 411.8840 568 1688 14

6. Wydatki_700

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Wydatki_700"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Wydatki_700'),
    x = 'Rok',
    y = 'Wydatki_700'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Wydatki_700'")
Statystyki opisowe dla zmiennej ‘Wydatki_700’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 6807887 5676406.0 5401080.7 1486237.69 22034049 14
KUJAWSKO_POMORSKIE 2228121 1923638.9 1909506.5 239413.23 7026111 14
LUBELSKIE 7319308 6589009.2 3027448.6 1748865.80 14198353 14
LUBUSKIE 1114756 708827.9 903800.7 253641.25 3297951 14
MAZOWIECKIE 25082308 21470909.3 13035256.1 5760884.52 53946285 14
MAŁOPOLSKIE 2284567 1566711.4 1693281.3 981252.20 6046041 14
OPOLSKIE 2741549 2193002.0 2814045.5 164821.03 9367141 14
PODKARPACKIE 2998259 1106674.3 5495165.0 431816.35 21164133 14
PODLASKIE 1939308 1431040.7 2194086.6 276362.92 8369383 14
POMORSKIE 24801997 21513722.9 14352531.2 7369897.44 63884435 14
WARMIŃSKO_MAZURSKIE 8514501 9060096.3 5629257.0 1081024.51 17343080 14
WIELKOPOLSKIE 3547439 2914526.7 3111401.9 888055.35 12297578 14
ZACHODNIOPOMORSKIE 2004455 1664268.7 1035980.4 1120911.29 4497421 14
ŁÓDZKIE 23568477 24465042.8 8671909.3 12414990.66 40209498 14
ŚWIĘTOKRZYSKIE 2786008 655091.8 3276902.7 37646.84 9172178 14

7. Inflacja

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Inflacja"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Inflacja'),
    x = 'Rok',
    y = 'Inflacja'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Inflacja'")
Statystyki opisowe dla zmiennej ‘Inflacja’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 103.4000 102.50 4.091642 99.2 113.4 14
KUJAWSKO_POMORSKIE 103.6714 102.45 4.523686 99.1 115.6 14
LUBELSKIE 103.3857 102.25 4.458330 98.8 115.0 14
LUBUSKIE 103.7786 102.65 4.226688 99.6 113.6 14
MAZOWIECKIE 103.4500 102.30 4.265560 99.1 113.5 14
MAŁOPOLSKIE 103.8643 102.75 4.496256 99.2 114.9 14
OPOLSKIE 103.5786 102.55 4.532817 98.9 115.8 14
PODKARPACKIE 103.5714 102.75 4.259908 98.9 113.6 14
PODLASKIE 103.3786 102.35 4.333621 98.7 114.1 14
POMORSKIE 103.5286 102.35 4.251955 99.2 113.9 14
WARMIŃSKO_MAZURSKIE 103.6643 102.85 4.291245 99.2 113.9 14
WIELKOPOLSKIE 103.8143 102.70 4.525969 98.9 115.2 14
ZACHODNIOPOMORSKIE 103.5714 102.50 4.303921 99.1 113.1 14
ŁÓDZKIE 103.6857 102.70 4.677912 98.8 116.1 14
ŚWIĘTOKRZYSKIE 103.6643 102.55 4.597593 98.3 115.7 14

8. Małżeństwa

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Małżeństwa"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Małżeństwa'),
    x = 'Rok',
    y = 'Małżeństwa'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Małżeństwa'")
Statystyki opisowe dla zmiennej ‘Małżeństwa’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 13557.214 13733.5 1429.8839 10816 16390 14
KUJAWSKO_POMORSKIE 9850.286 10243.5 1427.8138 7552 12447 14
LUBELSKIE 10219.000 10538.5 1688.2033 7344 13302 14
LUBUSKIE 4706.857 4905.0 695.0926 3511 5926 14
MAZOWIECKIE 25649.714 26039.0 2379.4521 21179 30488 14
MAŁOPOLSKIE 17310.929 17674.0 1622.2877 14463 20381 14
OPOLSKIE 4509.071 4750.0 777.6363 3173 5693 14
PODKARPACKIE 10448.143 10863.0 1665.1295 7579 13213 14
PODLASKIE 5671.500 5934.0 840.2825 4094 7003 14
POMORSKIE 11592.929 11895.0 1162.7893 9430 13604 14
WARMIŃSKO_MAZURSKIE 6508.643 6694.5 1049.6645 4767 8370 14
WIELKOPOLSKIE 17329.000 17604.0 2085.6023 13982 21191 14
ZACHODNIOPOMORSKIE 7835.857 8207.0 966.0329 6148 9521 14
ŁÓDZKIE 11206.357 11430.5 1549.6931 8755 14513 14
ŚWIĘTOKRZYSKIE 5707.143 5879.0 1087.7036 3929 7833 14

9. Bezrobocie

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Bezrobocie"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Bezrobocie'),
    x = 'Rok',
    y = 'Bezrobocie'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Bezrobocie'")
Statystyki opisowe dla zmiennej ‘Bezrobocie’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 8.078571 6.45 3.652855 4.4 13.5 14
KUJAWSKO_POMORSKIE 12.078571 10.95 4.305842 7.1 18.2 14
LUBELSKIE 10.442857 9.55 2.641595 7.5 14.4 14
LUBUSKIE 9.385714 7.55 4.701368 4.3 15.9 14
MAZOWIECKIE 7.100000 6.30 2.650109 4.1 11.1 14
MAŁOPOLSKIE 7.242857 5.95 2.906416 4.1 11.5 14
OPOLSKIE 9.350000 8.15 3.441768 5.8 14.4 14
PODKARPACKIE 11.821429 10.70 3.255097 7.9 16.4 14
PODLASKIE 10.385714 9.40 3.208608 6.9 15.1 14
POMORSKIE 8.114286 6.50 3.615960 4.5 13.4 14
WARMIŃSKO_MAZURSKIE 14.257143 12.95 5.217532 8.3 21.6 14
WIELKOPOLSKIE 5.628571 4.30 2.831262 2.8 9.8 14
ZACHODNIOPOMORSKIE 11.635714 9.70 4.835224 6.7 18.2 14
ŁÓDZKIE 8.942857 7.60 3.445334 5.4 14.1 14
ŚWIĘTOKRZYSKIE 11.307143 9.80 3.457092 7.8 16.6 14

10. Wynagrodz_brutto

library(ggplot2)

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Wynagrodz_brutto"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Wynagrodz_brutto'),
    x = 'Rok',
    y = 'Wynagrodz_brutto'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Wynagrodz_brutto'")
Statystyki opisowe dla zmiennej ‘Wynagrodz_brutto’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 4918.791 4520.175 1343.262 3412.37 7850.30 14
KUJAWSKO_POMORSKIE 4169.871 3779.590 1144.224 2910.82 6721.48 14
LUBELSKIE 4293.716 3918.100 1087.892 3099.60 6774.52 14
LUBUSKIE 4212.411 3842.925 1183.749 2920.43 6882.46 14
MAZOWIECKIE 5832.480 5382.255 1381.408 4279.55 8928.60 14
MAŁOPOLSKIE 4677.626 4212.505 1402.336 3169.90 7736.56 14
OPOLSKIE 4392.129 4035.975 1160.265 3137.29 6975.81 14
PODKARPACKIE 4087.359 3745.420 1066.550 2877.43 6436.15 14
PODLASKIE 4278.016 3886.570 1141.273 3019.83 6805.04 14
POMORSKIE 4790.967 4385.685 1248.459 3383.58 7550.99 14
WARMIŃSKO_MAZURSKIE 4066.004 3711.070 1070.636 2879.97 6447.09 14
WIELKOPOLSKIE 4349.301 4009.115 1098.507 3126.36 6772.06 14
ZACHODNIOPOMORSKIE 4424.172 4050.265 1165.091 3120.15 7007.40 14
ŁÓDZKIE 4424.828 4033.520 1200.207 3066.02 7052.93 14
ŚWIĘTOKRZYSKIE 4171.399 3790.530 1086.577 2971.58 6585.16 14

11. Wartość_lokali

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Wartość_lokali"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Wartość_lokali'),
    x = 'Rok',
    y = 'Wartość_lokali'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Wartość_lokali'")
Statystyki opisowe dla zmiennej ‘Wartość_lokali’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 6020946469 5273647727 2987862793 3259701514 11791882431 14
KUJAWSKO_POMORSKIE 1635696711 1337207326 807513717 711752507 3157935812 14
LUBELSKIE 1491951029 1204338663 925589178 588908153 3448964854 14
LUBUSKIE 922155514 733030042 458364037 466448828 1752603414 14
MAZOWIECKIE 13432465446 12992505534 6320385582 6535273044 26272463694 14
MAŁOPOLSKIE 5632585816 4212087669 3060333970 2772107808 12626012621 14
OPOLSKIE 631037470 468876013 318340769 339954251 1209117778 14
PODKARPACKIE 1017150434 644442505 739259635 215433360 2191359732 14
PODLASKIE 1145180149 906694241 621361718 512007161 2332078025 14
POMORSKIE 6204225806 5216866424 3188427294 2412289648 11363785145 14
WARMIŃSKO_MAZURSKIE 1520638543 1177654737 722964258 871294170 2790628305 14
WIELKOPOLSKIE 4031173771 3206609593 2095198087 2170694590 8671257857 14
ZACHODNIOPOMORSKIE 2030576673 1747991805 710232327 1216154271 3224861980 14
ŁÓDZKIE 1990607572 1460361281 1183334671 722081592 4284439004 14
ŚWIĘTOKRZYSKIE 513067674 363057929 311656923 153899232 1103778845 14

12. Średnia_cena_lokali

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Średnia_cena_lokali"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Średnia_cena_lokali'),
    x = 'Rok',
    y = 'Średnia_cena_lokali'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Średnia_cena_lokali'")
Statystyki opisowe dla zmiennej ‘Średnia_cena_lokali’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 268415.5 236340.5 63888.90 220181 419625 14
KUJAWSKO_POMORSKIE 203696.2 177924.5 49251.38 159801 300555 14
LUBELSKIE 247214.1 221022.0 58703.72 198687 383645 14
LUBUSKIE 171262.9 145210.0 50852.87 129746 290889 14
MAZOWIECKIE 426693.2 384401.5 78661.54 359742 606698 14
MAŁOPOLSKIE 352497.5 311328.5 82011.82 295029 550105 14
OPOLSKIE 182799.1 159181.0 45022.64 145544 277384 14
PODKARPACKIE 212131.1 183262.0 60272.66 145563 335413 14
PODLASKIE 237672.1 209741.5 52387.18 197624 360779 14
POMORSKIE 324946.7 290069.0 74631.56 261035 472625 14
WARMIŃSKO_MAZURSKIE 197152.1 172570.0 48100.34 158507 302934 14
WIELKOPOLSKIE 264346.4 239851.5 51067.35 226358 389772 14
ZACHODNIOPOMORSKIE 238056.6 207231.0 60051.49 186900 361856 14
ŁÓDZKIE 219255.5 188147.0 53247.65 175731 333134 14
ŚWIĘTOKRZYSKIE 210696.4 190841.0 53444.22 152045 321333 14

13. Mediana.cen

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Mediana.cen"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Mediana.cen'),
    x = 'Rok',
    y = 'Mediana.cen'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Mediana.cen'")
Statystyki opisowe dla zmiennej ‘Mediana.cen’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 4875.429 4357.5 1162.9032 3952 7666 14
KUJAWSKO_POMORSKIE 3968.429 3435.0 997.9708 3131 5917 14
LUBELSKIE 4822.357 4363.5 1203.3563 3707 7609 14
LUBUSKIE 3346.071 2878.0 988.5170 2504 5619 14
MAZOWIECKIE 7147.429 6784.0 1114.5198 5988 9828 14
MAŁOPOLSKIE 6728.214 6024.0 1507.3748 5658 10457 14
OPOLSKIE 3352.786 2990.0 909.5383 2620 5390 14
PODKARPACKIE 4094.643 3581.0 1113.4404 2808 6234 14
PODLASKIE 4721.000 4187.5 1001.6641 3967 7217 14
POMORSKIE 5552.929 4901.5 1273.7335 4465 8261 14
WARMIŃSKO_MAZURSKIE 3807.357 3269.0 955.9378 3100 5978 14
WIELKOPOLSKIE 4613.357 4199.5 866.0042 4027 6771 14
ZACHODNIOPOMORSKIE 4348.429 3888.0 942.9449 3491 6429 14
ŁÓDZKIE 4236.286 3521.5 1228.3763 3230 6783 14
ŚWIĘTOKRZYSKIE 4066.643 3632.5 1135.8461 2786 6518 14

14. Średnia.cena.za.1m2

# Tworzenie zbiorczej ramki danych dla zmiennej
combined_data <- do.call(rbind, lapply(names(data_list), function(region_name) {
  data <- data_list[[region_name]]
  data.frame(
    Rok = data[['Rok']],
    Wartość = data[["Średnia.cena.za.1m2"]],
    Region = region_name
  )
}))

# Tworzenie wykresu dla zmiennej
plot <- ggplot(combined_data, aes(x = Rok, y = Wartość, color = Region)) +
  geom_line() +
  theme_minimal() +
  labs(
    title = paste('Wykres dla zmiennej:', 'Średnia.cena.za.1m2'),
    x = 'Rok',
    y = 'Średnia.cena.za.1m2'
  )

# Wyświetlenie wykresu
print(plot)

# Obliczanie statystyk opisowych dla zmiennej
statystyki_opisowe <- combined_data %>%
  group_by(Region) %>%
  summarise(
    Średnia = mean(Wartość, na.rm = TRUE),
    Mediana = median(Wartość, na.rm = TRUE),
    Odchylenie_standardowe = sd(Wartość, na.rm = TRUE),
    Minimum = min(Wartość, na.rm = TRUE),
    Maksimum = max(Wartość, na.rm = TRUE),
    Liczba_obserwacji = sum(!is.na(Wartość))
  )

# Wyświetlenie wyników
kable(statystyki_opisowe, caption = "Statystyki opisowe dla zmiennej 'Średnia.cena.za.1m2'")
Statystyki opisowe dla zmiennej ‘Średnia.cena.za.1m2’
Region Średnia Mediana Odchylenie_standardowe Minimum Maksimum Liczba_obserwacji
DOLNOŚLĄSKIE 4870.714 4302.5 1143.7429 3987 7607 14
KUJAWSKO_POMORSKIE 3975.214 3453.0 978.2868 3127 6010 14
LUBELSKIE 4718.500 4210.0 1155.3358 3753 7460 14
LUBUSKIE 3252.286 2766.5 946.7521 2480 5461 14
MAZOWIECKIE 7400.214 6861.0 1229.3471 6227 10317 14
MAŁOPOLSKIE 6717.571 5989.0 1496.1542 5653 10446 14
OPOLSKIE 3363.857 2991.0 826.0300 2698 5217 14
PODKARPACKIE 4066.000 3560.5 1073.9333 2843 6330 14
PODLASKIE 4593.786 4024.5 1025.7120 3851 7101 14
POMORSKIE 5913.357 5288.0 1298.2268 4804 8571 14
WARMIŃSKO_MAZURSKIE 3827.786 3391.0 915.3116 3111 5959 14
WIELKOPOLSKIE 4725.786 4351.5 876.8234 4113 6917 14
ZACHODNIOPOMORSKIE 4482.286 3868.5 1182.8788 3493 6950 14
ŁÓDZKIE 4316.929 3651.0 1135.5692 3422 6797 14
ŚWIĘTOKRZYSKIE 4141.929 3766.0 1035.5856 3094 6513 14

3. Wizualizacja i Analiza zmiennych Polski

3.1 Wyskres Liniowy

3.2 Macierz Korelacji

library(corrplot)
## corrplot 0.92 loaded
library(readxl)
## Warning: pakiet 'readxl' został zbudowany w wersji R 4.3.3
library(dplyr)
library(car)
## Ładowanie wymaganego pakietu: carData
## 
## Dołączanie pakietu: 'car'
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     recode
polska_data_clean <- polska_data_clean %>%
  mutate(across(everything(), ~ as.numeric(gsub(",", ".", gsub(" ", "", .)))))

cor_matrix <- cor(polska_data_clean, use = "complete.obs")

print(cor_matrix)
##                              Rok Liczba_sprzedanych Powierzchnia_użytkowa
## Rok                    1.0000000          0.9806255             0.9790669
## Liczba_sprzedanych     0.9806255          1.0000000             0.9996717
## Powierzchnia_użytkowa  0.9790669          0.9996717             1.0000000
## Średnia cena za 1m2    0.8506941          0.8168796             0.8161366
## Mediana cen            0.8683000          0.8347299             0.8338932
## Średnia_cena_lokali    0.8506941          0.8168796             0.8161366
## Wartość_lokali         0.9487189          0.9415841             0.9413346
## Wynagrodz_brutto       0.9451184          0.9135824             0.9117784
## Bezrobocie            -0.9285756         -0.9446565            -0.9411559
## Małżeństwa            -0.8661921         -0.7822748            -0.7832763
## Inflacja               0.5839116          0.5347003             0.5353886
## Wydatki_700            0.7290334          0.6956669             0.6984632
## Mieszkania _oddane     0.9600460          0.9564464             0.9596971
## Pozwolenia_budowa      0.8393765          0.8886044             0.8949082
## Miesięczny_dochód      0.9447658          0.9189789             0.9166869
##                       Średnia cena za 1m2 Mediana cen Średnia_cena_lokali
## Rok                             0.8506941   0.8683000           0.8506941
## Liczba_sprzedanych              0.8168796   0.8347299           0.8168796
## Powierzchnia_użytkowa           0.8161366   0.8338932           0.8161366
## Średnia cena za 1m2             1.0000000   0.9989577           1.0000000
## Mediana cen                     0.9989577   1.0000000           0.9989577
## Średnia_cena_lokali             1.0000000   0.9989577           1.0000000
## Wartość_lokali                  0.9619977   0.9702724           0.9619977
## Wynagrodz_brutto                0.9715212   0.9795877           0.9715212
## Bezrobocie                     -0.7025478  -0.7175568          -0.7025478
## Małżeństwa                     -0.7839565  -0.8027598          -0.7839565
## Inflacja                        0.8724113   0.8563026           0.8724113
## Wydatki_700                     0.8534698   0.8552522           0.8534698
## Mieszkania _oddane              0.8004546   0.8146763           0.8004546
## Pozwolenia_budowa               0.6714231   0.6806196           0.6714231
## Miesięczny_dochód               0.9634307   0.9717688           0.9634307
##                       Wartość_lokali Wynagrodz_brutto Bezrobocie Małżeństwa
## Rok                        0.9487189        0.9451184 -0.9285756 -0.8661921
## Liczba_sprzedanych         0.9415841        0.9135824 -0.9446565 -0.7822748
## Powierzchnia_użytkowa      0.9413346        0.9117784 -0.9411559 -0.7832763
## Średnia cena za 1m2        0.9619977        0.9715212 -0.7025478 -0.7839565
## Mediana cen                0.9702724        0.9795877 -0.7175568 -0.8027598
## Średnia_cena_lokali        0.9619977        0.9715212 -0.7025478 -0.7839565
## Wartość_lokali             1.0000000        0.9901501 -0.8388749 -0.8182348
## Wynagrodz_brutto           0.9901501        1.0000000 -0.8162017 -0.8567413
## Bezrobocie                -0.8388749       -0.8162017  1.0000000  0.6590540
## Małżeństwa                -0.8182348       -0.8567413  0.6590540  1.0000000
## Inflacja                   0.7529257        0.7753349 -0.4293408 -0.5567550
## Wydatki_700                0.8249853        0.8500144 -0.5662775 -0.7056464
## Mieszkania _oddane         0.9064554        0.8903629 -0.9244883 -0.8034289
## Pozwolenia_budowa          0.8012729        0.7390910 -0.8896703 -0.5829333
## Miesięczny_dochód          0.9878249        0.9970751 -0.8309424 -0.8411350
##                         Inflacja Wydatki_700 Mieszkania _oddane
## Rok                    0.5839116   0.7290334          0.9600460
## Liczba_sprzedanych     0.5347003   0.6956669          0.9564464
## Powierzchnia_użytkowa  0.5353886   0.6984632          0.9596971
## Średnia cena za 1m2    0.8724113   0.8534698          0.8004546
## Mediana cen            0.8563026   0.8552522          0.8146763
## Średnia_cena_lokali    0.8724113   0.8534698          0.8004546
## Wartość_lokali         0.7529257   0.8249853          0.9064554
## Wynagrodz_brutto       0.7753349   0.8500144          0.8903629
## Bezrobocie            -0.4293408  -0.5662775         -0.9244883
## Małżeństwa            -0.5567550  -0.7056464         -0.8034289
## Inflacja               1.0000000   0.7763986          0.5746064
## Wydatki_700            0.7763986   1.0000000          0.7496763
## Mieszkania _oddane     0.5746064   0.7496763          1.0000000
## Pozwolenia_budowa      0.4810244   0.5572831          0.9123186
## Miesięczny_dochód      0.7560297   0.8595361          0.8962684
##                       Pozwolenia_budowa Miesięczny_dochód
## Rok                           0.8393765         0.9447658
## Liczba_sprzedanych            0.8886044         0.9189789
## Powierzchnia_użytkowa         0.8949082         0.9166869
## Średnia cena za 1m2           0.6714231         0.9634307
## Mediana cen                   0.6806196         0.9717688
## Średnia_cena_lokali           0.6714231         0.9634307
## Wartość_lokali                0.8012729         0.9878249
## Wynagrodz_brutto              0.7390910         0.9970751
## Bezrobocie                   -0.8896703        -0.8309424
## Małżeństwa                   -0.5829333        -0.8411350
## Inflacja                      0.4810244         0.7560297
## Wydatki_700                   0.5572831         0.8595361
## Mieszkania _oddane            0.9123186         0.8962684
## Pozwolenia_budowa             1.0000000         0.7430588
## Miesięczny_dochód             0.7430588         1.0000000
corrplot(cor_matrix, method = "color", type = "full", 
         tl.col = "black", tl.srt = 45, title = "Macierz korelacji", mar = c(0, 0, 1, 0))

Regresja liniowa, choć niekoniecznie musi być idealnym modelem do analizy złożonego rynku nieruchomości, stanowi dobrą bazę wyjściową do wstępnej oceny zależności między zmiennymi. W naszym projekcie stosujemy tę metodę, aby sprawdzić, jak dobrze dopasowuje się do naszych danych z lat 2010–2023 i jakie wyniki generuje w kontekście wpływu zmiennych objaśniających na ceny nieruchomości. Analiza wyników pozwoli nam ocenić, czy regresja liniowa jest odpowiednia dla tego typu problemu, czy też wymaga uzupełnienia lub zastąpienia bardziej zaawansowanymi podejściami.

### model chyba bezużyteczny
library(readxl)
library(dplyr)
library(car)


# Pierwszy model
attach(polska_data_clean)
model1<-lm(`Średnia cena za 1m2`~Bezrobocie+Małżeństwa+Wydatki_700+Pozwolenia_budowa)

summary(model1)
## 
## Call:
## lm(formula = `Średnia cena za 1m2` ~ Bezrobocie + Małżeństwa + 
##     Wydatki_700 + Pozwolenia_budowa)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -744.34 -366.09  -27.35  259.80  768.58 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)  
## (Intercept)        5.719e+03  2.915e+03   1.962   0.0814 .
## Bezrobocie        -5.227e+01  1.127e+02  -0.464   0.6537  
## Małżeństwa        -1.211e-02  1.073e-02  -1.129   0.2883  
## Wydatki_700        1.428e-05  5.375e-06   2.657   0.0262 *
## Pozwolenia_budowa  1.665e-03  5.902e-03   0.282   0.7842  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 573.5 on 9 degrees of freedom
## Multiple R-squared:  0.8245, Adjusted R-squared:  0.7466 
## F-statistic: 10.57 on 4 and 9 DF,  p-value: 0.00187
# Obliczenie VIF dla zmiennych objaśniających w modelu
vif_values <- vif(model1)

# Wyświetlenie wyników
print(vif_values)
##        Bezrobocie        Małżeństwa       Wydatki_700 Pozwolenia_budowa 
##          5.606085          2.508270          2.131365          4.947929

Metoda a posteriori

#Drugi model

polska_data_clean <- polska_data_clean %>%
  mutate(across(everything(), ~ as.numeric(gsub(",", ".", gsub(" ", "", .)))))

model2 <- lm(`Średnia cena za 1m2` ~ 
             Wynagrodz_brutto + Bezrobocie + Małżeństwa, 
             data = polska_data_clean)

summary(model2)
## 
## Call:
## lm(formula = `Średnia cena za 1m2` ~ Wynagrodz_brutto + Bezrobocie + 
##     Małżeństwa, data = polska_data_clean)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -200.38 -132.42  -12.68  151.94  228.50 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      -3.877e+03  1.241e+03  -3.125  0.01078 *  
## Wynagrodz_brutto  1.290e+00  9.944e-02  12.968  1.4e-07 ***
## Bezrobocie        1.016e+02  2.540e+01   4.001  0.00251 ** 
## Małżeństwa        1.101e-02  4.051e-03   2.719  0.02161 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 175.2 on 10 degrees of freedom
## Multiple R-squared:  0.9818, Adjusted R-squared:  0.9763 
## F-statistic: 179.8 on 3 and 10 DF,  p-value: 5.371e-09
vif(model2)
## Wynagrodz_brutto       Bezrobocie       Małżeństwa 
##         6.488628         3.051261         3.829238

Metodą a posteriori usunęliśmy zmienne: liczba_sprzedanych, powierzchnia_użytkowa, inflacja, wydatki_700, mieszkania_oddane, pozwolenia_budowa, oraz miesięczny_dochód. Dzięki temu model jest bardziej zoptymalizowany pod kątem analizy danych i interpretacji wyników.

Model w 98,18% wyjaśnia naszą zmienną zależną (średnia cena za 1 m^2).

Na podstawie statystyki F stwierdzamy, że model jako całość jest istotny statystycznie, co oznacza, że przynajmniej jedna z wybranych zmiennych objaśniających znacząco wpływa na zmienną zależną.

Wszystkie wartości VIF są poniżej 10 (Wynagrodz_brutto: 6.49, Bezrobocie: 3.05, Małżeństwa: 3.83), co oznacza brak istotnej współliniowości między zmiennymi.

Mimo że model cechuje się bardzo dobrym dopasowaniem do danych, dążymy do poszukiwania jeszcze lepszych rozwiązań, które mogą w jeszcze większym stopniu uwzględniać złożoność analizowanego rynku nieruchomości i dostarczać bardziej precyzyjnych prognoz.

Model Random Forest

Sprawdzamy użyteczność modelu Random Forest do naszej analizy ze względu na jego zdolność do uchwycenia złożonych i nieliniowych zależności między zmiennymi, co jest szczególnie istotne w przypadku zmiennych ekonomicznych, takich jak ceny nieruchomości. Random Forest cechuje się wysoką odpornością na nadmierne dopasowanie dzięki losowej selekcji zmiennych i obserwacji, co zwiększa jego ogólną niezawodność. Dodatkowo, umożliwia on ocenę ważności poszczególnych zmiennych, co pozwala lepiej zrozumieć czynniki wpływające na średnią cenę za 1m², co jest kluczowym celem naszego projektu.

# Lista zmiennych
variables <- c(
  "Miesięczny_dochód", "Inflacja", "Pozwolenia_budowa", "Wydatki_700", 
  "Małżeństwa", "Liczba_sprzedanych", "Mieszkania _oddane", "Powierzchnia_użytkowa", "Bezrobocie"
)


library(randomForest)
## Warning: pakiet 'randomForest' został zbudowany w wersji R 4.3.2
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
## 
## Dołączanie pakietu: 'randomForest'
## Następujący obiekt został zakryty z 'package:ggplot2':
## 
##     margin
## Następujący obiekt został zakryty z 'package:gridExtra':
## 
##     combine
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     combine
model_rf <- randomForest(`Średnia cena za 1m2` ~ ., data = polska_data_clean[, variables])
print(model_rf)
## 
## Call:
##  randomForest(formula = `Średnia cena za 1m2` ~ ., data = polska_data_clean[,      variables]) 
##                Type of random forest: regression
##                      Number of trees: 500
## No. of variables tried at each split: 3
## 
##           Mean of squared residuals: 275918
##                     % Var explained: 77.1
summary(model_rf)
##                 Length Class  Mode     
## call              3    -none- call     
## type              1    -none- character
## predicted        14    -none- numeric  
## mse             500    -none- numeric  
## rsq             500    -none- numeric  
## oob.times        14    -none- numeric  
## importance        9    -none- numeric  
## importanceSD      0    -none- NULL     
## localImportance   0    -none- NULL     
## proximity         0    -none- NULL     
## ntree             1    -none- numeric  
## mtry              1    -none- numeric  
## forest           11    -none- list     
## coefs             0    -none- NULL     
## y                14    -none- numeric  
## test              0    -none- NULL     
## inbag             0    -none- NULL     
## terms             3    terms  call
importance(model_rf)
##                       IncNodePurity
## Miesięczny_dochód         3087572.4
## Inflacja                  1741467.1
## Pozwolenia_budowa          501193.1
## Wydatki_700               1802314.0
## Małżeństwa                1170100.0
## Liczba_sprzedanych        2055386.9
## Mieszkania _oddane        1647580.2
## Powierzchnia_użytkowa     2377779.7
## Bezrobocie                 811311.8
varImpPlot(model_rf)

% Variance explained: 74.37% – model wyjaśnia 74.37% zmienności zmiennej zależnej (Średnia cena za 1m²). Wynik sugeruje, że model jest dobrze dopasowany, ale istnieje przestrzeń na dalszą poprawę, np. poprzez optymalizację parametrów.

Najważniejsze zmienne w modelu:

-Miesięczny_dochód (2,679,809.8): Najważniejsza zmienna w modelu, co jest logiczne, ponieważ dochody gospodarstw domowych mają bezpośredni wpływ na popyt i ceny nieruchomości.

-Powierzchnia_użytkowa (2,094,875.8): Wielkość nieruchomości ma duży wpływ na cenę za metr kwadratowy.

-Liczba_sprzedanych (2,114,817.1): Liczba sprzedanych nieruchomości wpływa na dynamikę rynku i popyt, co przekłada się na ceny nieruchomości.

-Inflacja (1,996,279.6): Wydatki konsumpcyjne mogą wpływać na decyzje zakupowe, co przekłada się na ceny nieruchomości.

3.3. Statystyki opisowe:

library(knitr)

# Funkcja obliczająca statystyki opisowe dla każdej kolumny numerycznej
summary_stats <- function(x) {
  c(
    Średnia = mean(x, na.rm = TRUE),
    Mediana = median(x, na.rm = TRUE),
    Minimum = min(x, na.rm = TRUE),
    Maksimum = max(x, na.rm = TRUE),
    Odchylenie_Standardowe = sd(x, na.rm = TRUE)
  )
}

# Wybranie tylko kolumn numerycznych
numeric_data <- polska_data_clean[sapply(polska_data_clean, is.numeric)]

# Obliczanie statystyk dla każdej kolumny
stats <- t(sapply(numeric_data, summary_stats))

# Przekształcenie wyników w ramkę danych
stats_df <- data.frame(Kolumna = rownames(stats), stats)
rownames(stats_df) <- NULL

# Formatowanie danych liczbowych do bardziej czytelnej formy
stats_df[-1] <- lapply(stats_df[-1], function(x) format(round(x, 2), big.mark = " ", scientific = FALSE))

# Wyświetlenie tabeli
kable(stats_df, caption = "Podstawowe statystyki opisowe dla każdej zmiennej")
Podstawowe statystyki opisowe dla każdej zmiennej
Kolumna Średnia Mediana Minimum Maksimum Odchylenie_Standardowe
Rok 2 016.50 2 016.50 2 010.00 2 023.0 4.18
Liczba_sprzedanych 171 689.00 172 192.50 103 459.00 244 672.0 50 093.65
Powierzchnia_użytkowa 9 299 870.37 9 238 132.35 5 554 022.80 13 481 831.1 2 773 896.19
Średnia cena za 1m2 5 242.86 4 674.00 4 358.00 7 906.0 1 139.11
Mediana cen 4 814.43 4 309.50 3 976.00 7 317.0 1 068.83
Średnia_cena_lokali 5 242.86 4 674.00 4 358.00 7 906.0 1 139.11
Wartość_lokali 51 151 739 078.86 43 194 052 491.50 25 303 061 771.00 103 694 809 479.0 25 747 865 079.13
Wynagrodz_brutto 4 821.21 4 409.20 3 435.00 7 595.3 1 244.95
Bezrobocie 8.64 7.40 5.10 13.4 3.34
Małżeństwa 183 807.36 188 660.00 145 045.00 228 337.0 23 476.00
Inflacja 103.59 102.45 99.10 114.4 4.36
Wydatki_700 127 855 615.60 119 432 523.40 71 831 683.14 228 551 677.8 43 201 780.75
Mieszkania _oddane 100 440.93 98 271.50 56 925.00 143 971.0 34 107.75
Pozwolenia_budowa 225 364.07 226 587.50 138 837.00 341 203.0 59 948.67
Miesięczny_dochód 1 658.46 1 536.35 1 192.82 2 678.3 441.75

3.4. Trend i stacjonarność

if (!require(Kendall)) install.packages("Kendall", dependencies = TRUE)
## Ładowanie wymaganego pakietu: Kendall
## Warning: pakiet 'Kendall' został zbudowany w wersji R 4.3.3
if (!require(tseries)) install.packages("tseries", dependencies = TRUE)
## Ładowanie wymaganego pakietu: tseries
## Warning: pakiet 'tseries' został zbudowany w wersji R 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
if (!require(knitr)) install.packages("knitr", dependencies = TRUE)
if (!require(kableExtra)) install.packages("kableExtra", dependencies = TRUE)
## Ładowanie wymaganego pakietu: kableExtra
## Warning: pakiet 'kableExtra' został zbudowany w wersji R 4.3.3
## 
## Dołączanie pakietu: 'kableExtra'
## Następujący obiekt został zakryty z 'package:dplyr':
## 
##     group_rows
library(Kendall)
library(tseries)
library(knitr)
library(kableExtra)

# Funkcja do sprawdzenia trendu i stacjonarności
check_trend_and_stationarity <- function(data) {
  results <- data.frame(
    Zmienna = character(),
    Trend = character(),
    MannKendall_p_value = numeric(),
    Stacjonarnosc = character(),
    ADF_p_value = numeric(),
    stringsAsFactors = FALSE
  )
  
  for (column_name in names(data)[-1]) {  # Pomijamy 'Rok'
    variable <- data[[column_name]]
    
    # Test Mann-Kendalla na obecność trendu
    mk_result <- MannKendall(variable)
    trend <- ifelse(mk_result$sl < 0.05, "Trend obecny", "Trend nieobecny")
    
    # Test Dickeya-Fullera na stacjonarność
    adf_result <- adf.test(variable, alternative = "stationary")
    stationarity <- ifelse(adf_result$p.value < 0.05, "Stacjonarna", "Niestacjonarna")
    
    # Dodawanie wyników do tabeli
    results <- rbind(results, data.frame(
      Zmienna = column_name,
      Trend = trend,
      MannKendall_p_value = mk_result$sl,
      Stacjonarnosc = stationarity,
      ADF_p_value = adf_result$p.value
    ))
  }
  
  return(results)
}

# Wywołanie funkcji dla polska_data_clean
trend_stationarity_results <- check_trend_and_stationarity(polska_data_clean)
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
## Warning in adf.test(variable, alternative = "stationary"): p-value greater than
## printed p-value
# Prezentacja wyników w tabeli
kable(trend_stationarity_results, format = "html", align = "c") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE, position = "center") %>%
  column_spec(1, bold = TRUE, color = "white", background = "blue") %>%
  column_spec(2:5, width = "20em")
Zmienna Trend MannKendall_p_value Stacjonarnosc ADF_p_value
Liczba_sprzedanych Trend obecny 0.0000072 Niestacjonarna 0.8142143
Powierzchnia_użytkowa Trend obecny 0.0000072 Niestacjonarna 0.7759617
Średnia cena za 1m2 Trend obecny 0.0000317 Niestacjonarna 0.9900000
Mediana cen Trend obecny 0.0000196 Niestacjonarna 0.9900000
Średnia_cena_lokali Trend obecny 0.0000317 Niestacjonarna 0.9900000
Wartość_lokali Trend obecny 0.0000008 Niestacjonarna 0.9900000
Wynagrodz_brutto Trend obecny 0.0000008 Niestacjonarna 0.9900000
Bezrobocie Trend obecny 0.0000944 Niestacjonarna 0.7456752
Małżeństwa Trend obecny 0.0014973 Niestacjonarna 0.6513507
Inflacja Trend nieobecny 0.1253111 Niestacjonarna 0.9900000
Wydatki_700 Trend obecny 0.0021715 Niestacjonarna 0.5175454
Mieszkania _oddane Trend obecny 0.0000317 Niestacjonarna 0.1554069
Pozwolenia_budowa Trend obecny 0.0010209 Niestacjonarna 0.6364664
Miesięczny_dochód Trend obecny 0.0000008 Niestacjonarna 0.9900000

Na podstawie uzyskanych wyników, stwierdzamy, że zmienne są niestacjonarne i wykazują trend

3.5. Autokorelacja

# Instalacja wymaganych pakietów
if (!require(lmtest)) install.packages("lmtest", dependencies = TRUE)
## Ładowanie wymaganego pakietu: lmtest
## Warning: pakiet 'lmtest' został zbudowany w wersji R 4.3.3
## Ładowanie wymaganego pakietu: zoo
## Warning: pakiet 'zoo' został zbudowany w wersji R 4.3.2
## 
## Dołączanie pakietu: 'zoo'
## Następujące obiekty zostały zakryte z 'package:base':
## 
##     as.Date, as.Date.numeric
if (!require(tseries)) install.packages("tseries", dependencies = TRUE)
if (!require(knitr)) install.packages("knitr", dependencies = TRUE)
if (!require(kableExtra)) install.packages("kableExtra", dependencies = TRUE)

library(lmtest)
library(tseries)
library(knitr)
library(kableExtra)

# Funkcja do sprawdzania autokorelacji
check_autocorrelation <- function(data, max_lag = 10, alpha = 0.05) {
  results <- data.frame(
    Zmienna = character(),
    Autokorelacja = character(),
    Istotne_rzędy = character(),
    stringsAsFactors = FALSE
  )
  
  for (column_name in names(data)[-1]) {  # Pomijamy 'Rok'
    variable <- data[[column_name]]
    
    significant_lags <- c()
    
    # Sprawdzanie autokorelacji dla różnych lagów
    for (lag in 1:max_lag) {
      lb_test <- Box.test(variable, lag = lag, type = "Ljung-Box")
      if (lb_test$p.value < alpha) {
        significant_lags <- c(significant_lags, lag)
      }
    }
    
    # Interpretacja wyników
    autocorrelation <- ifelse(length(significant_lags) > 0, "Wykazuje autokorelację", "Brak autokorelacji")
    significant_lags_text <- ifelse(length(significant_lags) > 0, paste(significant_lags, collapse = ", "), "Brak")
    
    # Dodanie wyników do tabeli
    results <- rbind(results, data.frame(
      Zmienna = column_name,
      Autokorelacja = autocorrelation,
      Istotne_rzędy = significant_lags_text
    ))
  }
  
  return(results)
}

# Wywołanie funkcji dla polska_data_clean
autocorrelation_results <- check_autocorrelation(polska_data_clean)

# Prezentacja wyników w tabeli
kable(autocorrelation_results, format = "html", align = "c") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE, position = "center") %>%
  column_spec(1, bold = TRUE, color = "white", background = "blue")
Zmienna Autokorelacja Istotne_rzędy
Liczba_sprzedanych Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Powierzchnia_użytkowa Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Średnia cena za 1m2 Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Mediana cen Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Średnia_cena_lokali Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Wartość_lokali Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Wynagrodz_brutto Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Bezrobocie Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Małżeństwa Wykazuje autokorelację 1, 2
Inflacja Wykazuje autokorelację 1, 2, 8, 9, 10
Wydatki_700 Wykazuje autokorelację 1, 2, 10
Mieszkania _oddane Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Pozwolenia_budowa Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Miesięczny_dochód Wykazuje autokorelację 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
# Iteracja przez wszystkie kolumny (poza 'Rok')
for (column_name in names(polska_data_clean)[-1]) {  # Pomijamy 'Rok'
  # Pobieranie danych dla danej zmiennej
  acf_data <- polska_data_clean[[column_name]]
  
  # Wyświetlenie komunikatu o aktualnej zmiennej
  print(paste("Autokorelacja dla zmiennej:", column_name))
  
  # Tworzenie wykresu autokorelacji
  acf(acf_data, main = paste("Autokorelacja -", column_name))
}
## [1] "Autokorelacja dla zmiennej: Liczba_sprzedanych"

## [1] "Autokorelacja dla zmiennej: Powierzchnia_użytkowa"

## [1] "Autokorelacja dla zmiennej: Średnia cena za 1m2"

## [1] "Autokorelacja dla zmiennej: Mediana cen"

## [1] "Autokorelacja dla zmiennej: Średnia_cena_lokali"

## [1] "Autokorelacja dla zmiennej: Wartość_lokali"

## [1] "Autokorelacja dla zmiennej: Wynagrodz_brutto"

## [1] "Autokorelacja dla zmiennej: Bezrobocie"

## [1] "Autokorelacja dla zmiennej: Małżeństwa"

## [1] "Autokorelacja dla zmiennej: Inflacja"

## [1] "Autokorelacja dla zmiennej: Wydatki_700"

## [1] "Autokorelacja dla zmiennej: Mieszkania _oddane"

## [1] "Autokorelacja dla zmiennej: Pozwolenia_budowa"

## [1] "Autokorelacja dla zmiennej: Miesięczny_dochód"

Oblicz funkcję autokorelacji (ACF) i częściowej autokorelacji (PACF),

3.6. Rozkład danych

# Instalacja wymaganych pakietów
if (!require(knitr)) install.packages("knitr", dependencies = TRUE)
if (!require(kableExtra)) install.packages("kableExtra", dependencies = TRUE)

library(knitr)
library(kableExtra)

# Funkcja do sprawdzania normalności
check_normality <- function(data, alpha = 0.05) {
  results <- data.frame(
    Zmienna = character(),
    P_value = numeric(),
    Normalnosc = character(),
    stringsAsFactors = FALSE
  )
  
  for (column_name in names(data)[-1]) {  # Pomijamy 'Rok'
    variable <- data[[column_name]]
    
    # Test Shapiro-Wilka (zalecany dla mniejszych próbek)
    sw_test <- shapiro.test(variable)
    
    # Interpretacja wyniku
    normality <- ifelse(sw_test$p.value > alpha, "Rozkład normalny", "Brak normalności")
    
    # Dodanie wyników do tabeli
    results <- rbind(results, data.frame(
      Zmienna = column_name,
      P_value = sw_test$p.value,
      Normalnosc = normality
    ))
  }
  
  return(results)
}

# Wywołanie funkcji dla polska_data_clean
normality_results <- check_normality(polska_data_clean)

# Prezentacja wyników w tabeli
kable(normality_results, format = "html", align = "c") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),
                full_width = FALSE, position = "center") %>%
  column_spec(1, bold = TRUE, color = "white", background = "blue")
Zmienna P_value Normalnosc
Liczba_sprzedanych 0.2706247 Rozkład normalny
Powierzchnia_użytkowa 0.2926034 Rozkład normalny
Średnia cena za 1m2 0.0022093 Brak normalności
Mediana cen 0.0027645 Brak normalności
Średnia_cena_lokali 0.0022093 Brak normalności
Wartość_lokali 0.0543314 Rozkład normalny
Wynagrodz_brutto 0.1148649 Rozkład normalny
Bezrobocie 0.0161841 Brak normalności
Małżeństwa 0.5078690 Rozkład normalny
Inflacja 0.0089752 Brak normalności
Wydatki_700 0.1517724 Rozkład normalny
Mieszkania _oddane 0.0408115 Brak normalności
Pozwolenia_budowa 0.7149388 Rozkład normalny
Miesięczny_dochód 0.1021046 Rozkład normalny

test normalności Shapiro-Wilka

III. Prognozy

library(scales) 
## Warning: pakiet 'scales' został zbudowany w wersji R 4.3.2
library(forecast)
## Warning: pakiet 'forecast' został zbudowany w wersji R 4.3.3
# Funkcja do tworzenia czytelniejszych wykresów
plot_forecast <- function(model, forecast_obj, title, x_label, y_label) {
  plot(
    forecast_obj,
    main = title,
    xlab = x_label,
    ylab = y_label,
    col.main = "darkblue",
    col.lab = "darkred",
    col.axis = "darkgray",
    lwd = 2, # Grubość linii
    fcol = "blue", # Kolor prognozy
    flwd = 2, # Grubość linii prognozy
    shadecols = c("lightblue", "lightgray") # Kolory przedziałów ufności
  )
  grid() # Siatka
}

Miesięczny dochód

# Prognoza dla "Miesięczny_dochód"
arima_model_dochod <- auto.arima(polska_data_clean$Miesięczny_dochód)
forecast_dochod <- forecast(arima_model_dochod, h = 10)
plot_forecast(arima_model_dochod, forecast_dochod,
              title = "Prognoza: Miesięczny dochód",
              x_label = "Czas (lata)", y_label = "Dochód (zł)")

# Wyświetlenie diagnostyki modelu
arima_model <- auto.arima(polska_data_clean$Miesięczny_dochód)
summary(arima_model)  # Zawiera AIC, BIC i inne statystyki
## Series: polska_data_clean$Miesięczny_dochód 
## ARIMA(0,2,0) 
## 
## sigma^2 = 5742:  log likelihood = -68.96
## AIC=139.92   AICc=140.32   BIC=140.41
## 
## Training set error measures:
##                    ME     RMSE      MAE      MPE     MAPE      MASE     ACF1
## Training set 28.09925 70.15567 40.41553 1.256107 2.041851 0.3536917 0.079119
# Analiza reszt
checkresiduals(arima_model)  # Wykres reszt i test normalności

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,2,0)
## Q* = 1.0474, df = 3, p-value = 0.7898
## 
## Model df: 0.   Total lags used: 3

Powyższy model ARIMA(0,2,0) dobrze dopasowuje się do danych, co widać po niskich wartościach MAPE (2%) i braku autokorelacji w resztach (p-value > 0.05).

Liczba_sprzedanych

# Prognoza dla "Liczba_sprzedanych"
arima_model_liczba <- auto.arima(polska_data_clean$Liczba_sprzedanych)
forecast_liczba <- forecast(arima_model_liczba, h = 10)
plot_forecast(arima_model_liczba, forecast_liczba,
              title = "Prognoza: Liczba sprzedanych nieruchomości",
              x_label = "Czas (lata)", y_label = "Liczba sprzedanych")

# Wyświetlenie diagnostyki modelu
summary(arima_model_liczba)  # Zawiera AIC, BIC i inne statystyki
## Series: polska_data_clean$Liczba_sprzedanych 
## ARIMA(1,1,0) with drift 
## 
## Coefficients:
##           ar1      drift
##       -0.5993  10730.136
## s.e.   0.2035   2119.709
## 
## sigma^2 = 166384451:  log likelihood = -140.63
## AIC=287.25   AICc=289.92   BIC=288.95
## 
## Training set error measures:
##                     ME     RMSE     MAE        MPE     MAPE     MASE       ACF1
## Training set -201.5495 11433.75 9114.23 -0.4962457 5.017866 0.603896 -0.2535475
# Analiza reszt
checkresiduals(arima_model_liczba)  # Wykres reszt i test normalności

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(1,1,0) with drift
## Q* = 3.8305, df = 3, p-value = 0.2804
## 
## Model df: 1.   Total lags used: 4

Miary błędów sugerują, że model jest dobrze dopasowany, z dokładnością na poziomie około 5% (MAPE). Brak autokorelacji w resztach oraz ich losowy charakter wskazują, że model dobrze oddaje strukturę danych.

Inflacja

# Prognoza dla "Inflacja"
arima_model_inflacja <- auto.arima(polska_data_clean$Inflacja)
forecast_inflacja <- forecast(arima_model_inflacja, h = 10)
plot_forecast(arima_model_inflacja, forecast_inflacja,
              title = "Prognoza: Inflacja",
              x_label = "Czas (lata)", y_label = "Inflacja (%)")

# Wyświetlenie diagnostyki modelu
summary(forecast_inflacja)  # Zawiera AIC, BIC i inne statystyki
## 
## Forecast method: ARIMA(0,1,0)
## 
## Model Information:
## Series: polska_data_clean$Inflacja 
## ARIMA(0,1,0) 
## 
## sigma^2 = 9.216:  log likelihood = -32.88
## AIC=67.76   AICc=68.13   BIC=68.33
## 
## Error measures:
##                  ME     RMSE      MAE       MPE     MAPE      MASE       ACF1
## Training set 0.6359 2.925388 1.864471 0.5590874 1.737443 0.9322357 -0.1226776
## 
## Forecasts:
##    Point Forecast     Lo 80    Hi 80     Lo 95    Hi 95
## 15          111.4 107.50944 115.2906 105.44990 117.3501
## 16          111.4 105.89792 116.9021 102.98529 119.8147
## 17          111.4 104.66136 118.1386 101.09413 121.7059
## 18          111.4 103.61888 119.1811  99.49981 123.3002
## 19          111.4 102.70045 120.0996  98.09518 124.7048
## 20          111.4 101.87012 120.9299  96.82530 125.9747
## 21          111.4 101.10655 121.6934  95.65753 127.1425
## 22          111.4 100.39584 122.4042  94.57059 128.2294
## 23          111.4  99.72833 123.0717  93.54971 129.2503
## 24          111.4  99.09698 123.7030  92.58415 130.2159
# Analiza reszt
checkresiduals(forecast_inflacja)  # Wykres reszt i test normalności

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,0)
## Q* = 0.2648, df = 3, p-value = 0.9665
## 
## Model df: 0.   Total lags used: 3

Wyniki sugerują, że model ARIMA(0,1,0) jest dobrze dopasowany, na podstawie bardzo niskich wartościach MAPE (1.74%) i braku autokorelacji w resztach. Natomiast wartości prognoz mają jednakowe liczby w okresie prognostycznym, co jest mało realne. Warto poszukać innej, lepszej metody.

Wydatki_700

# Prognoza dla "Wydatki_700"
arima_model_wydatki <- auto.arima(polska_data_clean$Wydatki_700)
forecast_wydatki <- forecast(arima_model_wydatki, h = 10)
plot_forecast(arima_model_wydatki, forecast_wydatki,
              title = "Prognoza: Wydatki na poziomie 700+",
              x_label = "Czas (lata)", y_label = "Wydatki (zł)")

# Wyświetlenie diagnostyki modelu
summary(forecast_wydatki)  # Zawiera AIC, BIC i inne statystyki
## 
## Forecast method: ARIMA(0,1,0)
## 
## Model Information:
## Series: polska_data_clean$Wydatki_700 
## ARIMA(0,1,0) 
## 
## sigma^2 = 1.066e+15:  log likelihood = -243.36
## AIC=488.72   AICc=489.09   BIC=489.29
## 
## Error measures:
##                   ME     RMSE      MAE      MPE     MAPE      MASE       ACF1
## Training set 9935573 31458671 23724912 3.534334 19.15497 0.9288218 -0.2824579
## 
## Forecasts:
##    Point Forecast     Lo 80     Hi 80     Lo 95     Hi 95
## 15      228551678 186713882 270389474 164566290 292537065
## 16      228551678 169384099 287719256 138062675 319040680
## 17      228551678 156086489 301016866 117725736 339377620
## 18      228551678 144876086 312227270 100580903 356522453
## 19      228551678 134999522 322103834  85476002 371627353
## 20      228551678 126070426 331032930  71820128 385283228
## 21      228551678 117859274 339244081  59262255 397841100
## 22      228551678 110216521 346886835  47573673 409529683
## 23      228551678 103038290 354065066  36595516 420507840
## 24      228551678  96248950 360854405  26212117 430891239
# Analiza reszt
checkresiduals(forecast_wydatki)  # Wykres reszt i test normalności

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,0)
## Q* = 2.6738, df = 3, p-value = 0.4447
## 
## Model df: 0.   Total lags used: 3

Model ARIMA(0,1,0) jest bardzo prosty i zapewnia liniowe prognozy. Duża wariancja reszt oraz wysoka wartość RMSE i MAE wskazują, że model może być zbyt uproszczony. Wyniki sugerują poszukiwanie lepszej metody.