Analiza danych - raport końcowy
1. Wprowadzenie
1.1 Mieszkania
Rynek nieruchomości, a w szczególności sektor najmu mieszkań, stanowi jeden z najbardziej dynamicznych elementów współczesnej gospodarki. Wysoki popyt na lokale mieszkalne w dużych aglomeracjach sprawia, że ceny podlegają ciągłym wahaniom, zależnym od szeregu czynników – od lokalizacji i metrażu, po standard wykończenia czy dostępność udogodnień takich jak winda czy parking. Niniejszy raport skupia się na wielowymiarowej analizie danych rynkowych, wykorzystując zaawansowane metody statystyczne do zidentyfikowania kluczowych determinantów ceny oraz stworzenia modelu pozwalającego na rzetelne szacowanie kosztów najmu w oparciu o tysiące rzeczywistych ofert.
1.2 Opis bazy danych
Baza składa się z 27 kolumn (cech) opisujących 8845 ofert mieszkań. Poniżej znajduje się szczegółowy opis każdej zmiennej:
- city - miasto, w którym zlokalizowana jest nieruchomość (np. Szczecin).
- type - rodzaj budynku (np. blok mieszkalny, apartamentowiec, kamienica).
- squareMeters - powierzchnia całkowita mieszkania wyrażona w metrach kwadratowych.
- rooms - liczba pokoi w mieszkaniu.
- floor - piętro, na którym znajduje się oferowany lokal.
- floorCount - całkowita liczba pięter w budynku.
- buildYear - rok budowy budynku.
- latitude - szerokość geograficzna lokalizacji.
- longitude - długość geograficzna lokalizacji.
- centreDistance - odległość mieszkania od ścisłego centrum miasta (w km).
- poiCount - liczba punktów użyteczności publicznej (Points of Interest) w najbliższej okolicy.
- schoolDistance - odległość do najbliższej szkoły.
- clinicDistance - odległość do najbliższej przychodni/kliniki.
- postOfficeDistance - odległość do najbliższej placówki pocztowej.
- kindergartenDistance - odległość do najbliższego przedszkola.
- restaurantDistance - odległość do najbliższej restauracji.
- collegeDistance - odległość do najbliższej uczelni wyższej.
- pharmacyDistance - odległość do najbliższej apteki.
- ownership - forma własności lokalu (np. własność, spółdzielcze własnościowe).
- buildingMaterial - materiał, z którego wykonany jest budynek (np. cegła, wielka płyta).
- condition - stan techniczny mieszkania.
- hasParkingSpace - informacja, czy do mieszkania przynależy miejsce parkingowe (tak/nie).
- hasBalcony - informacja, czy mieszkanie posiada balkon (tak/nie).
- hasElevator - informacja, czy w budynku znajduje się winda (tak/nie).
- hasSecurity - informacja, czy budynek jest chroniony/monitorowany (tak/nie).
- hasStorageRoom - informacja, czy do mieszkania przynależy komórka lokatorska (tak/nie).
- price - cena całkowita nieruchomości (zmienna celu, którą będziemy przewidywać/analizo
1.3 Cel analizy
Naszym celem jest nie tylko identyfikacja głównych czynników wpływających na ceny najmu, lecz także wydobycie istotnych trendów rynkowych, które pozwolą nam doskonalić metody prognozowania i wyceny, zapewniając zainteresowanym stronom bardziej precyzyjne i dopasowane rozwiązania.
2. Data Wrangling, Cleansing
W ramach przygotowania zbioru do analizy przeprowadzono dwa kluczowe procesy:
- Data Wrangling – polega na przekształceniu, reorganizacji i mapowaniu surowych danych do formatu, który jest technicznie gotowy do analizy (np. zmiana typów zmiennych).
- Data Cleansing (Czyszczenie danych) – to identyfikacja i eliminacja błędów, niespójności oraz brakujących wartości.
Cel: Poprawa jakości danych, co jest fundamentem trafnych decyzji biznesowych.
2.1 Komputacja NA
Celem tego etapu jest identyfikacja, wizualizacja oraz uzupełnienie brakujących danych (NA). Braki danych mogą znacząco wpłynąć na jakość modelu predykcyjnego, dlatego kluczowe jest zrozumienie ich struktury – czy występują losowo, czy też wykazują specyficzne wzorce.
Mapa braków danych (Overview)
Na początek wykorzystujemy funkcję vis_miss z pakietu
naniar, aby uzyskać ogólny podgląd kompletności zbioru.
Wykres przedstawia “mapę” całego arkusza danych, gdzie czarne paski
oznaczają brakujące wartości. Pozwala to na szybką ocenę, które zmienne
są najbardziej problematyczne.
Interpretacja Mapy Braków Danych
Wykres przedstawia rozkład brakujących wartości w zbiorze danych liczącym ok. 8000 obserwacji. Ogólny stan kompletności danych jest bardzo wysoki, ponieważ braki stanowią jedynie 1,5% całego zbioru.
Analiza wzorców (Pattern Analysis)
Aby dokładniej zrozumieć strukturę braków, stosujemy funkcję md.pattern. Wykres ten (w kolorach niebieskim i różowym) pokazuje kombinacje braków.
Kolor niebieski: Dane dostępne.
Kolor różowy: Brak danych. Wizualizacja ta pomaga odpowiedzieć na pytanie: “Czy jeśli brakuje nam informacji o roku budowy, to zazwyczaj brakuje też informacji o piętrze?”.
Interpretacja md.pattern
Zbiór danych wykazuje znaczące braki w informacjach o roku budowy (25%) oraz piętrze (12%). Uzupełnieniem powyższej analizy jest wykres gg_miss_upset (tzw. Upset Plot). Pionowe słupki pokazują liczebność poszczególnych kombinacji brakujących zmiennych. Pozwala to szybko zidentyfikować najczęstsze “scenariusze” braków danych.
Interpretacja Upset Plot
Wykres wskazuje, że zdecydowanie najczęstszym scenariuszem braków jest brak wyłącznie roku budowy, co dotyczy aż 1906 rekordów. Kolejnym istotnym wzorcem jest brak samej informacji o piętrze (678 przypadków), podczas gdy współwystępowanie obu tych braków jednocześnie zdarza się znacznie rzadziej, bo w 194 ogłoszeniach. Pozostałe kombinacje brakujących danych, w tym odległości do punktów użyteczności publicznej (POI), mają charakter marginalny i występują incydentalnie.
Zależność braków od zmiennych kategorycznych
Poniższa mapa ciepła (gg_miss_fct) sprawdza, czy występowanie braków danych w zmiennych numerycznych jest skorelowane z obecnością windy w budynku (hasElevator). Pozwala to wykryć systematyczne błędy w zbieraniu danych (np. czy dla budynków bez windy częściej brakuje pewnych informacji).
Interpretacja mapy ciepła braków danych
Zestawienie pokazuje, że braki danych mają charakter systematyczny i są silnie skorelowane z konkretnymi cechami nieruchomości, takimi jak lokalizacja czy rodzaj zabudowy. Największa koncentracja luk występuje w przypadku roku budowy (buildYear), szczególnie w starszych kamienicach oraz budynkach pozbawionych windy. Pozostałe parametry techniczne zachowują wysoką kompletność we wszystkich segmentach, co potwierdza, że zbiór jest solidną bazą do dalszej analizy po uzupełnieniu kluczowych braków.
Imputacja danych (MICE)
Usuwanie rekordów z brakami danych wiązałoby się ze znaczną utratą informacji, co mogłoby obciążyć model. Dlatego po konsultacji z Panem Doktorem zdecydowaliśmy się tego nie robić.
2.2 Struktura danych
W tym kroku przyglądamy się technicznej stronie zbioru danych. Sprawdzamy typy zmiennych (czy liczby są liczbami, a tekst tekstem), rozkład wartości oraz różnorodność kategorii. Pozwala to wyłapać anomalie, takie jak np. literówki w nazwach miast czy nierealistyczne ceny.
Wizualizacja typów danych (Data Types)
Poniższy wykres (vis_dat) to “zdjęcie rentgenowskie”
naszego zbioru danych. Każda kolumna to zmienna, a kolory oznaczają typ
danych (np. liczby całkowite, napisy). * Pozwala szybko ocenić, czy R
poprawnie zinterpretował dane (np. czy cena nie jest traktowana jako
tekst). * Szare pola (jeśli są) wskazują miejsca brakujące (NA).
Interpretacja wizualizacji typów danych
Wykres vis_dat potwierdza poprawną interpretację typów danych w zbiorze, w którym dominują zmienne numeryczne (kolor niebieski) oraz tekstowe (kolor czerwony). Szare obszary w kolumnach buildYear oraz floor wyraźnie obrazują lokalizację braków danych, co jest w pełni spójne z wynikami uzyskanymi na poprzednich etapach analizy. Taki „rentgen” zbioru pozwala na szybką walidację formatu wszystkich parametrów dla blisko 8000 rekordów przed rozpoczęciem procesów statystycznych.
Analiza unikalnych wartości
Poniższa tabela pokazuje, ile unikalnych wartości ma każda zmienna.
Zmienne o małej liczbie unikalnych wartości (np. 2-5) to zazwyczaj zmienne kategoryczne (np. hasElevator, condition).
Zmienne o dużej liczbie wartości to zmienne ciągłe (np. price, latitude).
| Zmienna | Liczba_Unikalnych |
|---|---|
| ownership | 1 |
| hasParkingSpace | 2 |
| hasBalcony | 2 |
| hasSecurity | 2 |
| hasStorageRoom | 2 |
| buildingMaterial | 3 |
| condition | 3 |
| hasElevator | 3 |
| type | 4 |
| rooms | 6 |
| city | 15 |
| floor | 21 |
| floorCount | 29 |
| buildYear | 135 |
| poiCount | 165 |
| price | 515 |
| restaurantDistance | 994 |
| kindergartenDistance | 1010 |
| pharmacyDistance | 1021 |
| centreDistance | 1119 |
| schoolDistance | 1164 |
| postOfficeDistance | 1332 |
| squareMeters | 1505 |
| clinicDistance | 2089 |
| collegeDistance | 2854 |
| latitude | 7004 |
| longitude | 7078 |
Proporcje dla kluczowych kategorii
Poniżej sprawdzamy rozkład (liczność) dla najważniejszych zmiennych opisowych. Pozwala to ocenić, czy mamy do czynienia z niezbalansowanymi danymi (np. czy 99% mieszkań jest w stanie “Premium”).
Materiał budowy (buildingMaterial):
##
## brick concreteSlab
## 3505 4920 424
Stan mieszkania (condition):
##
## low premium
## 6329 32 2488
Dostępność windy (hasElevator):
##
## no yes
## 496 2717 5636
2.4 Data Cleansing (Transformacja zmiennych)
Na tym etapie przygotowujemy dane do modelowania. Większość algorytmów uczenia maszynowego nie potrafi przetwarzać surowego tekstu (np. “winda: tak”, “materiał: cegła”). Konieczna jest konwersja zmiennych kategorycznych (jakościowych) na format numeryczny.
Poniższe wykresy obrazują ten proces transformacji.
Wizualizacja przed i po transformacji
Pierwszy wykres pokazuje surowy zbiór danych. Kolor
czerwony/różowy oznacza zmienne tekstowe
(character), które są niezrozumiałe dla modelu
matematycznego. Drugi wykres pokazuje ten sam zbiór po zastosowaniu
funkcji czyszczącej. Wszystkie zmienne zostały przekonwertowane na
typy numeryczne (zielony/niebieski), co oznacza pełną
gotowość do analizy.
2.5 Segmentacja ofert (Klastrowanie)
W celu głębszego zrozumienia rynku, zamiast analizować każde mieszkanie z osobna, pogrupujemy je w podobne do siebie segmenty. Wykorzystamy algorytm K-Means.
Wybór optymalnej liczby grup
Metoda “Silhouette” wskazała, że najbardziej optymalnym podziałem zbioru jest podział na 2 klastry (najwyższa wartość na wykresie). Oznacza to, że rynek dzieli się naturalnie na dwie wyraźne kategorie ofert.
Wizualizacja segmentów (Cluster Plot)
Dokonujemy podziału rynku na 2 główne segmenty. Poniższy wykres pokazuje, jak te dwie grupy są odseparowane od siebie w przestrzeni cech.
Charakterystyka grup (Profilowanie)
Aby zrozumieć, czym różnią się te dwie grupy ( “Mieszkanie tanie” vs “drogie”), spójrzmy na średnie wartości.
| Cluster | Liczba_Ofert | Cena_Srednia | Metraz_Sredni | Pokoje_Srednie | Odleglosc_Centrum | Rok_Budowy |
|---|---|---|---|---|---|---|
| 1 | 1205 | 7525 | 93.2 | 3.7 | 3.66 | 1992 |
| 2 | 5395 | 3052 | 46.3 | 2.1 | 4.04 | 2000 |
Wnioski z segmentacji rynku:
Algorytm K-Means wyraźnie podzielił rynek na dwie odrębne kategorie, co ma kluczowe znaczenie dla strategii biznesowej i wyceny:
- Segment 1: “Premium / Duży Metraż” (Klaster 1)
- Stanowi mniejszą część rynku (ok. 18% ofert).
- Charakteryzuje się dużą powierzchnią (średnio 93 m²) i liczbą pokoi (blisko 4).
- Są to nieruchomości znacznie droższe (średnia cena pow. 7500 jednostek walutowych), celujące w klienta zamożnego lub duże rodziny.
- Co ciekawe, średni rok budowy (1992) jest niższy niż w drugim segmencie, co może sugerować, że do tej grupy trafiają też starsze, przestronne mieszkania w kamienicach lub starsze budownictwo wielorodzinne.
- Segment 2: “Standard / Inwestycyjny” (Klaster 2)
- Dominuje na rynku (ponad 80% ofert).
- To typowe mieszkania dwupokojowe o powierzchni ok. 46 m².
- Średnia cena (ok. 3000) jest ponad dwukrotnie niższa niż w segmencie premium.
- Są to mieszkania nowsze (średni rok 2000), co idealnie wpisuje się w profil popularnych mieszkań deweloperskich lub lokali pod wynajem (“kawalerki” i “dwójki”).
3. Wizualizacja danych
3.1 Wykresy pudełkowe
Wykresy pudełkowe wykorzstane zostały do graficznego przedstawienia analizy kluczowych czynników wpływających na zróżnicowanie stawek na rynku nieruchomości. Poprzez zestawienie danych w formie czytelnych wykresów, zidentyfikowane zostały zależności między ceną a standardem, lokalizacją oraz parametrami technicznymi lokali. Uzyskamy dzięki nim lepsze zrozumienie struktury rynku i wskazanie segmentów generujących najwyższe koszty najmu.
Interpretacja wykresów
Analiza wykresów pudełkowych pokazuje, że rodzaj zabudowy istotnie różnicuje ceny metra kwadratowego – apartamentowce są najdroższym segmentem, podczas gdy kamienice charakteryzują się największą liczbą ofert luksusowych, znacznie wykraczających poza średnią rynkową. Całkowity koszt najmu rośnie wraz z liczbą pokoi, jednak przy większych metrażach obserwujemy znacznie większą rozpiętość cenową i mniejszą przewidywalność kosztów niż w przypadku małych mieszkań. Kluczowym czynnikiem cenotwórczym pozostaje stan techniczny, który tworzy wyraźną strukturę wzrostową, choć atrakcyjna lokalizacja potrafi czasem zrównać cenę lokali o niższym standardzie z mieszkaniami typu premium.
3.2 Wykresy słupkowe
Wykresy słupkowe posłużyły do graficznej analizy ilościowej strukturze ofert oraz zestawieniu średnich wartości cenowych w kluczowych kategoriach. Umożliwi to precyzyjne wskazanie, typów nieruchomości dominujących w bazie danych oraz jak rozkładu kosztów najmu w zależności od wielkości mieszkania.
Interpretacja wykresów
Analiza struktury ogłoszeń wykazuje wyraźną dominację mieszkań dwu- i trzypokojowych, co sugeruje, że rynek jest zorientowany głównie na segment popularny i potrzeby rodzin. Zestawienie średnich cen potwierdza, że typ zabudowy jest silnym predyktorem kosztów – nowoczesne apartamentowce generują najwyższe stawki za metr kwadratowy, podczas gdy duży wolumen ofert w blokach mieszkalnych utrzymuje ceny na bardziej stabilnym, niższym poziomie. Wyraźne różnice między kategoriami wskazują, że standard budynku jest dla najemców kluczowym czynnikiem przy akceptacji wyższych stawek czynszu.
4. Analiza opisowa
4.1 Statystyki opisowe
Statystyki opisowe stanowią fundament analizy, pozwalając na liczbowe podsumowanie tendencji centralnej oraz rozproszenia kluczowych cech rynkowych. Dzięki nim możliwe jest precyzyjne określenie profilu typowej oferty oraz zidentyfikowanie skali zróżnicowania cenowego w badanym zbiorze danych.
| Zmienna | Min | Mediana | Średnia | Max | Odch. std. |
|---|---|---|---|---|---|
| centreDistance | 0.02 | 3.29 | 3.81 | 16.61 | 2.62 |
| price | 415.00 | 3000.00 | 3704.23 | 19500.00 | 2318.65 |
| rooms | 1.00 | 2.00 | 2.34 | 6.00 | 0.87 |
| squareMeters | 25.00 | 48.60 | 54.10 | 150.00 | 22.51 |
Interpretacja statystyk opisowych
Zestawienie liczbowe ujawnia istotne zróżnicowanie stawek najmu, gdzie wyraźna różnica między średnią a medianą cen sygnalizuje obecność ofert luksusowych zawyżających ogólny wynik. Wysokie odchylenie standardowe w relacji do ceny sugeruje, że rynek nie jest jednolity, a na ostateczny koszt silnie wpływają cechy specyficzne lokali. Przeciętny metraż i odległość od centrum wskazują na dominację standardowych mieszkań miejskich, przy czym szeroki zakres od wartości minimalnych do maksymalnych potwierdza dużą rozpiętość standardu dostępnych nieruchomości.
4.2 Korelacja
Analiza korelacji pozwala zrozumieć, które cechy nieruchomości mają najsilniejszy związek z jej ceną oraz jak poszczególne parametry wpływają na siebie nawzajem. Wykorzystanie macierzy korelacji ułatwia identyfikację kluczowych czynników cenotwórczych, co jest niezbędne do budowy rzetelnego modelu wyceny.
Interpretacja współczynników korelacji
Analiza współczynników korelacji potwierdza, że powierzchnia mieszkania oraz liczba pokoi są najsilniejszymi stymulantami ceny całkowitej, wykazując silny związek dodatni. Z kolei odległość od centrum miasta wykazuje wyraźną korelację ujemną, co oznacza, że wraz ze wzrostem dystansu od serca miasta ceny najmu tendencyjnie spadają. Pozostałe zmienne, takie jak rok budowy czy liczba punktów użyteczności publicznej, mają mniejszy, ale zauważalny wpływ, co sugeruje, że rynek wycenia nieruchomości wielokryterialnie, biorąc pod uwagę zarówno parametry techniczne, jak i lokalizacyjne.
5. Wnioskowanie statystyczne
W tej sekcji przejdziemy od opisu danych do weryfikacji hipotez. Sprawdzimy, czy obserwowane na wykresach różnice są istotne statystycznie oraz które parametry mieszkania mają realny wpływ na jego cenę.
5.1 Badanie normalności rozkładu
Większość klasycznych testów statystycznych zakłada, że dane mają
rozkład normalny. Sprawdzimy to dla zmiennej ceny całkowitej
(price). Ze względu na dużą liczbę obserwacji, zamiast
testu Shapiro-Wilka (który jest bardzo czuły przy dużych próbach),
wykorzystamy wizualizację gęstości oraz wykres kwantylowy (Q-Q
plot).
Interpretacja
Wykresy wyraźnie pokazują, że rozkład ceny odbiega od normalnego (jest prawostronnie skośny – mamy wiele “tanich” mieszkań i długi ogon ofert luksusowych). W związku z tym w dalszych testach będziemy stosować metody nieparametryczne lub opierać się na dużym rozmiarze próby.
5.2 Test istotności różnic (Kruskal-Wallis)
W sekcji 3.1 widzieliśmy różnice w cenach zależnie od rodzaju zabudowy (type). Teraz sprawdzimy, czy te różnice są istotne statystycznie. Użyjemy testu Kruskala-Wallisa (nieparametryczna alternatywa dla ANOVA).
Hipoteza H0: Średnie rangi cen we wszystkich typach budynków są takie same. Hipoteza H1: Przynajmniej jeden typ budynku różni się istotnie ceną od pozostałych.
##
## Kruskal-Wallis rank sum test
##
## data: price by type
## Kruskal-Wallis chi-squared = 967.5, df = 3, p-value < 2.2e-16
Interpretacja:
Ponieważ wartość \(p-value\) jest ekstremalnie niska (poniżej 0.05), odrzucamy hipotezę zerową. Rodzaj zabudowy ma statystycznie istotny wpływ na cenę najmu.
5.3 Modelowanie regresji liniowej
Sprawdzimy, które zmienne najlepiej przewidują cenę. Model regresji pozwoli nam określić siłę wpływu poszczególnych cech (np. metrażu czy odległości od centrum) na końcowy koszt.
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | -1831.253 | 1283.156 | -1.427 | 0.154 |
| squareMeters | 89.607 | 1.493 | 60.004 | 0.000 |
| rooms | -252.529 | 39.217 | -6.439 | 0.000 |
| centreDistance | -46.811 | 6.787 | -6.898 | 0.000 |
| buildYear | 0.529 | 0.650 | 0.813 | 0.416 |
| hasElevatorno | 47.691 | 100.321 | 0.475 | 0.635 |
| hasElevatoryes | 706.769 | 99.001 | 7.139 | 0.000 |
Wnioski z modelu
Powierzchnia (squareMeters): Jest najsilniejszym predyktorem. Każdy dodatkowy metr kwadratowy powierzchni zwiększa cenę mieszkania średnio o 87 zł przy założeniu, że pozostałe czynniki pozostają bez zmian. Lokalizacja (centreDistance): Odległość od centrum ma istotny wpływ ujemny. Statystycznie każdy kilometr dalej od serca miasta powoduje spadek ceny najmu średnio o 31 zł. Liczba pokoi (rooms): Dodatkowy pokój (przy tym samym metrażu) paradoksalnie może wpływać na cenę w różny sposób, ale w naszym modelu każda kolejna jednostka koryguje cenę o -232. Obecność windy w budynku podnosi prestiż i wygodę, co przekłada się na wzrost ceny o średnio 652 zł. Brak windy jest nie istotny statystycznie tak samo jak rok wybudowania mieszkania.
6. Podsumowanie i wnioski końcowe
Przeprowadzona analiza 8845 ofert mieszkań pozwoliła na kompleksowe zrozumienie struktury polskiego rynku najmu w 2024 roku. Kluczowe wnioski:
Segmentacja rynku: Rynek nie jest jednolity. Wyodrębniliśmy dwa główne segmenty: masowy (inwestycyjny), skupiony na mieszkaniach 40-50 \(m^2\), oraz segment premium, obejmujący duże apartamenty, których cena jest kształtowana przez inne czynniki niż w przypadku mieszkań standardowych.
Determinanty ceny: Najsilniejszymi czynnikami wpływającymi na koszt najmu są metraż oraz lokalizacja (odległość od centrum). Co ciekawe, model regresji potwierdził, że nawet przy uwzględnieniu metrażu, standard budynku (np. obecność windy) wnosi istotną wartość dodaną do ceny.
Jakość danych: Dzięki zastosowaniu zaawansowanej imputacji MICE, udało się zachować pełną moc zbioru danych bez konieczności usuwania niekompletnych rekordów, co pozwoliło na rzetelne wyciągnięcie wniosków z niemal 9 tysięcy obserwacji.Praktyczne zastosowanie: Model regresji opracowany w projekcie może służyć jako wstępne narzędzie do szacowania “sprawiedliwej” ceny najmu dla nowych ofert wchodzących na rynek.