GitGirls
W składzie: 1. Natalia Adamczyk 2. Paulina Lackowska 3. Wiktoria Gliniecka
W ramach niniejszego projektu przeprowadzono kompleksową analizę danych dotyczących rynku nieruchomości, wykorzystując zaawansowane techniki Data Wranglingu, wizualizacji danych oraz analizy opisowej. Celem projektu było zrozumienie kluczowych czynników wpływających na wartość i atrakcyjność nieruchomości, a także identyfikacja trendów i zależności występujących w analizowanym zbiorze danych.
Proces Data Wranglingu obejmował oczyszczanie, transformację i przygotowanie danych do dalszej analizy. Dzięki temu udało się uzyskać spójny i wysokiej jakości zbiór danych, który stanowił podstawę dla kolejnych etapów projektu. Następnie, wykorzystując narzędzia do wizualizacji danych, stworzono szereg wykresów i grafik, które pozwoliły na przejrzyste przedstawienie zależności między różnymi zmiennymi, takimi jak cena, powierzchnia, lokalizacja, liczba sypialni, dostęp do infrastruktury oraz standard wyposażenia.
Analiza opisowa koncentrowała się na interpretacji uzyskanych wizualizacji, co pozwoliło na wyciągnięcie istotnych wniosków dotyczących rynku nieruchomości. W szczególności, zidentyfikowano czynniki, takie jak lokalizacja w preferowanych obszarach, dostęp do drogi głównej, obecność klimatyzacji, status umeblowania oraz funkcjonalność nieruchomości, które mają znaczący wpływ na ich wartość i atrakcyjność.
Projekt ten nie tylko dostarcza cennych informacji na temat rynku nieruchomości, ale również demonstruje, jak efektywne wykorzystanie technik analizy danych może prowadzić do głębszego zrozumienia złożonych zjawisk rynkowych. Wyniki analizy mogą stanowić cenne źródło informacji dla inwestorów, deweloperów oraz nabywców, umożliwiając bardziej świadome podejmowanie decyzji inwestycyjnych i rynkowych.
library(dplyr)
## Warning: pakiet 'dplyr' został zbudowany w wersji R 4.4.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(naniar)
## Warning: pakiet 'naniar' został zbudowany w wersji R 4.4.2
library(ggplot2)
## Warning: pakiet 'ggplot2' został zbudowany w wersji R 4.4.2
library(VIM)
## Warning: pakiet 'VIM' został zbudowany w wersji R 4.4.2
## Ładowanie wymaganego pakietu: colorspace
## Ładowanie wymaganego pakietu: grid
## VIM is ready to use.
## Suggestions and bug-reports can be submitted at: https://github.com/statistikat/VIM/issues
##
## Dołączanie pakietu: 'VIM'
## Następujący obiekt został zakryty z 'package:datasets':
##
## sleep
library(editrules)
## Warning: pakiet 'editrules' został zbudowany w wersji R 4.4.2
## Ładowanie wymaganego pakietu: igraph
## Warning: pakiet 'igraph' został zbudowany w wersji R 4.4.2
##
## Dołączanie pakietu: 'igraph'
## Następujące obiekty zostały zakryte z 'package:dplyr':
##
## as_data_frame, groups, union
## Następujące obiekty zostały zakryte z 'package:stats':
##
## decompose, spectrum
## Następujący obiekt został zakryty z 'package:base':
##
## union
##
## Dołączanie pakietu: 'editrules'
## Następujące obiekty zostały zakryte z 'package:igraph':
##
## blocks, normalize
## Następujący obiekt został zakryty z 'package:dplyr':
##
## contains
library(validate)
## Warning: pakiet 'validate' został zbudowany w wersji R 4.4.2
##
## Dołączanie pakietu: 'validate'
## Następujące obiekty zostały zakryte z 'package:igraph':
##
## compare, hierarchy
## Następujący obiekt został zakryty z 'package:ggplot2':
##
## expr
## Następujący obiekt został zakryty z 'package:naniar':
##
## all_complete
## Następujący obiekt został zakryty z 'package:dplyr':
##
## expr
library(editrules)
library(xts)
## Warning: pakiet 'xts' został zbudowany w wersji R 4.4.2
## Ładowanie wymaganego pakietu: zoo
##
## Dołączanie pakietu: 'zoo'
## Następujące obiekty zostały zakryte z 'package:base':
##
## as.Date, as.Date.numeric
##
## ######################### Warning from 'xts' package ##########################
## # #
## # The dplyr lag() function breaks how base R's lag() function is supposed to #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
## # source() into this session won't work correctly. #
## # #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
## # dplyr from breaking base R's lag() function. #
## # #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
## # #
## ###############################################################################
##
## Dołączanie pakietu: 'xts'
## Następujące obiekty zostały zakryte z 'package:dplyr':
##
## first, last
library(classInt)
## Warning: pakiet 'classInt' został zbudowany w wersji R 4.4.2
library(kableExtra)
## Warning: pakiet 'kableExtra' został zbudowany w wersji R 4.4.2
##
## Dołączanie pakietu: 'kableExtra'
## Następujący obiekt został zakryty z 'package:dplyr':
##
## group_rows
library(ggpubr)
## Warning: pakiet 'ggpubr' został zbudowany w wersji R 4.4.2
library(ggstatsplot)
## Warning: pakiet 'ggstatsplot' został zbudowany w wersji R 4.4.2
## You can cite this package as:
## Patil, I. (2021). Visualizations with statistical details: The 'ggstatsplot' approach.
## Journal of Open Source Software, 6(61), 3167, doi:10.21105/joss.03167
library(psych)
## Warning: pakiet 'psych' został zbudowany w wersji R 4.4.2
##
## Dołączanie pakietu: 'psych'
## Następujące obiekty zostały zakryte z 'package:ggplot2':
##
## %+%, alpha
library(qwraps2)
## Warning: pakiet 'qwraps2' został zbudowany w wersji R 4.4.2
##
## Dołączanie pakietu: 'qwraps2'
## Następujący obiekt został zakryty z 'package:psych':
##
## logit
## Następujące obiekty zostały zakryte z 'package:ggpubr':
##
## mean_ci, mean_sd, median_iqr
## Następujący obiekt został zakryty z 'package:igraph':
##
## %s%
## Następujący obiekt został zakryty z 'package:ggplot2':
##
## mean_se
library(gtsummary)
## Warning: pakiet 'gtsummary' został zbudowany w wersji R 4.4.2
##
## Dołączanie pakietu: 'gtsummary'
## Następujący obiekt został zakryty z 'package:editrules':
##
## contains
#Read data from .csv
data <- read.csv("agencja_nieruchomosci.csv")
Podgląd danych
#Data preview
head(data)
## price area bedrooms bathrooms stories mainroad guestroom basement
## 1 NA 7420 4 2 3 <NA> no no
## 2 12250000 8960 4 4 4 yes no no
## 3 12250000 9960 3 2 2 yes no yes
## 4 12215000 7500 4 2 2 yes no yes
## 5 11410000 7420 4 1 2 yes yes yes
## 6 10850000 7500 3 3 1 yes no yes
## hotwaterheating airconditioning parking prefarea furnishingstatus
## 1 no yes 2 yes furnished
## 2 no yes 3 no furnished
## 3 no no 2 yes semi-furnished
## 4 no yes 3 yes furnished
## 5 no yes 2 no furnished
## 6 no yes 2 yes semi-furnished
Struktura danych
str(data)
## 'data.frame': 545 obs. of 13 variables:
## $ price : int NA 12250000 12250000 12215000 11410000 10850000 10150000 10150000 9870000 9800000 ...
## $ area : int 7420 8960 9960 7500 7420 7500 8580 16200 8100 5750 ...
## $ bedrooms : int 4 4 3 4 4 3 4 5 4 3 ...
## $ bathrooms : int 2 4 2 2 1 3 3 3 1 2 ...
## $ stories : int 3 4 2 2 2 1 4 2 2 4 ...
## $ mainroad : chr NA "yes" "yes" "yes" ...
## $ guestroom : chr "no" "no" "no" "no" ...
## $ basement : chr "no" "no" "yes" "yes" ...
## $ hotwaterheating : chr "no" "no" "no" "no" ...
## $ airconditioning : chr "yes" "yes" "no" "yes" ...
## $ parking : int 2 3 2 3 2 2 2 0 2 1 ...
## $ prefarea : chr "yes" "no" "yes" "yes" ...
## $ furnishingstatus: chr "furnished" "furnished" "semi-furnished" "furnished" ...
Całkowita liczbę NA dla całej ramki danych lub dla określonej zmiennej (kolumny)
n_miss(data)
## [1] 210
Całkowita liczbę NA dla zmiennych (kolumn)
n_miss(data$price)
## [1] 110
n_miss(data$area)
## [1] 0
n_miss(data$bedrooms)
## [1] 0
n_miss(data$bathrooms)
## [1] 0
n_miss(data$stories)
## [1] 0
n_miss(data$mainroad)
## [1] 50
n_miss(data$guestroom)
## [1] 0
n_miss(data$basement)
## [1] 0
n_miss(data$hotwaterheating)
## [1] 0
n_miss(data$airconditioning)
## [1] 0
n_miss(data$parking)
## [1] 0
n_miss(data$prefarea)
## [1] 50
n_miss(data$furnishingstatus)
## [1] 0
liczba wartości innych niż NA w ramce danych lub zmiennej
n_complete(data)
## [1] 6875
Proporcja wartości będących NA dla całej ramki danych
prop_miss(data)
## [1] 0.02964008
Proporcja wartości będących NA dla poszczególnych kolumn
prop_miss(data$price)
## [1] 0.2018349
prop_miss(data$area)
## [1] 0
prop_miss(data$bedrooms)
## [1] 0
prop_miss(data$bathrooms)
## [1] 0
prop_miss(data$stories)
## [1] 0
prop_miss(data$mainroad)
## [1] 0.09174312
prop_miss(data$guestroom)
## [1] 0
prop_miss(data$basement)
## [1] 0
prop_miss(data$hotwaterheating)
## [1] 0
prop_miss(data$airconditioning)
## [1] 0
prop_miss(data$parking)
## [1] 0
prop_miss(data$prefarea)
## [1] 0.09174312
prop_miss(data$furnishingstatus)
## [1] 0
tabelę podsumowującą zawierającą liczbę brakujących NA
miss_var_summary(data)
## # A tibble: 13 × 3
## variable n_miss pct_miss
## <chr> <int> <num>
## 1 price 110 20.2
## 2 mainroad 50 9.17
## 3 prefarea 50 9.17
## 4 area 0 0
## 5 bedrooms 0 0
## 6 bathrooms 0 0
## 7 stories 0 0
## 8 guestroom 0 0
## 9 basement 0 0
## 10 hotwaterheating 0 0
## 11 airconditioning 0 0
## 12 parking 0 0
## 13 furnishingstatus 0 0
Wizualizacja brakujących wartości
vis_miss(data)
data$mainroad <- ifelse(data$mainroad == "yes", TRUE,
ifelse(data$mainroad == "no", FALSE, NA))
data$guestroom <- ifelse(data$guestroom == "yes", TRUE,
ifelse(data$guestroom == "no", FALSE, NA))
data$basement <- ifelse(data$basement == "yes", TRUE,
ifelse(data$basement == "no", FALSE, NA))
data$hotwaterheating <- ifelse(data$hotwaterheating == "yes", TRUE,
ifelse(data$hotwaterheating == "no", FALSE, NA))
data$airconditioning <- ifelse(data$airconditioning == "yes", TRUE,
ifelse(data$airconditioning == "no", FALSE, NA))
data$prefarea <- ifelse(data$prefarea == "yes", TRUE,
ifelse(data$prefarea == "no", FALSE, NA))
RULE <- editset(c("price > 0","area > 0", "bedrooms >= 1","bathrooms >= 1", "stories >= 1", "mainroad %in% c(TRUE,FALSE)","guestroom %in% c(TRUE,FALSE)", "basement %in% c(TRUE,FALSE)", "hotwaterheating %in% c(TRUE,FALSE)", "airconditioning %in% c(TRUE,FALSE)", "prefarea %in% c(TRUE,FALSE)", "parking >= 0", "furnishingstatus %in% c('furnished','semi-furnished','unfurnished')"))
RULE
##
## Data model:
## dat1 : airconditioning %in% c(FALSE, TRUE)
## dat2 : basement %in% c(FALSE, TRUE)
## dat3 : furnishingstatus %in% c('furnished', 'semi-furnished', 'unfurnished')
## dat4 : guestroom %in% c(FALSE, TRUE)
## dat5 : hotwaterheating %in% c(FALSE, TRUE)
## dat6 : mainroad %in% c(FALSE, TRUE)
## dat7 : prefarea %in% c(FALSE, TRUE)
##
## Edit set:
## num1 : 0 < price
## num2 : 0 < area
## num3 : 1 <= bedrooms
## num4 : 1 <= bathrooms
## num5 : 1 <= stories
## num6 : 0 <= parking
summary(violatedEdits(RULE, data))
## Edit violations, 545 observations, 0 completely missing (0%):
##
## editname freq rel
## dat6 50 9.2%
## dat7 50 9.2%
##
## Edit violations per record:
##
## errors freq rel
## 0 363 66.6%
## 1 155 28.4%
## 2 26 4.8%
## 3 1 0.2%
violations_summary <- summary(violatedEdits(RULE, data))
## Edit violations, 545 observations, 0 completely missing (0%):
##
## editname freq rel
## dat6 50 9.2%
## dat7 50 9.2%
##
## Edit violations per record:
##
## errors freq rel
## 0 363 66.6%
## 1 155 28.4%
## 2 26 4.8%
## 3 1 0.2%
str(violations_summary)
## 'data.frame': 4 obs. of 3 variables:
## $ errors: chr "0" "1" "2" "3"
## $ freq : int 363 155 26 1
## $ rel : chr "66.6%" "28.4%" "4.8%" "0.2%"
#plot(violated)
Z podsumowania danych łamiących zapisaną wyżej regułę wynika, że większość wierszy (66.6%) w danych spełnia wszystkie reguły walidacyjne (errors = 0). 28.4% wierszy narusza jedną regułę (errors = 1). 4.8% wierszy narusza dwie reguły (errors = 2). 0.2% wierszy narusza trzy reguły (errors = 3).To jaka część obserwacji nie spełani reguł możemy zobaczyć na wykresie.
Dla spójności i poprawności danych stodujemy reguły walidacyjne. Wykorzystujemy zdefiniowane wcześniej reguły. Błędne wartości w danych zastąpujemy NA, co umożliwia ich łatwą identyfikację i w puźniejszych krokach ułatwi wykosztanie ich w analizie. Wykorzystujemy do tego celu bibliotekę validate, aby wszytskie obserwacje łamiące wspomniane regułu zastępujemy wartością NA.Oznacza to, że będzie możliwe implementacja w to miejsce wartości spełniające wymogi danych.
RULE <- validator(
price > 0,
area > 0,
bedrooms >= 1,
bathrooms >= 1,
stories >= 1,
mainroad %in% c('TRUE', 'FALSE'),
guestroom %in% c('TRUE', 'FALSE'),
basement %in% c('TRUE', 'FALSE'),
hotwaterheating %in% c('TRUE', 'FALSE'),
airconditioning %in% c('TRUE', 'FALSE'),
prefarea %in% c('TRUE', 'FALSE'),
parking >= 0,
furnishingstatus %in% c('furnished', 'semi-furnished', 'unfurnished')
)
correct_with_rules <- function(data, rules) {
violations <- confront(data, rules)
for (col in names(data)) {
if (col %in% names(rules)) {
invalid_rows <- values(violations)[, col] == FALSE
data[[col]][invalid_rows] <- NA
}
}
return(data)
}
Identyfikujemy wartości odstające w zmiennej price
Następnie znajdujemy indeksy wierszy zawierających te wartości odstające
za pomocą funkcji which. Używamy wykresu pudełkowegp do
wizualizacji zmiennej price, gdzie outliery są
automatycznie zaznaczane na wykresie. W kolejnych krokach modyfikujemy
wartości w drugiej kolumnie dla wierszy z wartościami odstającymi w
price, dzieląc je przez 10 w celu ich zmniejszenia. Ten
proces pozwala nam spojrzeć na przeciętne wartości dla danych o
sprzedaży mieszkań. Jeśli chodzi o cenę jest ona zmienną mocno
subiektywną. Niekoniecznie wynika z faktycznej wartości produktu ale np.
z bardzo konkretnej lokalizacji. Ponieważ w naszych danych nie mamy
informacji o np. wspomnianej konkretnej lokalizacji nie możemy wziąć jej
pod uwagę przy dalaszej interpretacji ceny. Dane bez wprowadzonych
modyfikacji zostawiamy jako ’data_with_outliars’dla celów
porównawczych.
outliers <- boxplot.stats(data$price)$out
outliers_idx <- which(data$price %in% outliers)
data[outliers_idx,]
## price area bedrooms bathrooms stories mainroad guestroom basement
## 2 12250000 8960 4 4 4 TRUE FALSE FALSE
## 3 12250000 9960 3 2 2 TRUE FALSE TRUE
## 4 12215000 7500 4 2 2 TRUE FALSE TRUE
## 5 11410000 7420 4 1 2 TRUE TRUE TRUE
## 6 10850000 7500 3 3 1 TRUE FALSE TRUE
## 7 10150000 8580 4 3 4 TRUE FALSE FALSE
## 8 10150000 16200 5 3 2 TRUE FALSE FALSE
## 9 9870000 8100 4 1 2 TRUE TRUE TRUE
## 10 9800000 5750 3 2 4 TRUE TRUE FALSE
## 11 9800000 13200 3 1 2 TRUE FALSE TRUE
## 12 9681000 6000 4 3 2 TRUE TRUE TRUE
## hotwaterheating airconditioning parking prefarea furnishingstatus
## 2 FALSE TRUE 3 FALSE furnished
## 3 FALSE FALSE 2 TRUE semi-furnished
## 4 FALSE TRUE 3 TRUE furnished
## 5 FALSE TRUE 2 FALSE furnished
## 6 FALSE TRUE 2 TRUE semi-furnished
## 7 FALSE TRUE 2 TRUE semi-furnished
## 8 FALSE FALSE 0 FALSE unfurnished
## 9 FALSE TRUE 2 TRUE furnished
## 10 FALSE TRUE 1 TRUE unfurnished
## 11 FALSE TRUE 2 TRUE furnished
## 12 TRUE FALSE 2 FALSE semi-furnished
boxplot(data$price,
main = "Wartości odstające dla zmiennej 'price'",
ylab = "Wartości price",
col = "lightblue",
outline = TRUE)
data[outliers_idx, 2] <- data[outliers_idx, 2] / 10
data_with_outliars <- read.csv("agencja_nieruchomosci.csv")
Drugą zmienną w której mogą wystapić wartości odstające jest zmienna
‘area’. Dlatego przechodzimy do identyfikacji wartości odstających w
zmiennej area do ich lepszego zobrazowania wykorzystamy
wykres pudełkowy. Widzimy, że są to wartości ekstremalnie wysokie. Na
razie nie będziemy modyfikować tych wartości. Z perspektywy biznesowej
ważne jest aby zbadać jak duża powierzchnia wpływa na cenę. Czy w
przypadku odstających pod katem wielkości są one również zdecydowanie
droższe.
outliers <- boxplot.stats(data$area)$out
outliers_idx <- which(data$area %in% outliers)
data[outliers_idx,]
## price area bedrooms bathrooms stories mainroad guestroom basement
## 57 7343000 11440 4 1 2 TRUE FALSE TRUE
## 65 NA 11175 3 1 1 TRUE FALSE TRUE
## 67 6930000 13200 2 1 1 TRUE FALSE TRUE
## 70 NA 12090 4 2 2 TRUE FALSE FALSE
## 83 6615000 10500 3 2 1 TRUE FALSE TRUE
## 126 5943000 15600 3 1 1 TRUE FALSE FALSE
## 130 5873000 11460 3 1 3 TRUE FALSE FALSE
## 143 5600000 10500 4 2 2 TRUE FALSE FALSE
## 147 5600000 10500 2 1 1 TRUE FALSE FALSE
## 187 5110000 11410 2 1 2 TRUE FALSE FALSE
## 192 5040000 10700 3 1 2 TRUE TRUE TRUE
## 212 4900000 12900 3 1 1 TRUE FALSE FALSE
## 404 3500000 12944 3 1 1 TRUE FALSE FALSE
## hotwaterheating airconditioning parking prefarea furnishingstatus
## 57 FALSE FALSE 1 TRUE semi-furnished
## 65 FALSE TRUE 1 NA furnished
## 67 TRUE FALSE 1 FALSE furnished
## 70 FALSE FALSE 2 TRUE furnished
## 83 FALSE TRUE 1 TRUE furnished
## 126 FALSE TRUE 2 FALSE semi-furnished
## 130 FALSE FALSE 2 TRUE semi-furnished
## 143 FALSE FALSE 1 FALSE semi-furnished
## 147 FALSE FALSE 1 FALSE semi-furnished
## 187 FALSE FALSE 0 TRUE furnished
## 192 FALSE FALSE 0 FALSE semi-furnished
## 212 FALSE FALSE 2 FALSE furnished
## 404 FALSE FALSE 0 FALSE unfurnished
boxplot(data$area,
main = "Wartości odstające dla zmiennej 'area'",
ylab = "Wartości area",
col = "lightblue",
outline = TRUE)
Ponieważ Dla naszej analizy kluczową zmienną będzie cena a pytania jake sobie postawimy będą głównie związane z tym jakie czynniki na nią wpływają. ustawienie danych roznąco pod kątem ceny ułatwi prace i podglądanie struktury danych. Łatwiej w ten sposób zauważyć jakie są
data %>% arrange('price')
## price area bedrooms bathrooms stories mainroad guestroom basement
## 1 NA 7420 4 2 3 NA FALSE FALSE
## 2 12250000 896 4 4 4 TRUE FALSE FALSE
## 3 12250000 996 3 2 2 TRUE FALSE TRUE
## 4 12215000 750 4 2 2 TRUE FALSE TRUE
## 5 11410000 742 4 1 2 TRUE TRUE TRUE
## 6 10850000 750 3 3 1 TRUE FALSE TRUE
## 7 10150000 858 4 3 4 TRUE FALSE FALSE
## 8 10150000 1620 5 3 2 TRUE FALSE FALSE
## 9 9870000 810 4 1 2 TRUE TRUE TRUE
## 10 9800000 575 3 2 4 TRUE TRUE FALSE
## 11 9800000 1320 3 1 2 TRUE FALSE TRUE
## 12 9681000 600 4 3 2 TRUE TRUE TRUE
## 13 NA 6550 4 2 2 NA FALSE FALSE
## 14 9240000 3500 4 2 2 TRUE FALSE FALSE
## 15 9240000 7800 3 2 2 TRUE FALSE FALSE
## 16 9100000 6000 4 1 2 TRUE FALSE TRUE
## 17 9100000 6600 4 2 2 TRUE TRUE TRUE
## 18 8960000 8500 3 2 4 TRUE FALSE FALSE
## 19 8890000 4600 3 2 2 TRUE TRUE FALSE
## 20 8855000 6420 3 2 2 TRUE FALSE FALSE
## 21 8750000 4320 3 1 2 TRUE FALSE TRUE
## 22 8680000 7155 3 2 1 TRUE TRUE TRUE
## 23 NA 8050 3 1 1 TRUE TRUE TRUE
## 24 8645000 4560 3 2 2 TRUE TRUE TRUE
## 25 NA 8800 3 2 2 TRUE FALSE FALSE
## 26 8540000 6540 4 2 2 TRUE TRUE TRUE
## 27 8463000 6000 3 2 4 TRUE TRUE TRUE
## 28 8400000 8875 3 1 1 TRUE FALSE FALSE
## 29 8400000 7950 5 2 2 TRUE FALSE TRUE
## 30 8400000 5500 4 2 2 TRUE FALSE TRUE
## 31 8400000 7475 3 2 4 TRUE FALSE FALSE
## 32 8400000 7000 3 1 4 TRUE FALSE FALSE
## 33 8295000 4880 4 2 2 TRUE FALSE FALSE
## 34 8190000 5960 3 3 2 TRUE TRUE TRUE
## 35 8120000 6840 5 1 2 TRUE TRUE TRUE
## 36 8080940 7000 3 2 4 TRUE FALSE FALSE
## 37 8043000 7482 3 2 3 TRUE FALSE FALSE
## 38 7980000 9000 4 2 4 TRUE FALSE FALSE
## 39 7962500 6000 3 1 4 TRUE TRUE FALSE
## 40 7910000 6000 4 2 4 NA FALSE FALSE
## 41 7875000 6550 3 1 2 TRUE FALSE TRUE
## 42 NA 6360 3 2 4 TRUE FALSE FALSE
## 43 7700000 6480 3 2 4 TRUE FALSE FALSE
## 44 7700000 6000 4 2 4 TRUE FALSE FALSE
## 45 7560000 6000 4 2 4 TRUE FALSE FALSE
## 46 NA 6000 3 2 3 TRUE FALSE FALSE
## 47 7525000 6000 3 2 4 TRUE FALSE FALSE
## 48 NA 6600 3 1 4 TRUE FALSE FALSE
## 49 7455000 4300 3 2 2 TRUE FALSE TRUE
## 50 7420000 7440 3 2 1 TRUE TRUE TRUE
## 51 7420000 7440 3 2 4 TRUE FALSE FALSE
## 52 NA 6325 3 1 4 TRUE FALSE FALSE
## 53 7350000 6000 4 2 4 TRUE TRUE FALSE
## 54 7350000 5150 3 2 4 TRUE FALSE FALSE
## 55 NA 6000 3 2 2 TRUE TRUE FALSE
## 56 7350000 6000 3 1 2 TRUE FALSE FALSE
## 57 7343000 11440 4 1 2 TRUE FALSE TRUE
## 58 7245000 9000 4 2 4 TRUE TRUE FALSE
## 59 7210000 7680 4 2 4 TRUE TRUE FALSE
## 60 NA 6000 3 2 4 NA TRUE FALSE
## 61 7140000 6000 3 2 2 TRUE TRUE FALSE
## 62 7070000 8880 2 1 1 TRUE FALSE FALSE
## 63 NA 6240 4 2 2 TRUE FALSE FALSE
## 64 7035000 6360 4 2 3 TRUE FALSE FALSE
## 65 NA 11175 3 1 1 TRUE FALSE TRUE
## 66 6930000 8880 3 2 2 TRUE FALSE TRUE
## 67 6930000 13200 2 1 1 TRUE FALSE TRUE
## 68 6895000 7700 3 2 1 TRUE FALSE FALSE
## 69 6860000 6000 3 1 1 TRUE FALSE FALSE
## 70 NA 12090 4 2 2 TRUE FALSE FALSE
## 71 6790000 4000 3 2 2 TRUE FALSE TRUE
## 72 6755000 6000 4 2 4 TRUE FALSE FALSE
## 73 NA 5020 3 1 4 TRUE FALSE FALSE
## 74 6685000 6600 2 2 4 TRUE FALSE TRUE
## 75 6650000 4040 3 1 2 NA FALSE TRUE
## 76 NA 4260 4 2 2 TRUE FALSE FALSE
## 77 NA 6420 3 2 3 TRUE FALSE FALSE
## 78 6650000 6500 3 2 3 TRUE FALSE FALSE
## 79 6650000 5700 3 1 1 TRUE TRUE TRUE
## 80 NA 6000 3 2 3 TRUE TRUE FALSE
## 81 6629000 6000 3 1 2 TRUE FALSE FALSE
## 82 6615000 4000 3 2 2 TRUE FALSE TRUE
## 83 6615000 10500 3 2 1 TRUE FALSE TRUE
## 84 6580000 6000 3 2 4 TRUE FALSE FALSE
## 85 NA 3760 3 1 2 TRUE FALSE FALSE
## 86 6510000 8250 3 2 3 TRUE FALSE FALSE
## 87 6510000 6670 3 1 3 TRUE FALSE TRUE
## 88 6475000 3960 3 1 1 TRUE FALSE TRUE
## 89 6475000 7410 3 1 1 TRUE TRUE TRUE
## 90 6440000 8580 5 3 2 TRUE FALSE FALSE
## 91 6440000 5000 3 1 2 TRUE FALSE FALSE
## 92 6419000 6750 2 1 1 TRUE TRUE TRUE
## 93 6405000 4800 3 2 4 TRUE TRUE FALSE
## 94 6300000 7200 3 2 1 TRUE FALSE TRUE
## 95 6300000 6000 4 2 4 TRUE FALSE FALSE
## 96 6300000 4100 3 2 3 TRUE FALSE FALSE
## 97 6300000 9000 3 1 1 TRUE FALSE TRUE
## 98 6300000 6400 3 1 1 TRUE TRUE TRUE
## 99 6293000 6600 3 2 3 TRUE FALSE FALSE
## 100 6265000 6000 4 1 3 TRUE TRUE TRUE
## 101 6230000 6600 3 2 1 TRUE FALSE TRUE
## 102 NA 5500 3 1 3 TRUE FALSE FALSE
## 103 6195000 5500 3 2 4 TRUE TRUE FALSE
## 104 NA 6350 3 2 3 TRUE TRUE FALSE
## 105 6195000 5500 3 2 1 TRUE TRUE TRUE
## 106 6160000 4500 3 1 4 TRUE FALSE FALSE
## 107 6160000 5450 4 2 1 TRUE FALSE TRUE
## 108 6125000 6420 3 1 3 TRUE FALSE TRUE
## 109 6107500 3240 4 1 3 TRUE FALSE FALSE
## 110 NA 6615 4 2 2 TRUE TRUE FALSE
## 111 6090000 6600 3 1 1 TRUE TRUE TRUE
## 112 6090000 8372 3 1 3 TRUE FALSE FALSE
## 113 6083000 4300 6 2 2 TRUE FALSE FALSE
## 114 NA 9620 3 1 1 TRUE FALSE TRUE
## 115 6020000 6800 2 1 1 TRUE TRUE TRUE
## 116 6020000 8000 3 1 1 TRUE TRUE TRUE
## 117 NA 6900 3 2 1 TRUE TRUE TRUE
## 118 NA 3700 4 1 2 TRUE TRUE FALSE
## 119 5950000 6420 3 1 1 TRUE FALSE TRUE
## 120 5950000 7020 3 1 1 TRUE FALSE TRUE
## 121 5950000 6540 3 1 1 TRUE TRUE TRUE
## 122 5950000 7231 3 1 2 TRUE TRUE TRUE
## 123 5950000 6254 4 2 1 TRUE FALSE TRUE
## 124 5950000 7320 4 2 2 TRUE FALSE FALSE
## 125 5950000 6525 3 2 4 TRUE FALSE FALSE
## 126 5943000 15600 3 1 1 TRUE FALSE FALSE
## 127 5880000 7160 3 1 1 TRUE FALSE TRUE
## 128 5880000 6500 3 2 3 TRUE FALSE FALSE
## 129 5873000 5500 3 1 3 TRUE TRUE FALSE
## 130 5873000 11460 3 1 3 TRUE FALSE FALSE
## 131 NA 4800 3 1 1 TRUE TRUE TRUE
## 132 5810000 5828 4 1 4 TRUE TRUE FALSE
## 133 NA 5200 3 1 3 TRUE FALSE FALSE
## 134 5810000 4800 3 1 3 NA FALSE FALSE
## 135 5803000 7000 3 1 1 TRUE FALSE TRUE
## 136 5775000 6000 3 2 4 TRUE FALSE FALSE
## 137 5740000 5400 4 2 2 NA FALSE FALSE
## 138 5740000 4640 4 1 2 TRUE FALSE FALSE
## 139 5740000 5000 3 1 3 TRUE FALSE FALSE
## 140 5740000 6360 3 1 1 TRUE TRUE TRUE
## 141 5740000 5800 3 2 4 TRUE FALSE FALSE
## 142 5652500 6660 4 2 2 TRUE TRUE TRUE
## 143 5600000 10500 4 2 2 TRUE FALSE FALSE
## 144 5600000 4800 5 2 3 FALSE FALSE TRUE
## 145 NA 4700 4 1 2 TRUE TRUE TRUE
## 146 5600000 5000 3 1 4 TRUE FALSE FALSE
## 147 5600000 10500 2 1 1 TRUE FALSE FALSE
## 148 NA 5500 3 2 2 NA FALSE FALSE
## 149 5600000 6360 3 1 3 TRUE FALSE FALSE
## 150 NA 6600 4 2 1 TRUE FALSE TRUE
## 151 5600000 5136 3 1 2 TRUE TRUE TRUE
## 152 5565000 4400 4 1 2 TRUE FALSE FALSE
## 153 5565000 5400 5 1 2 TRUE TRUE TRUE
## 154 5530000 3300 3 3 2 TRUE FALSE TRUE
## 155 5530000 3650 3 2 2 TRUE FALSE FALSE
## 156 NA 6100 3 2 1 TRUE FALSE TRUE
## 157 NA 6900 3 1 1 TRUE TRUE TRUE
## 158 5495000 2817 4 2 2 FALSE TRUE TRUE
## 159 5495000 7980 3 1 1 TRUE FALSE FALSE
## 160 5460000 3150 3 2 1 NA TRUE TRUE
## 161 5460000 6210 4 1 4 TRUE TRUE FALSE
## 162 NA 6100 3 1 3 TRUE TRUE FALSE
## 163 5460000 6600 4 2 2 TRUE TRUE TRUE
## 164 5425000 6825 3 1 1 TRUE TRUE TRUE
## 165 NA 6710 3 2 2 TRUE TRUE TRUE
## 166 5383000 6450 3 2 1 TRUE TRUE TRUE
## 167 5320000 7800 3 1 1 TRUE FALSE TRUE
## 168 5285000 4600 2 2 1 TRUE FALSE FALSE
## 169 5250000 4260 4 1 2 TRUE FALSE TRUE
## 170 5250000 6540 4 2 2 FALSE FALSE FALSE
## 171 5250000 5500 3 2 1 TRUE FALSE TRUE
## 172 5250000 10269 3 1 1 TRUE FALSE FALSE
## 173 NA 8400 3 1 2 TRUE TRUE TRUE
## 174 5250000 5300 4 2 1 TRUE FALSE FALSE
## 175 5250000 3800 3 1 2 NA TRUE TRUE
## 176 5250000 9800 4 2 2 TRUE TRUE FALSE
## 177 5250000 8520 3 1 1 TRUE FALSE FALSE
## 178 5243000 6050 3 1 1 TRUE FALSE TRUE
## 179 NA 7085 3 1 1 TRUE TRUE TRUE
## 180 NA 3180 3 2 2 TRUE FALSE FALSE
## 181 5215000 4500 4 2 1 FALSE FALSE TRUE
## 182 NA 7200 3 1 2 TRUE TRUE TRUE
## 183 5145000 3410 3 1 2 FALSE FALSE FALSE
## 184 5145000 7980 3 1 1 TRUE FALSE FALSE
## 185 5110000 3000 3 2 2 TRUE TRUE TRUE
## 186 NA 3000 3 1 2 TRUE FALSE TRUE
## 187 5110000 11410 2 1 2 TRUE FALSE FALSE
## 188 5110000 6100 3 1 1 TRUE FALSE TRUE
## 189 5075000 5720 2 1 2 TRUE FALSE FALSE
## 190 5040000 3540 2 1 1 FALSE TRUE TRUE
## 191 5040000 7600 4 1 2 TRUE FALSE FALSE
## 192 5040000 10700 3 1 2 TRUE TRUE TRUE
## 193 5040000 6600 3 1 1 TRUE TRUE TRUE
## 194 NA 4800 2 1 1 NA TRUE TRUE
## 195 5005000 8150 3 2 1 NA TRUE TRUE
## 196 4970000 4410 4 3 2 TRUE FALSE TRUE
## 197 4970000 7686 3 1 1 TRUE TRUE TRUE
## 198 4956000 2800 3 2 2 FALSE FALSE TRUE
## 199 4935000 5948 3 1 2 TRUE FALSE FALSE
## 200 4907000 4200 3 1 2 TRUE FALSE FALSE
## 201 NA 4520 3 1 2 NA FALSE TRUE
## 202 4900000 4095 3 1 2 FALSE TRUE TRUE
## 203 4900000 4120 2 1 1 TRUE FALSE TRUE
## 204 4900000 5400 4 1 2 TRUE FALSE FALSE
## 205 4900000 4770 3 1 1 TRUE TRUE TRUE
## 206 4900000 6300 3 1 1 NA FALSE FALSE
## 207 4900000 5800 2 1 1 TRUE TRUE TRUE
## 208 4900000 3000 3 1 2 TRUE FALSE TRUE
## 209 NA 2970 3 1 3 TRUE FALSE FALSE
## 210 NA 6720 3 1 1 TRUE FALSE FALSE
## 211 4900000 4646 3 1 2 TRUE TRUE TRUE
## 212 4900000 12900 3 1 1 TRUE FALSE FALSE
## 213 NA 3420 4 2 2 TRUE FALSE TRUE
## 214 4893000 4995 4 2 1 TRUE FALSE TRUE
## 215 4865000 4350 2 1 1 TRUE FALSE TRUE
## 216 NA 4160 3 1 3 TRUE FALSE FALSE
## 217 NA 6040 3 1 1 TRUE FALSE FALSE
## 218 4830000 6862 3 1 2 TRUE FALSE FALSE
## 219 NA 4815 2 1 1 NA FALSE FALSE
## 220 4795000 7000 3 1 2 TRUE FALSE TRUE
## 221 4795000 8100 4 1 4 TRUE FALSE TRUE
## 222 4767000 3420 4 2 2 NA FALSE FALSE
## 223 NA 9166 2 1 1 TRUE FALSE TRUE
## 224 NA 6321 3 1 2 NA FALSE TRUE
## 225 4760000 10240 2 1 1 TRUE FALSE FALSE
## 226 4753000 6440 2 1 1 TRUE FALSE FALSE
## 227 4690000 5170 3 1 4 TRUE FALSE FALSE
## 228 4690000 6000 2 1 1 TRUE FALSE TRUE
## 229 NA 3630 3 1 2 TRUE FALSE FALSE
## 230 4690000 9667 4 2 2 TRUE TRUE TRUE
## 231 4690000 5400 2 1 2 NA FALSE FALSE
## 232 4690000 4320 3 1 1 NA FALSE FALSE
## 233 NA 3745 3 1 2 TRUE FALSE TRUE
## 234 4620000 4160 3 1 1 TRUE TRUE TRUE
## 235 4620000 3880 3 2 2 TRUE FALSE TRUE
## 236 4620000 5680 3 1 2 TRUE TRUE FALSE
## 237 4620000 2870 2 1 2 TRUE TRUE TRUE
## 238 4620000 5010 3 1 2 TRUE FALSE TRUE
## 239 4613000 4510 4 2 2 TRUE FALSE TRUE
## 240 4585000 4000 3 1 2 TRUE FALSE FALSE
## 241 4585000 3840 3 1 2 TRUE FALSE FALSE
## 242 4550000 3760 3 1 1 TRUE FALSE FALSE
## 243 NA 3640 3 1 2 TRUE FALSE FALSE
## 244 NA 2550 3 1 2 TRUE FALSE TRUE
## 245 NA 5320 3 1 2 TRUE TRUE TRUE
## 246 4550000 5360 3 1 2 TRUE FALSE FALSE
## 247 4550000 3520 3 1 1 TRUE FALSE FALSE
## 248 4550000 8400 4 1 4 TRUE FALSE FALSE
## 249 4543000 4100 2 2 1 TRUE TRUE TRUE
## 250 4543000 4990 4 2 2 TRUE TRUE TRUE
## 251 4515000 3510 3 1 3 NA FALSE FALSE
## 252 4515000 3450 3 1 2 NA FALSE TRUE
## 253 4515000 9860 3 1 1 TRUE FALSE FALSE
## 254 4515000 3520 2 1 2 TRUE FALSE FALSE
## 255 4480000 4510 4 1 2 TRUE FALSE FALSE
## 256 4480000 5885 2 1 1 TRUE FALSE FALSE
## 257 4480000 4000 3 1 2 TRUE FALSE FALSE
## 258 4480000 8250 3 1 1 TRUE FALSE FALSE
## 259 4480000 4040 3 1 2 TRUE FALSE FALSE
## 260 4473000 6360 2 1 1 TRUE FALSE TRUE
## 261 4473000 3162 3 1 2 TRUE FALSE FALSE
## 262 4473000 3510 3 1 2 TRUE FALSE FALSE
## 263 4445000 3750 2 1 1 TRUE TRUE TRUE
## 264 4410000 3968 3 1 2 FALSE FALSE FALSE
## 265 4410000 4900 2 1 2 TRUE FALSE TRUE
## 266 4403000 2880 3 1 2 TRUE FALSE FALSE
## 267 NA 4880 3 1 1 TRUE FALSE FALSE
## 268 4403000 4920 3 1 2 TRUE FALSE FALSE
## 269 4382000 4950 4 1 2 TRUE FALSE FALSE
## 270 4375000 3900 3 1 2 TRUE FALSE FALSE
## 271 4340000 4500 3 2 3 TRUE FALSE FALSE
## 272 4340000 1905 5 1 2 NA FALSE TRUE
## 273 4340000 4075 3 1 1 TRUE TRUE TRUE
## 274 4340000 3500 4 1 2 TRUE FALSE FALSE
## 275 4340000 6450 4 1 2 TRUE FALSE FALSE
## 276 NA 4032 2 1 1 NA FALSE TRUE
## 277 4305000 4400 2 1 1 NA FALSE FALSE
## 278 4305000 10360 2 1 1 TRUE FALSE FALSE
## 279 4277000 3400 3 1 2 TRUE FALSE TRUE
## 280 4270000 6360 2 1 1 NA FALSE FALSE
## 281 4270000 6360 2 1 2 TRUE FALSE FALSE
## 282 4270000 4500 2 1 1 TRUE FALSE FALSE
## 283 NA 2175 3 1 2 NA TRUE TRUE
## 284 4270000 4360 4 1 2 TRUE FALSE FALSE
## 285 NA 7770 2 1 1 TRUE FALSE FALSE
## 286 4235000 6650 3 1 2 TRUE TRUE FALSE
## 287 NA 2787 3 1 1 TRUE FALSE TRUE
## 288 4200000 5500 3 1 2 TRUE FALSE FALSE
## 289 4200000 5040 3 1 2 TRUE FALSE TRUE
## 290 4200000 5850 2 1 1 TRUE TRUE TRUE
## 291 4200000 2610 4 3 2 FALSE FALSE FALSE
## 292 4200000 2953 3 1 2 TRUE FALSE TRUE
## 293 4200000 2747 4 2 2 FALSE FALSE FALSE
## 294 4200000 4410 2 1 1 FALSE FALSE FALSE
## 295 4200000 4000 4 2 2 FALSE FALSE FALSE
## 296 4200000 2325 3 1 2 FALSE FALSE FALSE
## 297 NA 4600 3 2 2 TRUE FALSE FALSE
## 298 4200000 3640 3 2 2 TRUE FALSE TRUE
## 299 NA 5800 3 1 1 TRUE FALSE FALSE
## 300 4200000 7000 3 1 1 NA FALSE FALSE
## 301 4200000 4079 3 1 3 TRUE FALSE FALSE
## 302 4200000 3520 3 1 2 TRUE FALSE FALSE
## 303 4200000 2145 3 1 3 TRUE FALSE FALSE
## 304 4200000 4500 3 1 1 TRUE FALSE TRUE
## 305 NA 8250 3 1 1 TRUE FALSE TRUE
## 306 4193000 3450 3 1 2 TRUE FALSE FALSE
## 307 4165000 4840 3 1 2 TRUE FALSE FALSE
## 308 NA 4080 3 1 2 TRUE FALSE FALSE
## 309 4165000 4046 3 1 2 TRUE FALSE TRUE
## 310 NA 4632 4 1 2 TRUE FALSE FALSE
## 311 4130000 5985 3 1 1 TRUE FALSE TRUE
## 312 4123000 6060 2 1 1 NA FALSE TRUE
## 313 4098500 3600 3 1 1 TRUE FALSE TRUE
## 314 4095000 3680 3 2 2 TRUE FALSE FALSE
## 315 4095000 4040 2 1 2 TRUE FALSE FALSE
## 316 4095000 5600 2 1 1 TRUE FALSE FALSE
## 317 4060000 5900 4 2 2 FALSE FALSE TRUE
## 318 4060000 4992 3 2 2 TRUE FALSE FALSE
## 319 4060000 4340 3 1 1 TRUE FALSE FALSE
## 320 4060000 3000 4 1 3 TRUE FALSE TRUE
## 321 4060000 4320 3 1 2 TRUE FALSE FALSE
## 322 4025000 3630 3 2 2 TRUE FALSE FALSE
## 323 NA 3460 3 2 1 TRUE FALSE TRUE
## 324 4025000 5400 3 1 1 TRUE FALSE FALSE
## 325 4007500 4500 3 1 2 FALSE FALSE TRUE
## 326 4007500 3460 4 1 2 TRUE FALSE FALSE
## 327 3990000 4100 4 1 1 NA FALSE TRUE
## 328 3990000 6480 3 1 2 NA FALSE FALSE
## 329 3990000 4500 3 2 2 FALSE FALSE TRUE
## 330 3990000 3960 3 1 2 TRUE FALSE FALSE
## 331 3990000 4050 2 1 2 TRUE TRUE TRUE
## 332 3920000 7260 3 2 1 TRUE TRUE TRUE
## 333 3920000 5500 4 1 2 NA TRUE TRUE
## 334 3920000 3000 3 1 2 NA FALSE FALSE
## 335 NA 3290 2 1 1 NA FALSE FALSE
## 336 NA 3816 2 1 1 TRUE FALSE TRUE
## 337 3920000 8080 3 1 1 TRUE FALSE FALSE
## 338 3920000 2145 4 2 1 TRUE FALSE TRUE
## 339 3885000 3780 2 1 2 TRUE TRUE TRUE
## 340 3885000 3180 4 2 2 TRUE FALSE FALSE
## 341 3850000 5300 5 2 2 TRUE FALSE FALSE
## 342 NA 3180 2 2 1 TRUE FALSE TRUE
## 343 3850000 7152 3 1 2 TRUE FALSE FALSE
## 344 3850000 4080 2 1 1 TRUE FALSE FALSE
## 345 3850000 3850 2 1 1 TRUE FALSE FALSE
## 346 3850000 2015 3 1 2 TRUE FALSE TRUE
## 347 3850000 2176 2 1 2 TRUE TRUE FALSE
## 348 3836000 3350 3 1 2 TRUE FALSE FALSE
## 349 3815000 3150 2 2 1 FALSE FALSE TRUE
## 350 3780000 4820 3 1 2 TRUE FALSE FALSE
## 351 3780000 3420 2 1 2 NA FALSE FALSE
## 352 NA 3600 2 1 1 TRUE FALSE FALSE
## 353 3780000 5830 2 1 1 TRUE FALSE FALSE
## 354 3780000 2856 3 1 3 TRUE FALSE FALSE
## 355 NA 8400 2 1 1 TRUE FALSE FALSE
## 356 3773000 8250 3 1 1 TRUE FALSE FALSE
## 357 3773000 2520 5 2 1 FALSE FALSE TRUE
## 358 3773000 6930 4 1 2 FALSE FALSE FALSE
## 359 NA 3480 2 1 1 TRUE FALSE FALSE
## 360 3710000 3600 3 1 1 TRUE FALSE FALSE
## 361 3710000 4040 2 1 1 TRUE FALSE FALSE
## 362 NA 6020 3 1 1 TRUE FALSE FALSE
## 363 3710000 4050 2 1 1 TRUE FALSE FALSE
## 364 NA 3584 2 1 1 TRUE FALSE FALSE
## 365 NA 3120 3 1 2 FALSE FALSE TRUE
## 366 3703000 5450 2 1 1 TRUE FALSE FALSE
## 367 3675000 3630 2 1 1 TRUE FALSE TRUE
## 368 NA 3630 2 1 1 TRUE FALSE FALSE
## 369 NA 5640 2 1 1 FALSE FALSE FALSE
## 370 3675000 3600 2 1 1 TRUE FALSE FALSE
## 371 3640000 4280 2 1 1 TRUE FALSE FALSE
## 372 3640000 3570 3 1 2 TRUE FALSE TRUE
## 373 3640000 3180 3 1 2 FALSE FALSE TRUE
## 374 3640000 3000 2 1 2 TRUE FALSE FALSE
## 375 3640000 3520 2 2 1 TRUE FALSE TRUE
## 376 3640000 5960 3 1 2 TRUE TRUE TRUE
## 377 3640000 4130 3 2 2 TRUE FALSE FALSE
## 378 3640000 2850 3 2 2 FALSE FALSE TRUE
## 379 NA 2275 3 1 3 TRUE FALSE FALSE
## 380 3633000 3520 3 1 1 TRUE FALSE FALSE
## 381 3605000 4500 2 1 1 TRUE FALSE FALSE
## 382 3605000 4000 2 1 1 TRUE FALSE FALSE
## 383 3570000 3150 3 1 2 TRUE FALSE TRUE
## 384 3570000 4500 4 2 2 TRUE FALSE TRUE
## 385 3570000 4500 2 1 1 FALSE FALSE FALSE
## 386 3570000 3640 2 1 1 TRUE FALSE FALSE
## 387 NA 3850 3 1 1 TRUE FALSE FALSE
## 388 3500000 4240 3 1 2 TRUE FALSE FALSE
## 389 NA 3650 3 1 2 TRUE FALSE FALSE
## 390 3500000 4600 4 1 2 TRUE FALSE FALSE
## 391 3500000 2135 3 2 2 NA FALSE FALSE
## 392 NA 3036 3 1 2 TRUE FALSE TRUE
## 393 3500000 3990 3 1 2 TRUE FALSE FALSE
## 394 NA 7424 3 1 1 FALSE FALSE FALSE
## 395 3500000 3480 3 1 1 FALSE FALSE FALSE
## 396 3500000 3600 6 1 2 NA FALSE FALSE
## 397 3500000 3640 2 1 1 TRUE FALSE FALSE
## 398 3500000 5900 2 1 1 TRUE FALSE FALSE
## 399 3500000 3120 3 1 2 TRUE FALSE FALSE
## 400 3500000 7350 2 1 1 TRUE FALSE FALSE
## 401 3500000 3512 2 1 1 TRUE FALSE FALSE
## 402 NA 9500 3 1 2 TRUE FALSE FALSE
## 403 3500000 5880 2 1 1 NA FALSE FALSE
## 404 3500000 12944 3 1 1 TRUE FALSE FALSE
## 405 3493000 4900 3 1 2 FALSE FALSE FALSE
## 406 NA 3060 3 1 1 TRUE FALSE FALSE
## 407 3465000 5320 2 1 1 TRUE FALSE FALSE
## 408 NA 2145 3 1 3 TRUE FALSE FALSE
## 409 3430000 4000 2 1 1 TRUE FALSE FALSE
## 410 NA 3185 2 1 1 TRUE FALSE FALSE
## 411 3430000 3850 3 1 1 TRUE FALSE FALSE
## 412 3430000 2145 3 1 3 TRUE FALSE FALSE
## 413 3430000 2610 3 1 2 TRUE FALSE TRUE
## 414 3430000 1950 3 2 2 TRUE FALSE TRUE
## 415 3423000 4040 2 1 1 TRUE FALSE FALSE
## 416 3395000 4785 3 1 2 TRUE TRUE TRUE
## 417 3395000 3450 3 1 1 TRUE FALSE TRUE
## 418 3395000 3640 2 1 1 TRUE FALSE FALSE
## 419 3360000 3500 4 1 2 NA FALSE FALSE
## 420 3360000 4960 4 1 3 FALSE FALSE FALSE
## 421 3360000 4120 2 1 2 TRUE FALSE FALSE
## 422 NA 4750 2 1 1 TRUE FALSE FALSE
## 423 3360000 3720 2 1 1 FALSE FALSE FALSE
## 424 3360000 3750 3 1 1 NA FALSE FALSE
## 425 3360000 3100 3 1 2 FALSE FALSE TRUE
## 426 NA 3185 2 1 1 TRUE FALSE TRUE
## 427 3353000 2700 3 1 1 FALSE FALSE FALSE
## 428 3332000 2145 3 1 2 TRUE FALSE TRUE
## 429 NA 4040 2 1 1 TRUE FALSE FALSE
## 430 3325000 4775 4 1 2 TRUE FALSE FALSE
## 431 3290000 2500 2 1 1 FALSE FALSE FALSE
## 432 3290000 3180 4 1 2 TRUE FALSE TRUE
## 433 3290000 6060 3 1 1 TRUE TRUE TRUE
## 434 3290000 3480 4 1 2 FALSE FALSE FALSE
## 435 3290000 3792 4 1 2 NA FALSE FALSE
## 436 NA 4040 2 1 1 TRUE FALSE FALSE
## 437 3290000 2145 3 1 2 TRUE FALSE TRUE
## 438 3290000 5880 3 1 1 TRUE FALSE FALSE
## 439 3255000 4500 2 1 1 FALSE FALSE FALSE
## 440 3255000 3930 2 1 1 FALSE FALSE FALSE
## 441 3234000 3640 4 1 2 TRUE FALSE TRUE
## 442 3220000 4370 3 1 2 TRUE FALSE FALSE
## 443 3220000 2684 2 1 1 TRUE FALSE FALSE
## 444 3220000 4320 3 1 1 FALSE FALSE FALSE
## 445 NA 3120 3 1 2 NA FALSE FALSE
## 446 3150000 3450 1 1 1 TRUE FALSE FALSE
## 447 3150000 3986 2 2 1 FALSE TRUE TRUE
## 448 3150000 3500 2 1 1 FALSE FALSE TRUE
## 449 3150000 4095 2 1 1 TRUE FALSE FALSE
## 450 3150000 1650 3 1 2 FALSE FALSE TRUE
## 451 3150000 3450 3 1 2 TRUE FALSE TRUE
## 452 3150000 6750 2 1 1 TRUE FALSE FALSE
## 453 NA 9000 3 1 2 TRUE FALSE FALSE
## 454 NA 3069 2 1 1 TRUE FALSE FALSE
## 455 3143000 4500 3 1 2 TRUE FALSE FALSE
## 456 3129000 5495 3 1 1 TRUE FALSE TRUE
## 457 3118850 2398 3 1 1 TRUE FALSE FALSE
## 458 3115000 3000 3 1 1 FALSE FALSE FALSE
## 459 3115000 3850 3 1 2 TRUE FALSE FALSE
## 460 3115000 3500 2 1 1 TRUE FALSE FALSE
## 461 3087000 8100 2 1 1 TRUE FALSE FALSE
## 462 3080000 4960 2 1 1 TRUE FALSE TRUE
## 463 3080000 2160 3 1 2 FALSE FALSE TRUE
## 464 NA 3090 2 1 1 TRUE TRUE TRUE
## 465 3080000 4500 2 1 2 TRUE FALSE FALSE
## 466 3045000 3800 2 1 1 TRUE FALSE FALSE
## 467 3010000 3090 3 1 2 FALSE FALSE FALSE
## 468 NA 3240 3 1 2 TRUE FALSE FALSE
## 469 3010000 2835 2 1 1 TRUE FALSE FALSE
## 470 3010000 4600 2 1 1 TRUE FALSE FALSE
## 471 3010000 5076 3 1 1 FALSE FALSE FALSE
## 472 3010000 3750 3 1 2 TRUE FALSE FALSE
## 473 3010000 3630 4 1 2 TRUE FALSE FALSE
## 474 3003000 8050 2 1 1 TRUE FALSE FALSE
## 475 2975000 4352 4 1 2 FALSE FALSE FALSE
## 476 2961000 3000 2 1 2 NA FALSE FALSE
## 477 NA 5850 3 1 2 TRUE FALSE TRUE
## 478 2940000 4960 2 1 1 TRUE FALSE FALSE
## 479 NA 3600 3 1 2 FALSE FALSE FALSE
## 480 2940000 3660 4 1 2 FALSE FALSE FALSE
## 481 NA 3480 3 1 2 FALSE FALSE FALSE
## 482 2940000 2700 2 1 1 NA FALSE FALSE
## 483 2940000 3150 3 1 2 NA FALSE FALSE
## 484 2940000 6615 3 1 2 TRUE FALSE FALSE
## 485 2870000 3040 2 1 1 FALSE FALSE FALSE
## 486 2870000 3630 2 1 1 TRUE FALSE FALSE
## 487 2870000 6000 2 1 1 TRUE FALSE FALSE
## 488 2870000 5400 4 1 2 TRUE FALSE FALSE
## 489 2852500 5200 4 1 3 TRUE FALSE FALSE
## 490 2835000 3300 3 1 2 FALSE FALSE FALSE
## 491 2835000 4350 3 1 2 FALSE FALSE FALSE
## 492 NA 2640 2 1 1 FALSE FALSE FALSE
## 493 2800000 2650 3 1 2 TRUE FALSE TRUE
## 494 2800000 3960 3 1 1 TRUE FALSE FALSE
## 495 2730000 6800 2 1 1 TRUE FALSE FALSE
## 496 NA 4000 3 1 2 TRUE FALSE FALSE
## 497 NA 4000 2 1 1 TRUE FALSE FALSE
## 498 2660000 3934 2 1 1 NA FALSE FALSE
## 499 2660000 2000 2 1 2 NA FALSE FALSE
## 500 2660000 3630 3 3 2 FALSE TRUE FALSE
## 501 2660000 2800 3 1 1 TRUE FALSE FALSE
## 502 NA 2430 3 1 1 NA FALSE FALSE
## 503 NA 3480 2 1 1 TRUE FALSE FALSE
## 504 NA 4000 3 1 1 TRUE FALSE FALSE
## 505 2653000 3185 2 1 1 TRUE FALSE FALSE
## 506 2653000 4000 3 1 2 TRUE FALSE FALSE
## 507 2604000 2910 2 1 1 NA FALSE FALSE
## 508 2590000 3600 2 1 1 TRUE FALSE FALSE
## 509 NA 4400 2 1 1 TRUE FALSE FALSE
## 510 2590000 3600 2 2 2 TRUE FALSE TRUE
## 511 2520000 2880 3 1 1 FALSE FALSE FALSE
## 512 NA 3180 3 1 1 FALSE FALSE FALSE
## 513 2520000 3000 2 1 2 TRUE FALSE FALSE
## 514 2485000 4400 3 1 2 TRUE FALSE FALSE
## 515 2485000 3000 3 1 2 FALSE FALSE FALSE
## 516 2450000 3210 3 1 2 TRUE FALSE TRUE
## 517 2450000 3240 2 1 1 FALSE TRUE FALSE
## 518 2450000 3000 2 1 1 TRUE FALSE FALSE
## 519 2450000 3500 2 1 1 TRUE TRUE FALSE
## 520 NA 4840 2 1 2 TRUE FALSE FALSE
## 521 2450000 7700 2 1 1 TRUE FALSE FALSE
## 522 2408000 3635 2 1 1 FALSE FALSE FALSE
## 523 2380000 2475 3 1 2 TRUE FALSE FALSE
## 524 2380000 2787 4 2 2 TRUE FALSE FALSE
## 525 2380000 3264 2 1 1 TRUE FALSE FALSE
## 526 NA 3640 2 1 1 TRUE FALSE FALSE
## 527 2310000 3180 2 1 1 TRUE FALSE FALSE
## 528 NA 1836 2 1 1 FALSE FALSE TRUE
## 529 2275000 3970 1 1 1 FALSE FALSE FALSE
## 530 2275000 3970 3 1 2 NA FALSE TRUE
## 531 2240000 1950 3 1 1 FALSE FALSE FALSE
## 532 2233000 5300 3 1 1 FALSE FALSE FALSE
## 533 2135000 3000 2 1 1 FALSE FALSE FALSE
## 534 2100000 2400 3 1 2 TRUE FALSE FALSE
## 535 2100000 3000 4 1 2 TRUE FALSE FALSE
## 536 2100000 3360 2 1 1 TRUE FALSE FALSE
## 537 NA 3420 5 1 2 FALSE FALSE FALSE
## 538 NA 1700 3 1 2 TRUE FALSE FALSE
## 539 1890000 3649 2 1 1 TRUE FALSE FALSE
## 540 1855000 2990 2 1 1 FALSE FALSE FALSE
## 541 1820000 3000 2 1 1 TRUE FALSE TRUE
## 542 NA 2400 3 1 1 FALSE FALSE FALSE
## 543 1750000 3620 2 1 1 NA FALSE FALSE
## 544 1750000 2910 3 1 1 FALSE FALSE FALSE
## 545 1750000 3850 3 1 2 TRUE FALSE FALSE
## hotwaterheating airconditioning parking prefarea furnishingstatus
## 1 FALSE TRUE 2 TRUE furnished
## 2 FALSE TRUE 3 FALSE furnished
## 3 FALSE FALSE 2 TRUE semi-furnished
## 4 FALSE TRUE 3 TRUE furnished
## 5 FALSE TRUE 2 FALSE furnished
## 6 FALSE TRUE 2 TRUE semi-furnished
## 7 FALSE TRUE 2 TRUE semi-furnished
## 8 FALSE FALSE 0 FALSE unfurnished
## 9 FALSE TRUE 2 TRUE furnished
## 10 FALSE TRUE 1 TRUE unfurnished
## 11 FALSE TRUE 2 TRUE furnished
## 12 TRUE FALSE 2 FALSE semi-furnished
## 13 FALSE TRUE 1 TRUE semi-furnished
## 14 TRUE FALSE 2 FALSE furnished
## 15 FALSE FALSE 0 TRUE semi-furnished
## 16 FALSE FALSE 2 FALSE semi-furnished
## 17 FALSE TRUE 1 TRUE unfurnished
## 18 FALSE TRUE 2 FALSE furnished
## 19 FALSE TRUE 2 FALSE furnished
## 20 FALSE TRUE 1 TRUE semi-furnished
## 21 TRUE FALSE 2 FALSE semi-furnished
## 22 FALSE TRUE 2 NA unfurnished
## 23 FALSE TRUE 1 FALSE furnished
## 24 FALSE TRUE 1 FALSE furnished
## 25 FALSE TRUE 2 FALSE furnished
## 26 FALSE TRUE 2 TRUE furnished
## 27 FALSE TRUE 0 TRUE semi-furnished
## 28 FALSE FALSE 1 FALSE semi-furnished
## 29 TRUE FALSE 2 FALSE unfurnished
## 30 FALSE TRUE 1 TRUE semi-furnished
## 31 FALSE TRUE 2 FALSE unfurnished
## 32 FALSE TRUE 2 FALSE semi-furnished
## 33 FALSE TRUE 1 TRUE furnished
## 34 FALSE FALSE 1 FALSE unfurnished
## 35 FALSE TRUE 1 FALSE furnished
## 36 FALSE TRUE 2 FALSE furnished
## 37 TRUE FALSE 1 TRUE furnished
## 38 FALSE TRUE 2 FALSE furnished
## 39 FALSE TRUE 2 NA unfurnished
## 40 FALSE TRUE 1 NA semi-furnished
## 41 FALSE TRUE 0 TRUE furnished
## 42 FALSE TRUE 0 TRUE furnished
## 43 FALSE TRUE 2 FALSE unfurnished
## 44 FALSE FALSE 2 FALSE semi-furnished
## 45 FALSE TRUE 1 NA furnished
## 46 FALSE TRUE 0 FALSE semi-furnished
## 47 FALSE TRUE 1 FALSE furnished
## 48 FALSE TRUE 3 TRUE furnished
## 49 FALSE FALSE 1 NA unfurnished
## 50 FALSE TRUE 0 TRUE semi-furnished
## 51 FALSE FALSE 1 TRUE unfurnished
## 52 FALSE TRUE 1 FALSE unfurnished
## 53 FALSE TRUE 1 FALSE furnished
## 54 FALSE TRUE 2 FALSE semi-furnished
## 55 FALSE TRUE 1 FALSE semi-furnished
## 56 FALSE TRUE 1 FALSE unfurnished
## 57 FALSE FALSE 1 TRUE semi-furnished
## 58 FALSE TRUE 1 TRUE furnished
## 59 FALSE TRUE 1 FALSE semi-furnished
## 60 FALSE TRUE 1 FALSE furnished
## 61 FALSE FALSE 1 FALSE semi-furnished
## 62 FALSE TRUE 1 FALSE semi-furnished
## 63 FALSE TRUE 1 FALSE furnished
## 64 FALSE TRUE 2 TRUE furnished
## 65 FALSE TRUE 1 NA furnished
## 66 FALSE TRUE 1 FALSE furnished
## 67 TRUE FALSE 1 FALSE furnished
## 68 FALSE FALSE 2 FALSE unfurnished
## 69 FALSE TRUE 1 FALSE furnished
## 70 FALSE FALSE 2 TRUE furnished
## 71 FALSE TRUE 0 TRUE semi-furnished
## 72 FALSE TRUE 0 FALSE unfurnished
## 73 FALSE TRUE 0 TRUE unfurnished
## 74 FALSE FALSE 0 TRUE furnished
## 75 TRUE FALSE 1 FALSE furnished
## 76 TRUE FALSE 0 FALSE semi-furnished
## 77 FALSE TRUE 0 TRUE furnished
## 78 FALSE TRUE 0 TRUE furnished
## 79 FALSE TRUE 2 TRUE furnished
## 80 FALSE TRUE 0 FALSE furnished
## 81 TRUE FALSE 1 TRUE semi-furnished
## 82 FALSE TRUE 1 FALSE semi-furnished
## 83 FALSE TRUE 1 TRUE furnished
## 84 FALSE TRUE 0 FALSE semi-furnished
## 85 TRUE FALSE 2 FALSE semi-furnished
## 86 FALSE TRUE 0 FALSE furnished
## 87 FALSE FALSE 0 TRUE unfurnished
## 88 FALSE FALSE 2 FALSE semi-furnished
## 89 FALSE TRUE 2 TRUE unfurnished
## 90 FALSE FALSE 2 FALSE furnished
## 91 FALSE TRUE 0 FALSE semi-furnished
## 92 FALSE FALSE 2 TRUE furnished
## 93 FALSE TRUE 0 FALSE furnished
## 94 FALSE TRUE 3 FALSE semi-furnished
## 95 FALSE FALSE 1 NA semi-furnished
## 96 FALSE TRUE 2 FALSE semi-furnished
## 97 FALSE FALSE 1 TRUE furnished
## 98 FALSE TRUE 1 TRUE semi-furnished
## 99 FALSE TRUE 0 TRUE unfurnished
## 100 FALSE FALSE 0 TRUE unfurnished
## 101 FALSE TRUE 0 TRUE unfurnished
## 102 FALSE FALSE 1 TRUE unfurnished
## 103 FALSE TRUE 1 FALSE semi-furnished
## 104 FALSE TRUE 0 FALSE furnished
## 105 FALSE FALSE 2 TRUE furnished
## 106 FALSE TRUE 0 FALSE unfurnished
## 107 FALSE TRUE 0 TRUE semi-furnished
## 108 FALSE FALSE 0 TRUE unfurnished
## 109 FALSE FALSE 1 FALSE semi-furnished
## 110 TRUE FALSE 1 FALSE semi-furnished
## 111 FALSE FALSE 2 TRUE semi-furnished
## 112 FALSE TRUE 2 NA unfurnished
## 113 FALSE FALSE 0 FALSE furnished
## 114 FALSE FALSE 2 TRUE furnished
## 115 FALSE FALSE 2 NA furnished
## 116 FALSE TRUE 2 TRUE semi-furnished
## 117 FALSE FALSE 0 NA unfurnished
## 118 FALSE TRUE 0 FALSE furnished
## 119 FALSE TRUE 0 TRUE furnished
## 120 FALSE TRUE 2 TRUE semi-furnished
## 121 FALSE FALSE 2 TRUE furnished
## 122 FALSE TRUE 0 TRUE semi-furnished
## 123 FALSE FALSE 1 TRUE semi-furnished
## 124 FALSE FALSE 0 FALSE furnished
## 125 FALSE FALSE 1 FALSE furnished
## 126 FALSE TRUE 2 FALSE semi-furnished
## 127 FALSE FALSE 2 TRUE unfurnished
## 128 FALSE TRUE 0 NA unfurnished
## 129 FALSE TRUE 1 FALSE furnished
## 130 FALSE FALSE 2 TRUE semi-furnished
## 131 FALSE FALSE 0 NA unfurnished
## 132 FALSE FALSE 0 FALSE semi-furnished
## 133 FALSE TRUE 0 FALSE semi-furnished
## 134 FALSE TRUE 0 FALSE unfurnished
## 135 FALSE FALSE 2 TRUE semi-furnished
## 136 FALSE TRUE 0 FALSE unfurnished
## 137 FALSE TRUE 2 FALSE unfurnished
## 138 FALSE FALSE 1 FALSE semi-furnished
## 139 FALSE TRUE 0 FALSE semi-furnished
## 140 FALSE TRUE 2 TRUE furnished
## 141 FALSE TRUE 0 FALSE unfurnished
## 142 FALSE FALSE 1 TRUE semi-furnished
## 143 FALSE FALSE 1 FALSE semi-furnished
## 144 TRUE FALSE 0 FALSE unfurnished
## 145 FALSE TRUE 1 FALSE furnished
## 146 FALSE FALSE 0 FALSE furnished
## 147 FALSE FALSE 1 FALSE semi-furnished
## 148 FALSE FALSE 1 FALSE semi-furnished
## 149 FALSE FALSE 0 TRUE semi-furnished
## 150 FALSE FALSE 0 TRUE semi-furnished
## 151 FALSE TRUE 0 TRUE unfurnished
## 152 FALSE TRUE 2 TRUE semi-furnished
## 153 FALSE TRUE 0 TRUE furnished
## 154 FALSE FALSE 0 NA semi-furnished
## 155 FALSE FALSE 2 FALSE semi-furnished
## 156 FALSE FALSE 2 TRUE furnished
## 157 FALSE FALSE 0 TRUE semi-furnished
## 158 FALSE FALSE 1 FALSE furnished
## 159 FALSE FALSE 2 FALSE semi-furnished
## 160 FALSE TRUE 0 FALSE furnished
## 161 FALSE TRUE 0 NA furnished
## 162 FALSE TRUE 0 TRUE semi-furnished
## 163 FALSE FALSE 0 TRUE semi-furnished
## 164 FALSE TRUE 0 TRUE semi-furnished
## 165 FALSE FALSE 1 TRUE furnished
## 166 TRUE FALSE 0 FALSE unfurnished
## 167 FALSE TRUE 2 TRUE unfurnished
## 168 FALSE TRUE 2 FALSE semi-furnished
## 169 FALSE TRUE 0 FALSE furnished
## 170 FALSE TRUE 0 FALSE semi-furnished
## 171 FALSE FALSE 0 FALSE semi-furnished
## 172 FALSE FALSE 1 TRUE semi-furnished
## 173 FALSE TRUE 2 TRUE unfurnished
## 174 FALSE TRUE 0 TRUE unfurnished
## 175 FALSE FALSE 1 TRUE unfurnished
## 176 FALSE FALSE 2 FALSE semi-furnished
## 177 FALSE TRUE 2 FALSE furnished
## 178 FALSE FALSE 0 TRUE semi-furnished
## 179 FALSE FALSE 2 TRUE semi-furnished
## 180 FALSE FALSE 2 NA semi-furnished
## 181 FALSE TRUE 2 FALSE semi-furnished
## 182 FALSE FALSE 1 TRUE furnished
## 183 FALSE TRUE 0 FALSE semi-furnished
## 184 FALSE FALSE 1 TRUE semi-furnished
## 185 FALSE FALSE 0 FALSE furnished
## 186 FALSE FALSE 0 FALSE unfurnished
## 187 FALSE FALSE 0 TRUE furnished
## 188 FALSE TRUE 0 TRUE semi-furnished
## 189 FALSE TRUE 0 TRUE unfurnished
## 190 FALSE FALSE 0 FALSE semi-furnished
## 191 FALSE TRUE 2 FALSE furnished
## 192 FALSE FALSE 0 FALSE semi-furnished
## 193 FALSE FALSE 0 TRUE furnished
## 194 FALSE FALSE 0 FALSE semi-furnished
## 195 FALSE FALSE 0 FALSE semi-furnished
## 196 FALSE FALSE 2 FALSE semi-furnished
## 197 TRUE FALSE 0 FALSE semi-furnished
## 198 FALSE TRUE 1 FALSE semi-furnished
## 199 FALSE TRUE 0 FALSE semi-furnished
## 200 FALSE FALSE 1 NA furnished
## 201 FALSE TRUE 0 FALSE semi-furnished
## 202 FALSE TRUE 0 FALSE semi-furnished
## 203 FALSE FALSE 1 FALSE semi-furnished
## 204 FALSE FALSE 0 FALSE semi-furnished
## 205 FALSE FALSE 0 FALSE semi-furnished
## 206 FALSE TRUE 2 FALSE semi-furnished
## 207 FALSE TRUE 0 NA semi-furnished
## 208 FALSE TRUE 0 FALSE semi-furnished
## 209 FALSE FALSE 0 FALSE semi-furnished
## 210 FALSE FALSE 0 FALSE unfurnished
## 211 FALSE FALSE 2 FALSE semi-furnished
## 212 FALSE FALSE 2 FALSE furnished
## 213 FALSE TRUE 2 FALSE semi-furnished
## 214 FALSE FALSE 0 NA semi-furnished
## 215 FALSE FALSE 0 FALSE unfurnished
## 216 FALSE FALSE 0 FALSE unfurnished
## 217 FALSE FALSE 2 TRUE semi-furnished
## 218 FALSE TRUE 2 TRUE furnished
## 219 FALSE TRUE 0 TRUE semi-furnished
## 220 FALSE FALSE 0 FALSE unfurnished
## 221 FALSE TRUE 2 FALSE semi-furnished
## 222 FALSE FALSE 0 FALSE semi-furnished
## 223 FALSE TRUE 2 FALSE semi-furnished
## 224 FALSE TRUE 1 FALSE furnished
## 225 FALSE TRUE 2 TRUE unfurnished
## 226 FALSE TRUE 3 FALSE semi-furnished
## 227 FALSE TRUE 0 FALSE semi-furnished
## 228 FALSE TRUE 1 FALSE furnished
## 229 FALSE FALSE 2 FALSE semi-furnished
## 230 FALSE FALSE 1 FALSE semi-furnished
## 231 FALSE FALSE 0 TRUE semi-furnished
## 232 FALSE FALSE 0 TRUE semi-furnished
## 233 FALSE FALSE 0 NA furnished
## 234 FALSE TRUE 0 FALSE unfurnished
## 235 FALSE FALSE 2 FALSE semi-furnished
## 236 FALSE TRUE 1 FALSE semi-furnished
## 237 FALSE FALSE 0 TRUE semi-furnished
## 238 FALSE FALSE 0 FALSE semi-furnished
## 239 FALSE FALSE 0 FALSE semi-furnished
## 240 FALSE FALSE 1 NA furnished
## 241 FALSE FALSE 1 TRUE semi-furnished
## 242 FALSE FALSE 2 NA semi-furnished
## 243 FALSE TRUE 0 FALSE furnished
## 244 FALSE FALSE 0 FALSE furnished
## 245 FALSE FALSE 0 TRUE semi-furnished
## 246 FALSE FALSE 2 TRUE unfurnished
## 247 FALSE FALSE 0 TRUE semi-furnished
## 248 FALSE FALSE 3 FALSE unfurnished
## 249 FALSE FALSE 0 FALSE semi-furnished
## 250 FALSE FALSE 0 TRUE furnished
## 251 FALSE FALSE 0 FALSE semi-furnished
## 252 FALSE FALSE 1 FALSE semi-furnished
## 253 FALSE FALSE 0 FALSE semi-furnished
## 254 FALSE FALSE 0 TRUE furnished
## 255 FALSE TRUE 2 FALSE semi-furnished
## 256 FALSE TRUE 1 FALSE unfurnished
## 257 FALSE FALSE 2 NA furnished
## 258 FALSE FALSE 0 FALSE furnished
## 259 FALSE FALSE 1 FALSE semi-furnished
## 260 FALSE TRUE 1 FALSE furnished
## 261 FALSE TRUE 1 FALSE furnished
## 262 FALSE FALSE 0 FALSE semi-furnished
## 263 FALSE FALSE 0 FALSE semi-furnished
## 264 FALSE FALSE 0 FALSE semi-furnished
## 265 FALSE FALSE 0 FALSE semi-furnished
## 266 FALSE FALSE 0 TRUE semi-furnished
## 267 FALSE FALSE 2 TRUE unfurnished
## 268 FALSE FALSE 1 NA semi-furnished
## 269 FALSE TRUE 0 FALSE semi-furnished
## 270 FALSE FALSE 0 FALSE unfurnished
## 271 TRUE FALSE 1 NA furnished
## 272 FALSE FALSE 0 FALSE semi-furnished
## 273 FALSE FALSE 2 FALSE semi-furnished
## 274 FALSE FALSE 2 FALSE furnished
## 275 FALSE FALSE 0 FALSE semi-furnished
## 276 FALSE FALSE 0 FALSE furnished
## 277 FALSE FALSE 1 FALSE semi-furnished
## 278 FALSE FALSE 1 TRUE semi-furnished
## 279 FALSE FALSE 2 TRUE semi-furnished
## 280 FALSE FALSE 0 FALSE furnished
## 281 FALSE FALSE 0 FALSE unfurnished
## 282 FALSE TRUE 2 FALSE furnished
## 283 FALSE TRUE 0 FALSE unfurnished
## 284 FALSE FALSE 0 FALSE furnished
## 285 FALSE FALSE 1 FALSE furnished
## 286 FALSE FALSE 0 FALSE semi-furnished
## 287 FALSE FALSE 0 TRUE furnished
## 288 FALSE TRUE 0 FALSE unfurnished
## 289 FALSE TRUE 0 FALSE unfurnished
## 290 FALSE FALSE 2 FALSE semi-furnished
## 291 FALSE FALSE 0 NA semi-furnished
## 292 FALSE TRUE 0 FALSE unfurnished
## 293 FALSE FALSE 0 FALSE semi-furnished
## 294 FALSE FALSE 1 FALSE unfurnished
## 295 FALSE FALSE 0 FALSE semi-furnished
## 296 FALSE FALSE 0 FALSE semi-furnished
## 297 FALSE TRUE 1 FALSE semi-furnished
## 298 FALSE FALSE 0 FALSE unfurnished
## 299 TRUE FALSE 2 FALSE semi-furnished
## 300 FALSE FALSE 3 FALSE furnished
## 301 FALSE FALSE 0 FALSE semi-furnished
## 302 FALSE FALSE 0 TRUE semi-furnished
## 303 FALSE FALSE 1 TRUE unfurnished
## 304 FALSE FALSE 0 FALSE furnished
## 305 FALSE FALSE 3 FALSE semi-furnished
## 306 FALSE FALSE 1 FALSE semi-furnished
## 307 FALSE FALSE 1 FALSE semi-furnished
## 308 FALSE FALSE 2 FALSE semi-furnished
## 309 FALSE FALSE 1 FALSE semi-furnished
## 310 FALSE TRUE 0 FALSE semi-furnished
## 311 FALSE FALSE 0 FALSE semi-furnished
## 312 FALSE FALSE 1 FALSE semi-furnished
## 313 FALSE TRUE 0 TRUE furnished
## 314 FALSE FALSE 0 FALSE semi-furnished
## 315 FALSE FALSE 1 FALSE semi-furnished
## 316 FALSE TRUE 0 FALSE semi-furnished
## 317 FALSE FALSE 1 FALSE unfurnished
## 318 FALSE FALSE 2 FALSE unfurnished
## 319 FALSE FALSE 0 NA semi-furnished
## 320 FALSE TRUE 2 FALSE semi-furnished
## 321 FALSE FALSE 2 TRUE furnished
## 322 TRUE FALSE 2 FALSE semi-furnished
## 323 FALSE TRUE 1 FALSE furnished
## 324 FALSE FALSE 3 FALSE semi-furnished
## 325 FALSE TRUE 0 FALSE semi-furnished
## 326 FALSE TRUE 0 FALSE semi-furnished
## 327 FALSE FALSE 0 FALSE unfurnished
## 328 FALSE TRUE 1 FALSE semi-furnished
## 329 FALSE TRUE 0 FALSE semi-furnished
## 330 FALSE FALSE 0 FALSE furnished
## 331 FALSE FALSE 0 TRUE unfurnished
## 332 FALSE FALSE 3 FALSE furnished
## 333 FALSE FALSE 0 NA semi-furnished
## 334 FALSE FALSE 0 NA semi-furnished
## 335 TRUE FALSE 1 FALSE furnished
## 336 FALSE TRUE 2 FALSE furnished
## 337 FALSE TRUE 2 FALSE semi-furnished
## 338 FALSE FALSE 0 TRUE unfurnished
## 339 FALSE FALSE 0 FALSE semi-furnished
## 340 FALSE FALSE 0 FALSE furnished
## 341 FALSE FALSE 0 FALSE semi-furnished
## 342 FALSE FALSE 2 FALSE semi-furnished
## 343 FALSE TRUE 0 FALSE furnished
## 344 FALSE FALSE 0 FALSE semi-furnished
## 345 FALSE FALSE 0 FALSE semi-furnished
## 346 FALSE FALSE 0 NA semi-furnished
## 347 FALSE FALSE 0 TRUE semi-furnished
## 348 FALSE FALSE 0 FALSE unfurnished
## 349 FALSE FALSE 0 FALSE semi-furnished
## 350 FALSE FALSE 0 FALSE semi-furnished
## 351 TRUE FALSE 1 FALSE semi-furnished
## 352 FALSE FALSE 0 FALSE semi-furnished
## 353 FALSE FALSE 2 FALSE unfurnished
## 354 FALSE FALSE 0 TRUE furnished
## 355 FALSE FALSE 1 FALSE furnished
## 356 FALSE FALSE 2 FALSE furnished
## 357 FALSE TRUE 1 FALSE furnished
## 358 FALSE FALSE 1 FALSE furnished
## 359 FALSE FALSE 0 TRUE semi-furnished
## 360 FALSE FALSE 1 FALSE unfurnished
## 361 FALSE FALSE 0 FALSE semi-furnished
## 362 FALSE FALSE 0 FALSE semi-furnished
## 363 FALSE FALSE 0 FALSE furnished
## 364 TRUE FALSE 0 FALSE semi-furnished
## 365 TRUE FALSE 0 FALSE semi-furnished
## 366 FALSE FALSE 0 NA furnished
## 367 FALSE FALSE 0 FALSE furnished
## 368 FALSE TRUE 0 FALSE unfurnished
## 369 FALSE FALSE 0 FALSE semi-furnished
## 370 FALSE FALSE 0 FALSE furnished
## 371 FALSE TRUE 2 FALSE semi-furnished
## 372 FALSE FALSE 0 FALSE semi-furnished
## 373 FALSE FALSE 0 FALSE semi-furnished
## 374 FALSE TRUE 0 FALSE furnished
## 375 FALSE FALSE 0 FALSE semi-furnished
## 376 FALSE FALSE 0 FALSE unfurnished
## 377 FALSE FALSE 2 FALSE semi-furnished
## 378 FALSE FALSE 0 NA unfurnished
## 379 TRUE TRUE 0 NA semi-furnished
## 380 FALSE FALSE 2 TRUE unfurnished
## 381 FALSE FALSE 0 FALSE semi-furnished
## 382 FALSE FALSE 0 TRUE semi-furnished
## 383 FALSE FALSE 0 FALSE furnished
## 384 FALSE FALSE 2 FALSE furnished
## 385 FALSE FALSE 0 FALSE furnished
## 386 FALSE FALSE 0 FALSE unfurnished
## 387 FALSE FALSE 2 FALSE unfurnished
## 388 FALSE TRUE 0 FALSE semi-furnished
## 389 FALSE FALSE 0 FALSE unfurnished
## 390 FALSE FALSE 0 FALSE semi-furnished
## 391 FALSE FALSE 0 FALSE unfurnished
## 392 FALSE FALSE 0 FALSE semi-furnished
## 393 FALSE FALSE 0 FALSE semi-furnished
## 394 FALSE FALSE 0 FALSE unfurnished
## 395 FALSE TRUE 0 FALSE unfurnished
## 396 FALSE FALSE 1 FALSE unfurnished
## 397 FALSE FALSE 1 FALSE semi-furnished
## 398 FALSE FALSE 1 NA furnished
## 399 FALSE FALSE 1 FALSE unfurnished
## 400 FALSE FALSE 1 FALSE semi-furnished
## 401 FALSE FALSE 1 TRUE unfurnished
## 402 FALSE FALSE 3 TRUE unfurnished
## 403 FALSE FALSE 0 NA unfurnished
## 404 FALSE FALSE 0 FALSE unfurnished
## 405 FALSE FALSE 0 FALSE unfurnished
## 406 FALSE FALSE 0 FALSE unfurnished
## 407 FALSE FALSE 1 TRUE unfurnished
## 408 FALSE FALSE 0 TRUE furnished
## 409 FALSE FALSE 0 FALSE unfurnished
## 410 FALSE FALSE 2 FALSE unfurnished
## 411 FALSE FALSE 0 FALSE unfurnished
## 412 FALSE FALSE 0 TRUE furnished
## 413 FALSE FALSE 0 TRUE unfurnished
## 414 FALSE FALSE 0 TRUE unfurnished
## 415 FALSE FALSE 0 FALSE unfurnished
## 416 FALSE TRUE 1 FALSE furnished
## 417 FALSE FALSE 2 FALSE unfurnished
## 418 FALSE FALSE 0 FALSE furnished
## 419 FALSE TRUE 2 FALSE unfurnished
## 420 FALSE FALSE 0 FALSE semi-furnished
## 421 FALSE FALSE 0 FALSE unfurnished
## 422 FALSE FALSE 0 FALSE unfurnished
## 423 FALSE TRUE 0 FALSE unfurnished
## 424 FALSE FALSE 0 FALSE unfurnished
## 425 FALSE FALSE 0 FALSE semi-furnished
## 426 FALSE FALSE 2 FALSE furnished
## 427 FALSE FALSE 0 NA furnished
## 428 FALSE FALSE 0 TRUE furnished
## 429 FALSE FALSE 1 FALSE unfurnished
## 430 FALSE FALSE 0 FALSE unfurnished
## 431 FALSE TRUE 0 FALSE unfurnished
## 432 FALSE TRUE 0 FALSE unfurnished
## 433 FALSE FALSE 0 FALSE furnished
## 434 FALSE FALSE 1 FALSE semi-furnished
## 435 FALSE FALSE 0 FALSE semi-furnished
## 436 FALSE FALSE 0 FALSE unfurnished
## 437 FALSE FALSE 0 NA furnished
## 438 FALSE FALSE 1 NA unfurnished
## 439 FALSE FALSE 0 FALSE semi-furnished
## 440 FALSE FALSE 0 FALSE unfurnished
## 441 FALSE FALSE 0 FALSE unfurnished
## 442 FALSE FALSE 0 FALSE unfurnished
## 443 FALSE TRUE 1 FALSE unfurnished
## 444 FALSE FALSE 1 FALSE unfurnished
## 445 FALSE FALSE 0 FALSE furnished
## 446 FALSE FALSE 0 FALSE furnished
## 447 FALSE FALSE 1 NA unfurnished
## 448 FALSE FALSE 0 FALSE semi-furnished
## 449 FALSE FALSE 2 FALSE semi-furnished
## 450 FALSE FALSE 0 FALSE unfurnished
## 451 FALSE FALSE 0 FALSE semi-furnished
## 452 FALSE FALSE 0 FALSE semi-furnished
## 453 FALSE FALSE 2 FALSE semi-furnished
## 454 FALSE FALSE 1 FALSE unfurnished
## 455 FALSE TRUE 0 FALSE unfurnished
## 456 FALSE FALSE 0 FALSE unfurnished
## 457 FALSE FALSE 0 TRUE semi-furnished
## 458 FALSE TRUE 0 FALSE unfurnished
## 459 FALSE FALSE 0 FALSE unfurnished
## 460 FALSE FALSE 0 FALSE unfurnished
## 461 FALSE FALSE 1 NA unfurnished
## 462 FALSE TRUE 0 NA unfurnished
## 463 FALSE FALSE 0 FALSE semi-furnished
## 464 FALSE FALSE 0 FALSE unfurnished
## 465 TRUE FALSE 1 FALSE semi-furnished
## 466 FALSE FALSE 0 FALSE unfurnished
## 467 FALSE FALSE 0 NA semi-furnished
## 468 FALSE FALSE 2 FALSE semi-furnished
## 469 FALSE FALSE 0 FALSE semi-furnished
## 470 FALSE FALSE 0 FALSE furnished
## 471 FALSE FALSE 0 FALSE unfurnished
## 472 FALSE FALSE 0 FALSE unfurnished
## 473 FALSE FALSE 3 FALSE semi-furnished
## 474 FALSE FALSE 0 NA unfurnished
## 475 FALSE FALSE 1 FALSE unfurnished
## 476 FALSE FALSE 0 NA semi-furnished
## 477 FALSE FALSE 1 FALSE unfurnished
## 478 FALSE FALSE 0 FALSE unfurnished
## 479 FALSE FALSE 1 FALSE unfurnished
## 480 FALSE FALSE 0 FALSE unfurnished
## 481 FALSE FALSE 1 FALSE semi-furnished
## 482 FALSE FALSE 0 FALSE furnished
## 483 FALSE FALSE 0 FALSE unfurnished
## 484 FALSE FALSE 0 NA semi-furnished
## 485 FALSE FALSE 0 FALSE unfurnished
## 486 FALSE FALSE 0 FALSE unfurnished
## 487 FALSE FALSE 0 FALSE semi-furnished
## 488 FALSE FALSE 0 FALSE unfurnished
## 489 FALSE FALSE 0 FALSE unfurnished
## 490 FALSE FALSE 1 FALSE semi-furnished
## 491 TRUE FALSE 1 FALSE unfurnished
## 492 FALSE FALSE 1 NA furnished
## 493 FALSE FALSE 1 FALSE unfurnished
## 494 FALSE FALSE 0 NA furnished
## 495 FALSE FALSE 0 FALSE unfurnished
## 496 FALSE FALSE 1 FALSE unfurnished
## 497 FALSE FALSE 0 FALSE unfurnished
## 498 FALSE FALSE 0 FALSE unfurnished
## 499 FALSE FALSE 0 FALSE semi-furnished
## 500 FALSE FALSE 0 FALSE unfurnished
## 501 FALSE FALSE 0 FALSE unfurnished
## 502 FALSE FALSE 0 NA unfurnished
## 503 FALSE FALSE 1 FALSE semi-furnished
## 504 FALSE FALSE 0 NA semi-furnished
## 505 FALSE TRUE 0 FALSE unfurnished
## 506 FALSE TRUE 0 FALSE unfurnished
## 507 FALSE FALSE 0 FALSE unfurnished
## 508 FALSE FALSE 0 FALSE unfurnished
## 509 FALSE FALSE 0 FALSE unfurnished
## 510 FALSE FALSE 1 FALSE furnished
## 511 FALSE FALSE 0 FALSE unfurnished
## 512 FALSE FALSE 0 FALSE unfurnished
## 513 FALSE FALSE 0 FALSE furnished
## 514 FALSE FALSE 0 FALSE unfurnished
## 515 FALSE FALSE 0 FALSE semi-furnished
## 516 FALSE FALSE 0 FALSE unfurnished
## 517 FALSE FALSE 1 NA unfurnished
## 518 FALSE FALSE 1 FALSE unfurnished
## 519 FALSE FALSE 0 FALSE unfurnished
## 520 FALSE FALSE 0 FALSE unfurnished
## 521 FALSE FALSE 0 FALSE unfurnished
## 522 FALSE FALSE 0 FALSE unfurnished
## 523 FALSE FALSE 0 FALSE furnished
## 524 FALSE FALSE 0 FALSE furnished
## 525 FALSE FALSE 0 FALSE unfurnished
## 526 FALSE FALSE 0 FALSE unfurnished
## 527 FALSE FALSE 0 FALSE unfurnished
## 528 FALSE FALSE 0 FALSE semi-furnished
## 529 FALSE FALSE 0 FALSE unfurnished
## 530 FALSE FALSE 0 FALSE unfurnished
## 531 TRUE FALSE 0 FALSE unfurnished
## 532 FALSE TRUE 0 TRUE unfurnished
## 533 FALSE FALSE 0 FALSE unfurnished
## 534 FALSE FALSE 0 FALSE unfurnished
## 535 FALSE FALSE 0 FALSE unfurnished
## 536 FALSE FALSE 1 FALSE unfurnished
## 537 FALSE FALSE 0 FALSE unfurnished
## 538 FALSE FALSE 0 NA unfurnished
## 539 FALSE FALSE 0 FALSE unfurnished
## 540 FALSE FALSE 1 FALSE unfurnished
## 541 FALSE FALSE 2 FALSE unfurnished
## 542 FALSE FALSE 0 FALSE semi-furnished
## 543 FALSE FALSE 0 FALSE unfurnished
## 544 FALSE FALSE 0 FALSE furnished
## 545 FALSE FALSE 0 FALSE unfurnished
logical_columns <- c("mainroad", "guestroom", "basement", "hotwaterheating", "airconditioning", "prefarea")
for (col in logical_columns) {
total <- sum(!is.na(data[[col]]))
true_percent <- round(sum(data[[col]] == TRUE, na.rm = TRUE) / total * 100, 2)
false_percent <- round(sum(data[[col]] == FALSE, na.rm = TRUE) / total * 100, 2)
cat(sprintf("Kolumna: %s, TRUE: %.2f%%, FALSE: %.2f%%\n", col, true_percent, false_percent))
}
## Kolumna: mainroad, TRUE: 86.46%, FALSE: 13.54%
## Kolumna: guestroom, TRUE: 17.80%, FALSE: 82.20%
## Kolumna: basement, TRUE: 35.05%, FALSE: 64.95%
## Kolumna: hotwaterheating, TRUE: 4.59%, FALSE: 95.41%
## Kolumna: airconditioning, TRUE: 31.56%, FALSE: 68.44%
## Kolumna: prefarea, TRUE: 24.65%, FALSE: 75.35%
Kolumna: mainroad, TRUE: 86.46%, FALSE: 13.54% Kolumna: guestroom, TRUE: 17.80%, FALSE: 82.20% Kolumna: basement, TRUE: 35.05%, FALSE: 64.95% Kolumna: hotwaterheating, TRUE: 4.59%, FALSE: 95.41% Kolumna: airconditioning, TRUE: 31.56%, FALSE: 68.44% Kolumna: prefarea, TRUE: 24.65%, FALSE: 75.35%
Dodatkowo aby lepiej zobarzować dane pokazane w podsumowaniu tworzymy wykresy słupkowe dla podanych zmiennych
for (col in logical_columns) {
true_percent <- mean(data[[col]] == TRUE, na.rm = TRUE) * 100
false_percent <- mean(data[[col]] == FALSE, na.rm = TRUE) * 100
barplot(
c("TRUE" = true_percent, "FALSE" = false_percent),
main = paste("Procent TRUE/FALSE dla", col),
ylab = "Procent",
col = c("lightblue", "lightcoral")
)
}
furnishing_counts <- table(data$furnishingstatus)
furnishing_percentages <- round(prop.table(furnishing_counts) * 100, 2)
print(furnishing_percentages)
##
## furnished semi-furnished unfurnished
## 25.69 41.65 32.66
barplot(
furnishing_percentages,
main = "Procentowy rozkład furnishingstatus",
ylab = "Procent",
col = c("lightblue", "lightgreen", "lightcoral"),
names.arg = names(furnishing_percentages)
)
Zdecydowałyśmy się na metodę sequential hot-deck do imputacji brakujących danych.Metoda Sequential hot-deck wykorzystuje rzeczywiste wartości z naszego zbioru danych, co sprawia, że prawdopodobieństwo wprowadzenia sztucznych wartości jest małe. Dodatkowo załeży nam na zachowaniu naturalnego rozkładu danych. Metoda ta jest elastyczna i działa zarówno dla danych liczbowych, jak i kategorycznych, nie wymagając założeń o rozkładzie zmiennych. Dodatkowo, metoda ta jest odporna na outliery co było dla nas ważne po wcześniejszym zbadaniu ich występowania dla zmiennych price i area. na koniec prównamy brakujące dane przed i po imputacji aby upewnić się, że proces przebiegł pomyślnie.
data_not_cleaned <- hotdeck(data)
cat("Liczba brakujących wartości po imputacji:", sum(is.na(data_not_cleaned)), "\n")
## Liczba brakujących wartości po imputacji: 0
remove_imp_columns <- function(df) {
if (!is.data.frame(df)) {
stop("Podany obiekt nie jest ramką danych")
}
imp_cols <- grep("_imp$", colnames(df), value = TRUE)
if (length(imp_cols) == 0) {
message("Nie znaleziono kolumn z '_imp' w nazwie.")
return(df)
}
df_cleaned <- df[, !colnames(df) %in% imp_cols]
message("Usunięto następujące kolumny: ", paste(imp_cols, collapse = ", "))
return(df_cleaned)
}
data_imputed <- remove_imp_columns(data_not_cleaned)
## Usunięto następujące kolumny: price_imp, area_imp, bedrooms_imp, bathrooms_imp, stories_imp, mainroad_imp, guestroom_imp, basement_imp, hotwaterheating_imp, airconditioning_imp, parking_imp, prefarea_imp, furnishingstatus_imp
cat("Struktura danych po usunięciu kolumn '_imp':")
## Struktura danych po usunięciu kolumn '_imp':
str(data_imputed)
## 'data.frame': 545 obs. of 13 variables:
## $ price : int 4403000 12250000 12250000 12215000 11410000 10850000 10150000 10150000 9870000 9800000 ...
## $ area : num 7420 896 996 750 742 750 858 1620 810 575 ...
## $ bedrooms : int 4 4 3 4 4 3 4 5 4 3 ...
## $ bathrooms : int 2 4 2 2 1 3 3 3 1 2 ...
## $ stories : int 3 4 2 2 2 1 4 2 2 4 ...
## $ mainroad : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
## $ guestroom : logi FALSE FALSE FALSE FALSE TRUE FALSE ...
## $ basement : logi FALSE FALSE TRUE TRUE TRUE TRUE ...
## $ hotwaterheating : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ airconditioning : logi TRUE TRUE FALSE TRUE TRUE TRUE ...
## $ parking : int 2 3 2 3 2 2 2 0 2 1 ...
## $ prefarea : logi TRUE FALSE TRUE TRUE FALSE TRUE ...
## $ furnishingstatus: chr "furnished" "furnished" "semi-furnished" "furnished" ...
head(data_imputed)
## price area bedrooms bathrooms stories mainroad guestroom basement
## 1 4403000 7420 4 2 3 TRUE FALSE FALSE
## 2 12250000 896 4 4 4 TRUE FALSE FALSE
## 3 12250000 996 3 2 2 TRUE FALSE TRUE
## 4 12215000 750 4 2 2 TRUE FALSE TRUE
## 5 11410000 742 4 1 2 TRUE TRUE TRUE
## 6 10850000 750 3 3 1 TRUE FALSE TRUE
## hotwaterheating airconditioning parking prefarea furnishingstatus
## 1 FALSE TRUE 2 TRUE furnished
## 2 FALSE TRUE 3 FALSE furnished
## 3 FALSE FALSE 2 TRUE semi-furnished
## 4 FALSE TRUE 3 TRUE furnished
## 5 FALSE TRUE 2 FALSE furnished
## 6 FALSE TRUE 2 TRUE semi-furnished
Kolejnym etapem jest normalizacja zmiennych numerycznych, takich jak cena, powierzchnia, liczba sypialni, czy liczba miejsc parkingowych, co pozwala na przekształcenie danych do wspólnej skali bez utraty relatywnej informacji. Do tego celu wykorzystano metodę min-max scaling, która przekształca wartości w przedziale od 0 do 1, co ułatwia dalsze analizy statystyczne oraz modelowanie. Proces normalizacji zapewnia większą spójność danych i eliminuje wpływ różnych skal poszczególnych zmiennych na wyniki analizy.Dzięki zastosowanym technikom przetwarzania danych uzyskane wyniki pozwolą na dokładniejszą interpretację wpływu poszczególnych cech nieruchomości na ich wartość rynkową oraz na lepsze przygotowanie danych do wykorzystania w modelach predykcyjnych.
minmax <- function(data, columns_to_normalize) {
# Sprawdzenie, czy podane kolumny istnieją w danych
missing_cols <- setdiff(columns_to_normalize, colnames(data))
if (length(missing_cols) > 0) {
stop(paste("Nie znaleziono kolumn:", paste(missing_cols, collapse = ", ")))
}
# Normalizacja wybranych kolumn
data_imputed <- data %>%
mutate(across(all_of(columns_to_normalize),
~ ifelse(all(is.na(.)), NA, # Jeśli wszystkie wartości NA, zwróć NA
ifelse((max(., na.rm = TRUE) - min(., na.rm = TRUE)) == 0,
0, # Jeśli brak rozstępu, przypisz 0
(.-min(., na.rm = TRUE)) / (max(., na.rm = TRUE) - min(., na.rm = TRUE)))),
.names = "norm_{.col}"))
return(data_imputed)
}
Najwięcej mieszkań znajduje się w przedziale 2.750.000-3.750.000 zł oraz 3.750.000-4.750.000 zł, co sugeruje, że większość ofert dotyczy mieszkań o średnim poziomie cenowym w badanym zbiorze.
Obserwujemy również, że liczba mieszkań maleje wraz ze wzrostem ceny – nieruchomości powyżej 10 milionów złotych stanowią niewielką część rynku. Jest to zgodne z intuicją, ponieważ luksusowe apartamenty są mniej liczne niż standardowe mieszkania.
Obliczenie częstości względnych i skumulowanych pozwala lepiej zrozumieć strukturę cen. Możemy określić, jaki procent mieszkań mieści się w określonych przedziałach, co ułatwia interpretację dostępności mieszkań w różnych segmentach cenowych. #### Podstawowe wykresy
Analizujemy rozkład cen mieszkań za pomocą histogramu oraz funkcji gęstości. Po usunięciu wartości brakujących (NA), sprawdzamy zakres cenowy, który wskazuje na minimalną i maksymalną wartość ceny mieszkań w zbiorze danych.
data_imputed$price <- as.numeric(data_imputed$price)
filtered_prices <- na.omit(data_imputed$price)
print(filtered_prices)
## [1] 4403000 12250000 12250000 12215000 11410000 10850000 10150000 10150000
## [9] 9870000 9800000 9800000 9681000 6405000 9240000 9240000 9100000
## [17] 9100000 8960000 8890000 8855000 8750000 8680000 2800000 8645000
## [25] 3640000 8540000 8463000 8400000 8400000 8400000 8400000 8400000
## [33] 8295000 8190000 8120000 8080940 8043000 7980000 7962500 7910000
## [41] 7875000 9800000 7700000 7700000 7560000 3710000 7525000 3115000
## [49] 7455000 7420000 7420000 6419000 7350000 7350000 4690000 7350000
## [57] 7343000 7245000 7210000 10150000 7140000 7070000 3325000 7035000
## [65] 1750000 6930000 6930000 6895000 6860000 3780000 6790000 6755000
## [73] 6685000 6685000 6650000 4200000 4200000 6650000 6650000 2450000
## [81] 6629000 6615000 6615000 6580000 6300000 6510000 6510000 6475000
## [89] 6475000 6440000 6440000 6419000 6405000 6300000 6300000 6300000
## [97] 6300000 6300000 6293000 6265000 6230000 3675000 6195000 6475000
## [105] 6195000 6160000 6160000 6125000 6107500 4473000 6090000 6090000
## [113] 6083000 3080000 6020000 6020000 4900000 6293000 5950000 5950000
## [121] 5950000 5950000 5950000 5950000 5950000 5943000 5880000 5880000
## [129] 5873000 5873000 9800000 5810000 4620000 5810000 5803000 5775000
## [137] 5740000 5740000 5740000 5740000 5740000 5652500 5600000 5600000
## [145] 3080000 5600000 5600000 7910000 5600000 5215000 5600000 5565000
## [153] 5565000 5530000 5530000 2940000 5145000 5495000 5495000 5460000
## [161] 5460000 5040000 5460000 5425000 2100000 5383000 5320000 5285000
## [169] 5250000 5250000 5250000 5250000 5215000 5250000 5250000 5250000
## [177] 5250000 5243000 5250000 3990000 5215000 8855000 5145000 5145000
## [185] 5110000 4025000 5110000 5110000 5075000 5040000 5040000 5040000
## [193] 5040000 2940000 5005000 4970000 4970000 4956000 4935000 4907000
## [201] 3290000 4900000 4900000 4900000 4900000 4900000 4900000 4900000
## [209] 9870000 4007500 4900000 4900000 3150000 4893000 4865000 5005000
## [217] 4543000 4830000 1820000 4795000 4795000 4767000 3423000 5950000
## [225] 4760000 4753000 4690000 4690000 9870000 4690000 4690000 4690000
## [233] 3129000 4620000 4620000 4620000 4620000 4620000 4613000 4585000
## [241] 4585000 4550000 2100000 3003000 6510000 4550000 4550000 4550000
## [249] 4543000 4543000 4515000 4515000 4515000 4515000 4480000 4480000
## [257] 4480000 4480000 4480000 4473000 4473000 4473000 4445000 4410000
## [265] 4410000 4403000 7140000 4403000 4382000 4375000 4340000 4340000
## [273] 4340000 4340000 4340000 4480000 4305000 4305000 4277000 4270000
## [281] 4270000 4270000 3675000 4270000 2800000 4235000 5145000 4200000
## [289] 4200000 4200000 4200000 4200000 4200000 4200000 4200000 4200000
## [297] 5565000 4200000 8043000 4200000 4200000 4200000 4200000 4200000
## [305] 12250000 4193000 4165000 7245000 4165000 6300000 4130000 4123000
## [313] 4098500 4095000 4095000 4095000 4060000 4060000 4060000 4060000
## [321] 4060000 4025000 3080000 4025000 4007500 4007500 3990000 3990000
## [329] 3990000 3990000 3990000 3920000 3920000 3920000 8080940 3990000
## [337] 3920000 3920000 3885000 3885000 3850000 4690000 3850000 3850000
## [345] 3850000 3850000 3850000 3836000 3815000 3780000 3780000 6195000
## [353] 3780000 3780000 5950000 3773000 3773000 3773000 3675000 3710000
## [361] 3710000 5810000 3710000 4200000 5460000 3703000 3675000 3290000
## [369] 7700000 3675000 3640000 3640000 3640000 3640000 3640000 3640000
## [377] 3640000 3640000 4900000 3633000 3605000 3605000 3570000 3570000
## [385] 3570000 3570000 2940000 3500000 4305000 3500000 3500000 1820000
## [393] 3500000 2450000 3500000 3500000 3500000 3500000 3500000 3500000
## [401] 3500000 2660000 3500000 3500000 3493000 4620000 3465000 7700000
## [409] 3430000 2408000 3430000 3430000 3430000 3430000 3423000 3395000
## [417] 3395000 3395000 3360000 3360000 3360000 5460000 3360000 3360000
## [425] 3360000 2520000 3353000 3332000 2450000 3325000 3290000 3290000
## [433] 3290000 3290000 3290000 4123000 3290000 3290000 3255000 3255000
## [441] 3234000 3220000 3220000 3220000 4060000 3150000 3150000 3150000
## [449] 3150000 3150000 3150000 3150000 6755000 4123000 3143000 3129000
## [457] 3118850 3115000 3115000 3115000 3087000 3080000 3080000 3150000
## [465] 3080000 3045000 3010000 5040000 3010000 3010000 3010000 3010000
## [473] 3010000 3003000 2975000 2961000 2660000 2940000 8295000 2940000
## [481] 2852500 2940000 2940000 2940000 2870000 2870000 2870000 2870000
## [489] 2852500 2835000 2835000 3395000 2800000 2800000 2730000 4795000
## [497] 4200000 2660000 2660000 2660000 2660000 4613000 7350000 4515000
## [505] 2653000 2653000 2604000 2590000 4690000 2590000 2520000 6300000
## [513] 2520000 2485000 2485000 2450000 2450000 2450000 2450000 3360000
## [521] 2450000 2408000 2380000 2380000 2380000 5040000 2310000 3675000
## [529] 2275000 2275000 2240000 2233000 2135000 2100000 2100000 2100000
## [537] 3773000 4515000 1890000 1855000 1820000 3290000 1750000 1750000
## [545] 1750000
price_range <- range(filtered_prices, na.rm = TRUE)
print(price_range)
## [1] 1750000 12250000
Definiowanie przerw dla histogramu
breaks <- seq(floor(price_range[1] / 1000000) * 1000000, ceiling(price_range[2] / 1000000) * 1000000, by = 1000000)
print(breaks)
## [1] 1.0e+06 2.0e+06 3.0e+06 4.0e+06 5.0e+06 6.0e+06 7.0e+06 8.0e+06 9.0e+06
## [10] 1.0e+07 1.1e+07 1.2e+07 1.3e+07
Rysowanie histogramu i gęstości
hist(filtered_prices, prob = TRUE, breaks = breaks, main = "Price", sub = "in PLN")
lines(density(filtered_prices), col = 2)
Histogram przedstawia liczbę mieszkań w różnych przedziałach cenowych, a dodatkowa linia gęstości (density()) pomaga zidentyfikować kształt rozkładu danych.
Na załączonym wykresie widzimy, że rozkład cen mieszkań jest prawostronnie skośny, co oznacza, że większość ofert dotyczy tańszych mieszkań, natomiast ceny luksusowych nieruchomości są bardziej rozproszone i występują rzadziej.
Najwięcej mieszkań znajduje się w przedziale około 3-5 mln zł, co jest zgodne z wcześniejszymi wynikami analizy tabeli częstości. Zauważamy również długi ogon rozkładu, wskazujący na obecność drogich nieruchomości, których ceny przekraczają 10 milionów złotych.
Tworzymy tabelę przedziałów cenowych z użyciem metody podziału na stałe klasy cenowe, co pozwala na czytelne przedstawienie częstości występowania mieszkań w określonych przedziałach.
kbl(table1, caption = "Ceny mieszkań") %>%
kable_material(c("striped", "hover"))
| limits | Freq |
|---|---|
| 1.750.000-2.750.000 | 46 |
| 2.750.000-3.750.000 | 135 |
| 3.750.000-4.750.000 | 137 |
| 4.750.000-5.750.000 | 83 |
| 5.750.000-6.750.000 | 64 |
| 6.750.000-7.750.000 | 28 |
| 7.750.000-8.750.000 | 23 |
| 8.750.000-9.750.000 | 9 |
| 9.750.000-10.750.000 | 10 |
| 10.750.000-11.750.000 | 2 |
tab1<-classIntervals(data_imputed$price,n=10,style="fixed",fixedBreaks=seq(1750000,12250000,by=1000000))
## Warning in classIntervals(data_imputed$price, n = 10, style = "fixed",
## fixedBreaks = seq(1750000, : variable range greater than fixedBreaks
price_range <- range(data_imputed$price, na.rm=TRUE)
print(price_range)
## [1] 1750000 12250000
jenks.tests(tab1)
## # classes Goodness of fit Tabular accuracy
## 10.0000000 0.9792290 0.8414573
Obliczamy wskaźnik dokładności tabeli (TAI), który informuje nas, jak dobrze wybrane przedziały odzwierciedlają rzeczywisty rozkład danych.
Wskaźnik TAI jest dość wysoki. 0,84 oznacza, że możemy zaakceptować zaproponowaną konstrukcję tablicy częstości, czyli możemy uznać ten podział za reprezentatywny dla zbioru danych.
Dodatkowo, wartość Goodness of Fit = 0,978 sugeruje, że klasyfikacja danych według wybranej metody pozwala na bardzo dobre odwzorowanie rzeczywistego rozkładu cen. Oznacza to, że analizowane przedziały cenowe są sensowne i dobrze opisują strukturę rynku mieszkań. #### Analiza skumulowanego rozkładu cen mieszkań z wykorzystaniem ECDF.
tab1<-classIntervals(data_imputed$price,n=10,style="fixed",fixedBreaks=seq(1750000,12250000,by=1000000))
## Warning in classIntervals(data_imputed$price, n = 10, style = "fixed",
## fixedBreaks = seq(1750000, : variable range greater than fixedBreaks
pcol= c('darkblue', 'blue', 'lightblue', 'palegreen', 'lightpink', 'brown3', 'red', 'yellow', 'brown', 'black')
colcode=findColours(tab1,pcol)
plot(tab1,pal=pcol,ylab='Cumulative %')
Wykres ten przedstawia, jaka część obserwacji znajduje się poniżej określonych wartości cenowych, co pozwala na ocenę struktury rynku nieruchomości.
Krzywa dystrybuanty pokazuje, że większość mieszkań znajduje się w niższych przedziałach cenowych – około 80% nieruchomości kosztuje mniej niż 8 milionów złotych, a tylko niewielki odsetek przekracza 10 milionów złotych.
Dodatkowo, na wykresie zastosowane zostały kolorowe segmenty, które odpowiadają poszczególnym przedziałom cenowym, co ułatwia interpretację skumulowanego rozkładu. Można zauważyć, że największy wzrost wartości skumulowanej następuje w zakresie 3-6 milionów złotych, co potwierdza wcześniejsze analizy dotyczące dominujących przedziałów cenowych.
Wnioski te wskazują, że rynek mieszkań w analizowanym zbiorze jest skoncentrowany wokół średnich cen, a ekskluzywne nieruchomości stanowią mniejszość ofert.
Analizujemy wpływ wyposażenia mieszkań na ich ceny, wykorzystując histogram oraz krzywe gęstości dla różnych kategorii umeblowania.
Histogram przedstawia rozkład cen wszystkich mieszkań, z dominującą liczbą ofert w przedziale 3-6 milionów złotych. Warto zauważyć, że rozkład jest prawostronnie skośny – wyższe ceny występują rzadziej, co jest zgodne z wcześniejszymi analizami rynku.
Dodatkowo, na wykresie umieszczono trzy krzywe gęstości dla mieszkań: #Furnished (umeblowane, czerwona linia) – Rozkład tych mieszkań jest bardziej równomierny, a ceny obejmują szeroki zakres. #Semi-furnished (częściowo umeblowane, zielona linia) – W tej kategorii zauważamy największe skupienie ofert w okolicach 4-5 mln zł. #Unfurnished (nieumeblowane, niebieska linia) – Te mieszkania wydają się mieć niższe ceny, a ich rozkład jest skoncentrowany w niższych przedziałach cenowych.
Wyniki sugerują, że umeblowane mieszkania mogą osiągać wyższe ceny, natomiast brak umeblowania często wiąże się z niższymi kosztami zakupu. To potwierdza tezę, że stan wykończenia nieruchomości ma istotny wpływ na ich wartość rynkową.
Wykres pudełkowy przedstawia rozkład cen mieszkań w zależności od ich statusu umeblowania. Pozwala to na porównanie mediany, zakresu międzykwartylowego oraz wartości odstających w każdej z trzech kategorii - furnished, semi-furnished i unfurnished.
Furnished (umeblowane) – Mediana cen mieszkań umeblowanych jest najwyższa spośród analizowanych kategorii. Rozkład jest stosunkowo szeroki, co oznacza, że ceny tych mieszkań mogą się znacząco różnić. Występuje także kilka wartości odstających w wyższych przedziałach cenowych.
Semi-furnished (częściowo umeblowane) – Ta kategoria charakteryzuje się podobną medianą do mieszkań umeblowanych, ale posiada większą liczbę wartości odstających. Wskazuje to na dużą zmienność cen w tej grupie, co może być związane z różnym standardem wykończenia.
Unfurnished (nieumeblowane) – Mediana cen jest najniższa spośród wszystkich kategorii, a rozstęp międzykwartylowy jest podobny do kategorii semi-furnished. Wartości odstające sugerują, że niektóre nieumeblowane mieszkania mogą osiągać ceny porównywalne do droższych ofert umeblowanych.
Ogólnie, analiza wykazuje, że umeblowane mieszkania mają tendencję do osiągania wyższych cen, co może wynikać z większego zainteresowania kupujących w pełni wyposażonymi nieruchomościami. Warto również zwrócić uwagę na liczne wartości odstające, co wskazuje na istnienie mieszkań w bardzo wysokich przedziałach cenowych w każdej z kategorii.
stable <- desc_statby(data_imputed, measure.var = "price",
grps = "furnishingstatus")
stable <- stable[, c("furnishingstatus", "length", "mean", "sd")]
Wykres przedstawia estymację gęstości cen mieszkań w zależności od ich statusu umeblowania. Analiza obejmuje trzy kategorie: furnished (umeblowane), semi-furnished (częściowo umeblowane) oraz unfurnished (nieumeblowane).
Mieszkania częściowo umeblowane (żółty) dominują w zakresie ok. 4–6 mln PLN i wykazują najwyższą gęstość w tym przedziale cenowym. #Umeblowane mieszkania (niebieski) mają szerszy rozkład i większą wariancję, co oznacza większe zróżnicowanie cenowe. #Nieumeblowane mieszkania (szary) skupiają się wokół niższych wartości, co sugeruje, że w tej kategorii znajdują się najtańsze oferty. #Czerwona linia przerywana przedstawia nałożoną krzywą normalną, co pozwala porównać empiryczny rozkład z teoretycznym.
Średnia cena mieszkań umeblowanych wynosi 5 342 367 PLN, co jest najwyższą wartością spośród wszystkich kategorii. #Częściowo umeblowane mieszkania mają średnią 4 864 801 PLN, co sugeruje, że oferują pewien kompromis między ceną a standardem wyposażenia. Nieumeblowane mieszkania mają najniższą średnią cenę (4 265 242 PLN), co potwierdza wcześniejsze obserwacje na wykresie. #Odchylenie standardowe (SD) wskazuje na większe zróżnicowanie cen wśród mieszkań umeblowanych, podczas gdy ceny mieszkań częściowo umeblowanych są bardziej skumulowane wokół średniej.
Mieszkania umeblowane są przeciętnie droższe, ale ich ceny są bardziej zróżnicowane. Z kolei nieumeblowane lokale charakteryzują się niższymi cenami, co może wynikać z niższej atrakcyjności dla kupujących.
Wykres pudełkowy cen mieszkań według statusu umeblowania #Wykres przedstawia rozkład cen mieszkań dla trzech kategorii umeblowania: umeblowane (furnished), częściowo umeblowane (semi-furnished) i nieumeblowane (unfurnished).
Pudełka pokazują rozstęp międzykwartylowy (IQR) – czyli obszar między 25. a 75. percentylem cen mieszkań. #Wąsy wskazują rozpiętość cen bez wartości odstających. #Czarne kropki reprezentują indywidualne obserwacje (każde mieszkanie jako punkt). #Czerwone punkty oznaczają średnie wartości cen dla każdej kategorii umeblowania. #Funkcja jitter rozrzuca kropki poziomo, aby uniknąć ich nakładania. #Interpretacja wyników
Mediany cen (środkowe linie pudełek) sugerują, że umeblowane mieszkania są najdroższe, a nieumeblowane mają najniższą medianę ceny. #Rozkład cen jest zróżnicowany, zwłaszcza dla mieszkań umeblowanych, które mają szerszy przedział cenowy. #Wartości odstające (punkty powyżej górnych wąsów) wskazują na istnienie luksusowych, bardzo drogich mieszkań we wszystkich trzech kategoriach. #Średnia cena (czerwony punkt) dla mieszkań umeblowanych jest wyraźnie wyższa niż dla pozostałych kategorii. #Wnioski
Mieszkania umeblowane są droższe, ale ich ceny są bardziej zróżnicowane. #Ceny mieszkań częściowo umeblowanych i nieumeblowanych są bardziej skupione wokół mediany, co sugeruje mniejsze różnice między najtańszymi i najdroższymi ofertami. #Istnieją mieszkania o ekstremalnie wysokich cenach, które mogą wpływać na średnią wartość w każdej kategorii.
Wykres przedstawia rozrzut cen mieszkań w zależności od liczby sypialni, gdzie każda kategoria ma swój osobny panel. Każdy punkt oznacza pojedyncze mieszkanie, a zastosowanie funkcji jitter pozwala na lepszą czytelność poprzez lekkie przesunięcie nakładających się wartości. Na osi pionowej widoczne są ceny nieruchomości, które różnią się w zależności od liczby pokoi.
Największa liczba mieszkań występuje w przedziale od dwóch do czterech sypialni, co sugeruje, że są to najpopularniejsze układy. Ceny generalnie rosną wraz ze wzrostem liczby pokoi, choć widać duże różnice w poszczególnych kategoriach. Mieszkania jednopokojowe oraz te z sześcioma sypialniami występują najrzadziej, a ich ceny są dość rozproszone. W przypadku nieruchomości cztero- i pięciopokojowych obserwujemy największy rozrzut cen, co może sugerować istnienie zarówno standardowych mieszkań, jak i luksusowych apartamentów w tej grupie.
Niektóre wartości odstające wskazują na wyjątkowo drogie nieruchomości w każdej kategorii. Mimo że liczba sypialni ma wyraźny wpływ na cenę, inne czynniki, takie jak lokalizacja czy standard wykończenia, również mogą odgrywać istotną rolę. Warto zwrócić uwagę na mieszkania z sześcioma sypialniami, które choć nieliczne, mogą mieć niestandardowy zakres cenowy.
mean(data_imputed$price)
## [1] 4798890
median(data_imputed$price)
## [1] 4375000
sd(data_imputed$price) #standard deviation
## [1] 1925574
var(data_imputed$price) #variance
## [1] 3.707833e+12
coeff_var<-sd(data_imputed$price)/mean(data_imputed$price) #coefficient of variability %
coeff_var
## [1] 0.4012539
IQR(data_imputed$price)# difference between quartiles =Q3-Q1
## [1] 2387000
sx<-IQR(data_imputed$price)/2 #interquartile deviation
coeff_varx<-sx/median(data_imputed$price) #IQR coefficient of variability %
coeff_varx
## [1] 0.2728
min(data_imputed$price)
## [1] 1750000
max(data_imputed$price)
## [1] 12250000
quantile(data_imputed$price,probs=c(0,0.1,0.25,0.5,0.75,0.95,1),na.rm=TRUE)
## 0% 10% 25% 50% 75% 95% 100%
## 1750000 2835000 3423000 4375000 5810000 8624000 12250000
Średnia cena mieszkań wynosi 4 791 659, natomiast mediana, czyli wartość środkowa zbioru, jest nieco niższa i wynosi 4 340 000. Odchylenie standardowe, które mierzy rozproszenie danych wokół średniej, wynosi 1 887 452, a wariancja, będąca kwadratem odchylenia standardowego, osiąga wartość 3,56 × 10¹². Wskaźnik zmienności, określający względne zróżnicowanie cen, wynosi 39,39%, co wskazuje na umiarkowane zróżnicowanie cen mieszkań w zbiorze.
Różnica między trzecim a pierwszym kwartylem, czyli rozstęp międzykwartylowy, wynosi 2 310 000. Połowa wartości znajduje się w przedziale od 3 493 000 do 5 803 000. Średnie odchylenie międzykwartylowe wynosi 1 155 000, a wskaźnik zmienności oparty na rozstępie międzykwartylowym to 26,61%, co sugeruje mniejsze zróżnicowanie cen w środkowym zakresie danych.
Minimalna cena mieszkania wynosi 1 750 000, a maksymalna 12 250 000. Kwartyle wskazują, że 10% najtańszych mieszkań ma ceny poniżej 2 870 000, a 10% najdroższych przekracza 8 400 000. Środkowe 50% mieszkań znajduje się w przedziale od 3 493 000 do 5 803 000, co daje lepszy obraz dominujących cen na rynku.
| rooms | boxplot | histogram | line1 | line2 | points1 |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | |||||
| 3 | |||||
| 4 | |||||
| 5 | |||||
| 6 |
Obraz przedstawia tabelę zawierającą różne wizualizacje rozkładu cen mieszkań w zależności od liczby pokoi. W pierwszej kolumnie oznaczone są liczby pokoi od 1 do 6. W kolejnych kolumnach znajdują się wykresy pudełkowe pokazujące medianę, kwartyle i wartości odstające dla każdej grupy, histogramy przedstawiające rozkład cen w danej kategorii, a także różne warianty wykresów liniowych i punktowych.
Wykresy pudełkowe ujawniają rozrzut cen w każdej grupie i potencjalne wartości odstające. Histogramy pozwalają ocenić symetrię oraz ewentualne skośności rozkładu. Wykresy liniowe mogą sugerować trendy w rozkładzie cen w poszczególnych grupach, a wykresy punktowe obrazują indywidualne obserwacje. Tego typu zestawienie pomaga w analizie, jak zmienia się rozkład cen w zależności od liczby pokoi, umożliwiając porównanie różnych grup na jednym, czytelnym wykresie.
| hotwaterheating | boxplot | histogram | line1 | line2 | points1 |
|---|---|---|---|---|---|
| TRUE | |||||
| FALSE |
Obraz przedstawia tabelę z wykresami ilustrującymi rozkład cen mieszkań w zależności od dostępności ogrzewania wody. Dane zostały podzielone na dwie grupy: mieszkania z ogrzewaniem wody (TRUE) oraz bez niego (FALSE). W pierwszej kolumnie znajduje się informacja o dostępności tej cechy, a kolejne kolumny zawierają różne wizualizacje rozkładu cen.
Wykresy pudełkowe pokazują medianę, kwartyle i wartości odstające dla każdej grupy, histogramy przedstawiają kształt rozkładu cen, natomiast wykresy liniowe i punktowe umożliwiają analizę trendów i rozrzutu danych. Dzięki tej tabeli można łatwo porównać, jak obecność ogrzewania wody wpływa na ceny mieszkań i czy w obu grupach występują istotne różnice w ich rozkładzie.
data_imputed %>%
select(price, bedrooms) %>%
tbl_summary(
by=bedrooms,
type = all_continuous() ~ "continuous2",
statistic = all_continuous() ~ c(
"{N_nonmiss}","{mean}","{sd}",
"{median} ({p25}, {p75})",
"{min}, {max}"),
missing = "no",
label = price ~ "Cena") %>%
modify_header(label ~ "**Zmienna**") %>%
modify_caption("**Tabela 1. Rozkład cen wg liczby pokoi**") %>%
bold_labels() %>%
add_p(pvalue_fun = ~ style_pvalue(.x, digits = 2))
## The following errors were returned during `add_p()`:
## ✖ For variable `price` (`bedrooms`) and "p.value" statistic: The package
## "cardx" (>= 0.2.2) is required.
| Zmienna | 1 N = 2 |
2 N = 136 |
3 N = 300 |
4 N = 95 |
5 N = 10 |
6 N = 2 |
p-value |
|---|---|---|---|---|---|---|---|
| Cena | |||||||
| N Non-missing | 2 | 136 | 300 | 95 | 10 | 2 | |
| Mean | 2,712,500 | 3,786,919 | 5,019,291 | 5,469,137 | 6,001,100 | 4,791,500 | |
| SD | 618,718 | 1,212,215 | 1,920,549 | 2,180,910 | 2,243,927 | 1,826,457 | |
| Median (Q1, Q3) | 2,712,500 (2,275,000, 3,150,000) | 3,605,000 (3,006,500, 4,357,500) | 4,620,000 (3,640,000, 6,107,500) | 4,970,000 (3,920,000, 6,300,000) | 5,582,500 (3,850,000, 8,120,000) | 4,791,500 (3,500,000, 6,083,000) | |
| Min, Max | 2,275,000, 3,150,000 | 1,750,000, 8,080,940 | 1,750,000, 12,250,000 | 2,100,000, 12,250,000 | 3,773,000, 10,150,000 | 3,500,000, 6,083,000 |
Tabela przedstawia rozkład cen mieszkań w zależności od liczby pokoi. Dla każdej grupy liczbowej podana jest liczba obserwacji, średnia cena, odchylenie standardowe, mediana wraz z pierwszym i trzecim kwartylem oraz wartości minimalne i maksymalne. Test Kruskala-Wallisa wykazał istotną statystycznie różnicę pomiędzy grupami pod względem ceny mieszkań (p < 0.001). Widać, że średnia cena rośnie wraz ze wzrostem liczby pokoi – od około 2,7 mln dla mieszkań jednopokojowych do ponad 6,2 mln dla mieszkań pięciopokojowych. Rozstęp wartości maksymalnych i minimalnych również się zwiększa, co wskazuje na większe zróżnicowanie cen w większych mieszkaniach. #Wizualizacja danych 1. Mapowanie danych (wykresy) Na przykładzie zależności między ceną (price) a powierzchnią (area).
####Podsumowanie analizy opisowej danych
Przeprowadzona analiza opisowa danych dostarczyła szczegółowego obrazu rynku nieruchomości, uwzględniając kluczowe statystyki i ich interpretację. Wyniki analizy wskazują na istotne zależności między zmiennymi, które wpływają na ceny mieszkań oraz ich rozkład w różnych grupach.
Średnia cena nieruchomości wynosi około 4,79 mln, natomiast mediana, która jest mniej podatna na wartości odstające, kształtuje się na poziomie 4,34 mln. Rozstęp wartości wskazuje na duże zróżnicowanie cen – minimalna wartość wynosi 1,75 mln, podczas gdy maksymalna osiąga 12,25 mln. Odchylenie standardowe wynoszące 1,89 mln wskazuje na znaczne rozproszenie danych, co potwierdza również współczynnik zmienności na poziomie 39%.
Analiza kwartylowa wykazała, że 25% mieszkań kosztuje mniej niż 3,49 mln, natomiast 75% nie przekracza 5,8 mln, co sugeruje, że większość mieszkań mieści się w tym przedziale cenowym. Wskaźnik IQR potwierdza, że środkowa połowa obserwacji charakteryzuje się stosunkowo dużą zmiennością cen.
Zróżnicowanie cen w zależności od liczby pokoi ukazuje wyraźną tendencję wzrostową – średnie ceny rosną wraz z większą liczbą sypialni. Najtańsze mieszkania jedno- i dwupokojowe mają znacznie niższą medianę niż większe nieruchomości. Dodatkowo, test Kruskala-Wallisa wykazał istotne statystycznie różnice pomiędzy grupami liczby pokoi pod względem ceny.
Podział cen według statusu umeblowania wykazał pewne różnice między grupami. Mieszkania umeblowane osiągają wyższe ceny w porównaniu do nieumeblowanych i częściowo umeblowanych, co sugeruje, że gotowość do zamieszkania jest istotnym czynnikiem wpływającym na wartość nieruchomości.
Dodatkowa analiza uwzględniająca sposób ogrzewania wody pokazała, że mieszkania z tą instalacją mogą osiągać wyższe ceny, choć różnice te wymagają dalszej interpretacji. Wizualizacje danych w postaci wykresów pudełkowych, histogramów oraz wykresów punktowych pomogły w identyfikacji wartości odstających oraz ogólnych trendów.
Podsumowując, analiza opisowa dostarczyła cennych informacji na temat struktury cen nieruchomości oraz ich zależności od kluczowych cech. Wyniki te mogą być przydatne dla inwestorów i analityków rynku nieruchomości w celu lepszego zrozumienia dynamiki cenowej i podejmowania bardziej świadomych decyzji.
library(ggplot2)
ggplot(data_imputed, aes(x = area, y = price, color = prefarea)) +
geom_point(size = 3, alpha = 0.7) +
scale_color_manual(values = c("TRUE" = "blue", "FALSE" = "red")) +
labs(title = "Cena vs. Powierzchnia z podziałem na preferowaną lokalizację",
x = "Powierzchnia (m2)",
y = "Cena (PLN)") +
theme_minimal()
Wykres przedstawia zależność między ceną nieruchomości a ich powierzchnią, z uwzględnieniem podziału na preferowane obszary. Na osi pionowej znajduje się cena w PLN, a na osi poziomej powierzchnia w metrach kwadratowych. Wartości ceny wahają się od 2,500,000 PLN do 12,500,000 PLN, podczas gdy powierzchnia mieści się w zakresie od 0 do 16,000 m². Wykres wskazuje na ogólną tendencję wzrostu ceny wraz ze wzrostem powierzchni, co jest zgodne z oczekiwaniami. Punkty danych są podzielone na dwie kategorie: prefarea = TRUE i prefarea = FALSE. Można zauważyć, że nieruchomości zlokalizowane w preferowanych obszarach (prefarea = TRUE) mają tendencję do osiągania wyższych cen przy podobnej powierzchni w porównaniu do nieruchomości z obszarów niepreferowanych.
Wnioski: Lokalizacja w preferowanym obszarze ma istotny wpływ na cenę nieruchomości, co sugeruje, że czynniki lokalizacyjne są kluczowe w wycenie nieruchomości.
####Histogram liczby sypialni
ggplot(data_imputed, aes(x = bedrooms)) +
geom_bar(fill = "steelblue", color = "black", alpha = 0.8) +
labs(title = "Rozkład liczby sypialni",
x = "Liczba sypialni",
y = "Liczba nieruchomości") +
theme_minimal()
Wykres przedstawia rozkład liczby sypialni w analizowanych nieruchomościach. Na osi pionowej znajduje się liczba nieruchomości, a na osi poziomej liczba sypialni. Większość nieruchomości posiada od 2 do 4 sypialni, co wskazuje na dominację nieruchomości o średniej wielkości. Nieruchomości z 1 sypialnią lub więcej niż 4 sypialnie są znacznie mniej liczne.
Wnioski: Rozkład ten sugeruje, że rynek nieruchomości jest zdominowany przez mieszkania i domy o średniej wielkości, co może odzwierciedlać preferencje nabywców.
####Histogram liczby nieruchomości z dostępem do drogi głównej
ggplot(data_imputed, aes(x = mainroad)) +
geom_bar(fill = "orange", color = "black", alpha = 0.8) +
labs(title = "Liczba nieruchomości z dostępem do drogi głównej",
x = "Dostęp do drogi głównej",
y = "Liczba nieruchomości") +
theme_minimal()
Wykres przedstawia liczbę nieruchomości z dostępem do drogi głównej, podzielonych na kategorie TRUE (dostęp) i FALSE (brak dostępu). Większość nieruchomości posiada dostęp do drogi głównej, co może wpływać na ich atrakcyjność i cenę. Nieruchomości bez dostępu do drogi głównej stanowią mniejszość.
Wnioski: Dostęp do drogi głównej jest istotnym czynnikiem wpływającym na wartość nieruchomości, co może być związane z wygodą dojazdu i ogólną dostępnością.
####Histogram liczby nieruchomości z klimatyzacją
ggplot(data_imputed, aes(x = airconditioning)) +
geom_bar(fill = "cyan", color = "black ", alpha = 0.8) +
labs(title = "Liczba nieruchomości z klimatyzacją",
x = "Klimatyzacja",
y = "Liczba nieruchomości") +
theme_minimal()
Wykres przedstawia liczbę nieruchomości wyposażonych w klimatyzację, podzielonych na kategorie TRUE (klimatyzacja) i FALSE (brak klimatyzacji). Większość nieruchomości nie posiada klimatyzacji, co może odzwierciedlać specyfikę lokalnego rynku nieruchomości. Nieruchomości z klimatyzacją stanowią mniejszość, co może wpływać na ich wyższą cenę.
Wnioski: Klimatyzacja jest rzadkością w analizowanym zbiorze nieruchomości, co może sugerować, że jest to czynnik różnicujący i wpływający na wartość nieruchomości.
####Wykres gęstości powierzchni z podziałem na klimatyzację
ggplot(data_imputed, aes(x = area, fill = airconditioning)) +
geom_density(alpha = 0.6) +
scale_fill_manual(values = c("TRUE" = "green", "FALSE" = "orange")) +
labs(title = "Rozkład powierzchni w zależności od klimatyzacji",
x = "Powierzchnia (m2)",
y = "Gęstość",
fill = "Klimatyzacja") +
theme_minimal()
Wykres przedstawia rozkład powierzchni nieruchomości w zależności od obecności klimatyzacji. Na osi pionowej znajduje się gęstość, a na osi poziomej powierzchnia w metrach kwadratowych. Nieruchomości z klimatyzacją mają tendencję do większej powierzchni w porównaniu do nieruchomości bez klimatyzacji. Rozkład powierzchni dla nieruchomości z klimatyzacją jest bardziej rozproszony, co może wskazywać na większą różnorodność w tej kategorii.
Wnioski: Klimatyzacja jest częściej spotykana w większych nieruchomościach, co może sugerować, że jest to cecha charakterystyczna dla nieruchomości o wyższym standardzie.
####Rozkład cen z podziałem na umeblowanie
ggplot(data_imputed, aes(x = price, fill = furnishingstatus)) +
geom_density(alpha = 0.6) +
scale_fill_manual(values = c("furnished" = "purple", "semi-furnished" = "pink", "unfurnished" = "grey")) +
labs(title = "Rozkład cen w zależności od statusu umeblowania",
x = "Cena (PLN)",
y = "Gęstość",
fill = "Status umeblowania") +
theme_minimal()
Wykres przedstawia rozkład cen nieruchomości w zależności od ich statusu umeblowania. Na osi pionowej znajduje się gęstość, a na osi poziomej cena w PLN. Status umeblowania jest podzielony na trzy kategorie: furnished (umeblowane), semi-furnished (częściowo umeblowane) i unfurnished (nieumeblowane). Nieruchomości umeblowane (furnished) mają tendencję do osiągania wyższych cen w porównaniu do nieruchomości częściowo umeblowanych (semi-furnished) i nieumeblowanych (unfurnished). Rozkład cen dla nieruchomości nieumeblowanych jest bardziej skoncentrowany w niższych przedziałach cenowych.
Wnioski: Status umeblowania ma istotny wpływ na cenę nieruchomości, co sugeruje, że nabywcy są skłonni płacić więcej za nieruchomości gotowe do zamieszkania.
####Rozkład liczby parkingów
ggplot(data_imputed, aes(x = parking)) +
geom_histogram(binwidth = 1, fill = "lightblue", color = "black", alpha = 0.8) +
labs(title = "Rozkład liczby parkingów",
x = "Liczba parkingów",
y = "Liczba nieruchomości") +
theme_minimal()
Wykres przedstawia rozkład liczby parkingów dostępnych w analizowanych nieruchomościach. Na osi poziomej znajduje się liczba parkingów, a na osi pionowej liczba nieruchomości. Większość nieruchomości posiada 1 lub 2 miejsca parkingowe, co wskazuje na standardową dostępność parkingów. Nieruchomości z 3 miejscami parkingowymi są rzadkością.
Wnioski: Liczba miejsc parkingowych jest istotnym czynnikiem wpływającym na atrakcyjność nieruchomości, szczególnie w obszarach o ograniczonej dostępności parkingów.
####Proporcje statusu umeblowania
library(dplyr)
data_imputed %>%
count(furnishingstatus) %>%
ggplot(aes(x = "", y = n, fill = furnishingstatus)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
scale_fill_manual(values = c("furnished" = "purple", "semi-furnished" = "pink", "unfurnished" = "grey")) +
labs(title = "Proporcja statusu umeblowania",
fill = "Status umeblowania") +
theme_void()
Wykres przedstawia proporcje nieruchomości według statusu umeblowania: furnished, semi-furnished i unfurnished. Największy odsetek nieruchomości to te nieumeblowane (unfurnished), co może odzwierciedlać preferencje nabywców do personalizacji przestrzeni. Nieruchomości umeblowane (furnished) stanowią mniejszość, ale są bardziej pożądane ze względu na wyższą cenę.
Wnioski: Rynek nieruchomości jest zdominowany przez nieruchomości nieumeblowane, co może wpływać na strategie marketingowe i wycenę nieruchomości.
data_imputed %>%
count(basement) %>%
ggplot(aes(x = "", y = n, fill = basement)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
scale_fill_manual(values = c("TRUE" = "blue", "FALSE" = "gray")) +
labs(title = "Proporcja nieruchomości z piwnicą",
fill = "Piwnica") +
theme_void()
Wykres przedstawia proporcje nieruchomości z piwnicą (TRUE) i bez piwnicy (FALSE). Większość nieruchomości posiada piwnicę, co może zwiększać ich funkcjonalność i atrakcyjność. Nieruchomości bez piwnicy stanowią mniejszość.
Wnioski: Obecność piwnicy jest istotnym czynnikiem wpływającym na wartość nieruchomości, szczególnie w kontekście dodatkowej przestrzeni magazynowej.
####Wykres proporcji ogrzewania wody
data_imputed %>%
count(hotwaterheating) %>%
ggplot(aes(x = "", y = n, fill = hotwaterheating)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
scale_fill_manual(values = c("TRUE" = "green", "FALSE" = "red")) +
labs(title = "Proporcja nieruchomości z ogrzewaniem wody",
fill = "Ogrzewanie wody") +
theme_void()
Wykres przedstawia proporcje nieruchomości z ogrzewaniem wody (TRUE) i bez ogrzewania wody (FALSE). Większość nieruchomości jest wyposażona w system ogrzewania wody, co jest standardem w nowoczesnych nieruchomościach. Nieruchomości bez ogrzewania wody stanowią mniejszość.
Wnioski: Ogrzewanie wody jest powszechnym i oczekiwanym udogodnieniem, które wpływa na komfort użytkowania nieruchomości.
Przeprowadzona analiza wizualizacji danych wykonanych w R-Studio dostarcza kompleksowego obrazu rynku nieruchomości, uwzględniającego różnorodne czynniki wpływające na ich wartość i atrakcyjność. Wnioski płynące z analizy wskazują, że kluczowe determinanty cen nieruchomości obejmują lokalizację, dostęp do infrastruktury, standard wyposażenia oraz funkcjonalność.
Lokalizacja w preferowanych obszarach znacząco wpływa na wyższą wartość nieruchomości, co podkreśla wagę czynników geograficznych i społecznych. Dostęp do drogi głównej oraz liczba miejsc parkingowych są istotnymi elementami zwiększającymi atrakcyjność nieruchomości, szczególnie w kontekście wygody i dostępności.
Standard wyposażenia, taki jak klimatyzacja czy ogrzewanie wody, również odgrywa ważną rolę w kształtowaniu cen. Nieruchomości wyposażone w te udogodnienia są postrzegane jako bardziej wartościowe, co odzwierciedla preferencje nabywców dotyczące komfortu użytkowania. Status umeblowania dodatkowo różnicuje rynek, z nieruchomościami umeblowanymi osiągającymi wyższe ceny, co sugeruje, że gotowość do zamieszkania jest istotnym atutem.
Funkcjonalność nieruchomości, w tym obecność piwnicy, wpływa na ich praktyczność i atrakcyjność, szczególnie w kontekście dodatkowej przestrzeni użytkowej. Rozkład liczby sypialni wskazuje na dominację nieruchomości o średniej wielkości, co może odzwierciedlać preferencje nabywców dotyczące przestrzeni mieszkalnej.
Podsumowując, analiza wizualizacji danych pozwala na zidentyfikowanie kluczowych czynników kształtujących rynek nieruchomości. Wnioski te mogą stanowić cenne źródło informacji dla inwestorów, deweloperów oraz nabywców, umożliwiając bardziej świadome podejmowanie decyzji inwestycyjnych i rynkowych.
Celem następnej części analizy jest zbadanie czynników wpływających na cenę nieruchomości, w szczególności statusu umeblowania, powierzchni oraz innych istotnych zmiennych. W ramach badania dokonano porównania cen w zależności od statusu umeblowania, przeanalizowano zależność między powierzchnią a ceną oraz zbadano korelacje pomiędzy różnymi cechami nieruchomości. Analiza ta ma na celu dostarczenie praktycznych wniosków dla inwestorów, sprzedających oraz kupujących nieruchomości, pomagając im w podejmowaniu lepiej uzasadnionych decyzji rynkowych.
W badaniu stosujemy różne metody statystyczne, w tym test ANOVA Welch’a do analizy różnic między grupami oraz współczynnik korelacji Pearsona do oceny zależności między zmiennymi. Dodatkowo przeprowadzamy testy post-hoc w celu dokładniejszego zbadania różnic pomiędzy kategoriami umeblowania. W dalszej części raportu przedstawiono wyniki i interpretacje tych analiz.
Opis statystyczny zmiennych numerycznych
summary(data[, sapply(df, is.numeric)])
## < table of extent 0 x 0 >
##Analiza różnic między grupami (price vs furnishingstatus)
Warto dodać, że analiza ta pozwala sprawdzić, czy status umeblowania wpływa na cenę nieruchomości, co może pomóc w określeniu preferencji rynkowych.
ggbetweenstats(
data = data_imputed,
x = furnishingstatus,
y = price,
title = "Porównanie cen nieruchomości względem statusu umeblowania"
)
W celu określenia istotności różnic zastosujemy test ANOVA Welch’a, który wykazał statystycznie istotne różnice między grupami: F(2, 311.55) = 20.76, p = 3.44e-09 (p < 0.05), co wskazuje, że status umeblowania ma znaczący wpływ na cenę nieruchomości.Wielkość efektu (ω²) wynosi 0.11, co sugeruje umiarkowany wpływ umeblowania na cenę.Test post-hoc Games-Howell wykazał istotne różnice pomiędzy wszystkimi grupami: Umeblowane vs. Częściowo umeblowane: p = 0.03 Umeblowane vs. Nieumeblowane: p = 4.73e-08 Częściowo umeblowane vs. Nieumeblowane: p = 1.1e-06 Wszystkie wartości p są poniżej progu istotności 0.05, co potwierdza, że różnice w cenach między kategoriami nie są przypadkowe.
Analiza wykazała, że status umeblowania ma istotny wpływ na cenę nieruchomości. Wyniki sugerują, że umeblowane nieruchomości są średnio o około 32% droższe od nieumeblowanych. Inwestowanie w umeblowanie może być strategią zwiększającą wartość nieruchomości na rynku. W dalszych badaniach warto uwzględnić inne zmienne, takie jak lokalizacja, wiek budynku czy standard wykończenia, aby uzyskać pełniejszy obraz czynników wpływających na cenę nieruchomości.
##Analiza zależności między zmiennymi (price vs area)
ggscatterstats(
data = data_imputed,
x = area,
y = price,
title = "Korelacja między powierzchnią a ceną nieruchomości"
)
## Registered S3 method overwritten by 'ggside':
## method from
## +.gg ggplot2
## `stat_xsidebin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_ysidebin()` using `bins = 30`. Pick better value with `binwidth`.
Analiza przedstawia korelację między powierzchnią (area) a ceną (price) nieruchomości. Współczynnik korelacji Pearsona wynosi 𝑟Pearson=0.22rPearson =0.22 z przedziałem ufności 95% [0.14, 0.30]. Oznacza to istnienie słabej, ale istotnej statystycznie dodatniej korelacji między powierzchnią a ceną nieruchomości. Test istotności korelacji wykazał t(543) = 5.36, p = 1.22e-07, co oznacza, że prawdopodobieństwo uzyskania takiego wyniku przy braku rzeczywistej zależności jest bardzo małe (p < 0.05). Dodatkowo analiza Bayesowska wskazuje na logarytm Bayes Factor log₁₀(BF₁₀) = -11.22, co sugeruje silne wsparcie dla istnienia tej korelacji.
Pomimo istotności statystycznej, siła zależności między powierzchnią a ceną nieruchomości jest stosunkowo niewielka (𝑟=0.22 r=0.22), co oznacza, że inne czynniki (np. lokalizacja, standard wykończenia) mogą mieć większy wpływ na cenę. Widzimy jednak, że wraz ze wzrostem powierzchni cena nieruchomości średnio wzrasta, choć rozproszenie danych wskazuje na dużą zmienność cen w zależności od innych zmiennych. Może to sugerować, że kupujący są skłonni płacić więcej za większe nieruchomości, ale nie jest to jedyny czynnik determinujący cenę.
##Macierz korelacji dla zmiennych numerycznych
ggcorrmat(
data = data_imputed %>% select(price, area, bedrooms, bathrooms, stories, parking),
title = "Macierz korelacji dla wybranych zmiennych"
)
Macierz korelacji przedstawia zależności między ceną nieruchomości (price) a wybranymi zmiennymi: powierzchnią (area), liczbą sypialni (bedrooms), liczbą łazienek (bathrooms), liczbą pięter (stories) oraz liczbą miejsc parkingowych (parking). Współczynniki korelacji Pearsona wskazują siłę oraz kierunek zależności między zmiennymi. Kolory w macierzy odzwierciedlają siłę korelacji – im ciemniejszy zielony, tym wyższa wartość. Wartości oznaczone “X” są statystycznie nieistotne po korekcie Holm’a, co oznacza, że nie można wykluczyć, że są wynikiem przypadku.
Najsilniejsza korelacja z ceną występuje dla liczby łazienek (r = 0.43) oraz liczby miejsc parkingowych (r = 0.38), co sugeruje, że te czynniki mogą mieć istotny wpływ na wartość nieruchomości.
Powierzchnia (area) ma relatywnie słabą korelację z ceną (r = 0.22), co potwierdza wcześniejsze analizy – inne czynniki mogą mieć większe znaczenie.
Liczba pięter (stories) i liczba sypialni (bedrooms) nie wykazują istotnej korelacji z ceną po korekcie istotności statystycznej (oznaczone “X”), co oznacza, że ich wpływ na cenę może być znikomy. Silna dodatnia korelacja między zmiennymi niezależnymi (np. bathrooms i stories – r = 0.41) sugeruje, że większe domy często mają więcej pięter i łazienek, co jest logiczne w kontekście projektowania budynków. Wartość r = 0.85 dla liczby miejsc parkingowych (parking) i liczby pięter (stories) wskazuje, że te zmienne są mocno powiązane – większe domy mają więcej pięter i więcej miejsc parkingowych. Podsumowując, analiza sugeruje, że na cenę nieruchomości największy wpływ mają liczba łazienek oraz dostępność miejsc parkingowych, natomiast liczba pięter i sypialni nie wykazuje istotnej zależności z ceną po uwzględnieniu korekty wielokrotnych testów.
##Wizualizacja proporcji zmiennej kategorycznej (furnishingstatus)
Celem tej sekcji jest identyfikacja zmiennych silnie skorelowanych, co może pomóc w modelowaniu predykcyjnym cen nieruchomości.
ggpiestats(
data = data_imputed,
x = furnishingstatus,
title = "Proporcje statusu umeblowania nieruchomości"
)
Wykres kołowy przedstawia proporcje statusu umeblowania nieruchomości w analizowanej próbie (n = 545). Podział wygląda następująco:
42% nieruchomości jest częściowo umeblowanych (semi-furnished) 33% nieruchomości jest nieumeblowanych (unfurnished) 26% nieruchomości jest w pełni umeblowanych (furnished)
Największy odsetek nieruchomości stanowią te częściowo umeblowane (42%), co sugeruje, że jest to najczęściej wybierana opcja na rynku. Nieruchomości w pełni umeblowane stanowią jedynie 26%, co może oznaczać, że kupujący częściej decydują się na samodzielne umeblowanie lub wynajem w stanie częściowym. Nieumeblowane nieruchomości (33%) również stanowią dużą część rynku, co może wynikać z preferencji nabywców do aranżacji wnętrza według własnych potrzeb lub ograniczeń budżetowych.
Celem przeprowadzonej analizy było zidentyfikowanie czynników mających wpływ na ceny nieruchomości oraz ich wizualizacja. Skoncentrowano się na kluczowych aspektach ekonomicznych i statystycznych, które pozwoliły lepiej zrozumieć mechanizmy kształtujące wartość mieszkań i domów.
Czynniki ekonomiczne Analiza wykazała, że jednym z najważniejszych elementów wpływających na cenę nieruchomości jest jej metraż. Większe mieszkania i domy zazwyczaj osiągają wyższe ceny, co jest zgodne z podstawowymi zasadami funkcjonowania rynku nieruchomości. Istotną rolę odgrywa również umeblowanie – nieruchomości sprzedawane z wyposażeniem są przeciętnie droższe od tych, które są nieumeblowane.
Kolejnym ważnym aspektem okazała się obecność klimatyzacji oraz lokalizacja względem głównych dróg – obie te cechy przyczyniają się do wzrostu wartości nieruchomości. Dodatkowo, infrastruktura towarzysząca, taka jak piwnica, miejsce parkingowe czy system ogrzewania wodnego, również ma znaczący wpływ na końcową cenę.
Z analizy wynika także, że rynek nieruchomości jest silnie zróżnicowany pod względem cenowym. Lokalizacja oraz dodatkowe udogodnienia mogą prowadzić do dużych rozbieżności w wartościach podobnych metrażowo nieruchomości. Co więcej, analiza wykazała, że liczba pięter budynku może być istotnym czynnikiem wpływającym na wartość nieruchomości, co może mieć znaczenie zarówno dla inwestorów, jak i osób prywatnych planujących zakup mieszkania.
Podejście statystyczne Od strony statystycznej analiza rozpoczęła się od weryfikacji kompletności danych. Występowanie brakujących wartości mogło wpłynąć na końcowe wyniki, dlatego przeprowadzono wizualizację tych braków oraz tam, gdzie było to konieczne, zastosowano odpowiednie metody imputacji.
Do eksploracji danych wykorzystano różne techniki wizualizacyjne. Wykresy punktowe pozwoliły na przedstawienie relacji między metrażem a ceną nieruchomości, natomiast wykresy słupkowe pokazały, jak zmieniają się ceny w zależności od liczby pięter i umeblowania. Dodatkowo, użycie wykresów typu boxplot ułatwiło porównanie cen nieruchomości w zależności od cech takich jak klimatyzacja, piwnica czy pokój gościnny, co pozwoliło na precyzyjniejszą interpretację danych. Histogramy natomiast ukazały rozkład cen oraz ich zależność od lokalizacji względem głównych dróg.
Na potrzeby analizy dokonano także przekształcenia wybranych zmiennych. Czynniki takie jak umeblowanie czy klimatyzacja zostały zaklasyfikowane jako zmienne kategoryczne, co ułatwiło dalsze wnioskowanie. Wykonano również analizę korelacji pomiędzy zmiennymi, aby określić, w jakim stopniu poszczególne cechy nieruchomości wpływają na ich cenę.
Najważniejsze wnioski Wyniki analizy potwierdziły, że powierzchnia nieruchomości ma kluczowe znaczenie dla jej wartości – im większy metraż, tym wyższa cena. Dodatkowe udogodnienia, takie jak piwnica, parking czy klimatyzacja, również zwiększają wartość nieruchomości, natomiast umeblowanie nie wykazało istotnego wpływu na cenę, co może sugerować, że nie jest to główny czynnik brany pod uwagę przez kupujących.