Wstęp

W projekcie analizowane są dane klientów sklepu rowerowego, zawierające informacje takie jak: status cywilny, płeć, poziom dochodów, liczba dzieci, poziom wykształcenia, wykonywany zawód, status posiadania domu, liczba samochodów, odległość do miejsca pracy, region zamieszkania oraz wiek. Celem pracy jest analiza tych informacji i przeprowadzenie badań co wpływa na zakup rowerów.

Import danych

library(readr)
sklep_rowerowy <- read.csv("sklep_rowerowy.csv", stringsAsFactors=FALSE, na.strings=c("", "NA"))

Zawartość danych oraz ich struktura

head(sklep_rowerowy)
##      ID Marital.Status Gender Income Children       Education     Occupation
## 1 12496        Married Female  40000        1       Bachelors Skilled Manual
## 2 24107        Married   Male  30000        3 Partial College       Clerical
## 3 14177        Married   Male  80000        5 Partial College   Professional
## 4 24381         Single   <NA>  70000        0       Bachelors   Professional
## 5 25597         Single   Male  30000        0       Bachelors       Clerical
## 6 13507        Married Female  10000        2 Partial College         Manual
##   Home.Owner Cars Commute.Distance  Region Age Purchased.Bike
## 1        Yes    0        0-1 Miles  Europe  42             No
## 2        Yes    1        0-1 Miles  Europe  43             No
## 3         No    2        2-5 Miles  Europe  60             No
## 4        Yes    1       5-10 Miles Pacific  41            Yes
## 5         No    0        0-1 Miles  Europe  36            Yes
## 6        Yes    0        1-2 Miles  Europe  50             No
str(sklep_rowerowy)
## 'data.frame':    1000 obs. of  13 variables:
##  $ ID              : int  12496 24107 14177 24381 25597 13507 27974 19364 22155 19280 ...
##  $ Marital.Status  : chr  "Married" "Married" "Married" "Single" ...
##  $ Gender          : chr  "Female" "Male" "Male" NA ...
##  $ Income          : int  40000 30000 80000 70000 30000 10000 160000 40000 20000 NA ...
##  $ Children        : int  1 3 5 0 0 2 2 1 2 2 ...
##  $ Education       : chr  "Bachelors" "Partial College" "Partial College" "Bachelors" ...
##  $ Occupation      : chr  "Skilled Manual" "Clerical" "Professional" "Professional" ...
##  $ Home.Owner      : chr  "Yes" "Yes" "No" "Yes" ...
##  $ Cars            : int  0 1 2 1 0 0 4 0 2 1 ...
##  $ Commute.Distance: chr  "0-1 Miles" "0-1 Miles" "2-5 Miles" "5-10 Miles" ...
##  $ Region          : chr  "Europe" "Europe" "Europe" "Pacific" ...
##  $ Age             : int  42 43 60 41 36 50 33 43 58 NA ...
##  $ Purchased.Bike  : chr  "No" "No" "No" "Yes" ...

Identyfikacja braków danych

W celu oceny kompletności zbioru danych „sklep_rowerowy” przeprowadzono analizę brakujących wartości. Wyniki wskazują, że w zestawie danych znajduje się 53 brakujących wartości. W zbiorze brakuje 0,4% wartości, w kolumnach: Income, Children, Cars, Age, Home Owner,Marital Status, Gender. Sprawdzono również rozłożenie braków w kolumnach w wartościach procentowych.

n_miss(sklep_rowerowy)
## [1] 53
vis_miss(sklep_rowerowy) + labs(title = "Braki danych")

miss_var_summary(sklep_rowerowy)  
## # A tibble: 13 × 3
##    variable         n_miss pct_miss
##    <chr>             <int>    <num>
##  1 Gender               11      1.1
##  2 Cars                  9      0.9
##  3 Children              8      0.8
##  4 Age                   8      0.8
##  5 Marital.Status        7      0.7
##  6 Income                6      0.6
##  7 Home.Owner            4      0.4
##  8 ID                    0      0  
##  9 Education             0      0  
## 10 Occupation            0      0  
## 11 Commute.Distance      0      0  
## 12 Region                0      0  
## 13 Purchased.Bike        0      0
braki_liczba <- sklep_rowerowy %>%
  summarise(across(everything(), ~ sum(is.na(.)))) %>%  # Liczba braków w kolumnach
  pivot_longer(everything(), names_to = "Kolumna", values_to = "Liczba_braków")  

ggplot(braki_liczba, aes(x = Kolumna, y = Liczba_braków)) +  
  geom_bar(stat = "identity", fill = "steelblue") +  
  labs(title = "Liczba brakujących danych w kolumnach",
       x = "Kolumna", y = "Liczba braków") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  

braki_procent <- sklep_rowerowy %>%
  summarise(across(everything(), ~ mean(is.na(.)) * 100)) %>%  
  pivot_longer(everything(), names_to = "Kolumna", values_to = "Procent")  

ggplot(braki_procent, aes(x = reorder(Kolumna, -Procent), y = Procent)) +  
  geom_bar(stat = "identity", fill = "steelblue") +
  coord_flip() +
  labs(title = "Procent brakujących danych w kolumnach",
       x = "Kolumna", y = "% braków") +
  theme_minimal()

Przypisywanie zmiennych typu factor

W celu poprawności analiz dokonano konwersji wybranych kolumn na zmienne kategoryczne (factor), obejmujących m.in. stan cywilny, płeć, wykształcenie, zawód, status własności nieruchomości, dystans do pracy, region oraz decyzję o zakupie roweru. Przekształcenie to umożliwia poprawne traktowanie danych przez R jako nominalne lub porządkowe, co jest istotne dla analiz statystycznych, modeli predykcyjnych oraz wizualizacji.

sklep_rowerowy <- sklep_rowerowy %>%
  mutate(
    `Marital.Status` = na_if(`Marital.Status`, ""),
    Gender = na_if(Gender, ""),
    `Home.Owner` = na_if(`Home.Owner`, ""),
    `Marital.Status` = factor(`Marital.Status`),
    Gender = factor(Gender),
    Education = factor(Education),
    Occupation = factor(Occupation),
    `Home.Owner` = factor(`Home.Owner`),
    `Commute.Distance` = factor(`Commute.Distance`),
    Region = factor(Region),
    `Purchased.Bike` = factor(`Purchased.Bike`)
  )
str(sklep_rowerowy)
## 'data.frame':    1000 obs. of  13 variables:
##  $ ID              : int  12496 24107 14177 24381 25597 13507 27974 19364 22155 19280 ...
##  $ Marital.Status  : Factor w/ 2 levels "Married","Single": 1 1 1 2 2 1 2 1 NA 1 ...
##  $ Gender          : Factor w/ 2 levels "Female","Male": 1 2 2 NA 2 1 2 2 2 2 ...
##  $ Income          : int  40000 30000 80000 70000 30000 10000 160000 40000 20000 NA ...
##  $ Children        : int  1 3 5 0 0 2 2 1 2 2 ...
##  $ Education       : Factor w/ 5 levels "Bachelors","Graduate Degree",..: 1 4 4 1 1 4 3 1 5 4 ...
##  $ Occupation      : Factor w/ 5 levels "Clerical","Management",..: 5 1 4 4 1 3 2 5 1 3 ...
##  $ Home.Owner      : Factor w/ 2 levels "No","Yes": 2 2 1 2 1 2 NA 2 2 2 ...
##  $ Cars            : int  0 1 2 1 0 0 4 0 2 1 ...
##  $ Commute.Distance: Factor w/ 5 levels "0-1 Miles","1-2 Miles",..: 1 1 4 5 1 2 1 1 5 1 ...
##  $ Region          : Factor w/ 3 levels "Europe","North America",..: 1 1 1 3 1 1 3 1 3 1 ...
##  $ Age             : int  42 43 60 41 36 50 33 43 58 NA ...
##  $ Purchased.Bike  : Factor w/ 2 levels "No","Yes": 1 1 1 2 2 1 2 2 1 2 ...

Imputacja Danych

W celu uzupełnienia brakujących wartości w zbiorze “sklep_rowerowy” zastosowano średnią adaptacyjną do zmiennych liczbowych oraz metodę Predictive Mean Matching (pmm) dla zmiennych kategorycznych. Imputacja pozwoliła na eliminację braków danych, co zwiększa kompletność i wiarygodność zbioru, umożliwiając dokładniejsze analizy. Dzięki tym metodom zachowano strukturę danych, minimalizując wpływ braków na wyniki statystyczne i modele predykcyjne. Wizualizacja potwierdza, że po imputacji wszystkie kolumny są w pełni uzupełnione (0% braków).

sklep_rowerowy <- sklep_rowerowy %>%
mutate(across(where(is.numeric), ~ ifelse(is.na(.), mean(., na.rm = TRUE, trim = 0.1), .)))

imputed_data <- mice(sklep_rowerowy, m = 5, method = 'pmm', seed = 123)
## 
##  iter imp variable
##   1   1  Marital.Status  Gender  Home.Owner
##   1   2  Marital.Status  Gender  Home.Owner
##   1   3  Marital.Status  Gender  Home.Owner
##   1   4  Marital.Status  Gender  Home.Owner
##   1   5  Marital.Status  Gender  Home.Owner
##   2   1  Marital.Status  Gender  Home.Owner
##   2   2  Marital.Status  Gender  Home.Owner
##   2   3  Marital.Status  Gender  Home.Owner
##   2   4  Marital.Status  Gender  Home.Owner
##   2   5  Marital.Status  Gender  Home.Owner
##   3   1  Marital.Status  Gender  Home.Owner
##   3   2  Marital.Status  Gender  Home.Owner
##   3   3  Marital.Status  Gender  Home.Owner
##   3   4  Marital.Status  Gender  Home.Owner
##   3   5  Marital.Status  Gender  Home.Owner
##   4   1  Marital.Status  Gender  Home.Owner
##   4   2  Marital.Status  Gender  Home.Owner
##   4   3  Marital.Status  Gender  Home.Owner
##   4   4  Marital.Status  Gender  Home.Owner
##   4   5  Marital.Status  Gender  Home.Owner
##   5   1  Marital.Status  Gender  Home.Owner
##   5   2  Marital.Status  Gender  Home.Owner
##   5   3  Marital.Status  Gender  Home.Owner
##   5   4  Marital.Status  Gender  Home.Owner
##   5   5  Marital.Status  Gender  Home.Owner
sklep_rowerowy <- complete(imputed_data)

n_miss(sklep_rowerowy)
## [1] 0
vis_miss(sklep_rowerowy) + labs(title = "Braki danych po imputacji")

Wizualizacje danych

  1. Rozkład zmiennych liczbowych i kategorycznych - Przeanalizowano rozkład zmiennych liczbowych oraz kategorycznych w zbiorze “sklep_rowerowy”. Histogramy przedstawiają rozkład wartości w zmiennych takich jak wiek (Age), liczba samochodów (Cars), liczba dzieci (Children), dochód (Income), ukazując różnorodność danych i potencjalne odstępstwa. Wykresy kategorii pokazują liczbę obserwacji dla zmiennych takich jak płeć, wykształcenie, region oraz status zakupu roweru.

  2. Czynniki wpływające na zakup roweru - Dane wskazują na zróżnicowanie decyzji zakupowych w zależności od regionu, gdzie w Ameryce Północnej zakupów jest najwięcej, a w regionie Pacyfiku najmniej. Istotnym czynnikiem jest także dystans do pracy, gdzie osoby mieszkające bliżej miejsca pracy (0-1 mil) częściej decydują się na zakup roweru.

  3. Dochód klientów a zakup roweru - Analiza dochodów pokazuje, że większość klientów ma dochody w przedziale 25 000 - 75 000, przy czym nie ma wyraźnej różnicy w zakupach rowerów w zależności od dochodu. Wykres pudełkowy dochodów w regionach wskazuje, że najwyższe zarobki występują w regionie Pacyfiku, a najniższe w Europie.

  4. Korelacje między zmiennymi - Macierz korelacji wykazuje, że najwyższa zależność występuje między liczbą dzieci a wiekiem (0,53) oraz liczbą samochodów a dochodem (0,43). Sugeruje to, że dochód jest kluczowym czynnikiem wpływającym na styl życia klientów

sklep_rowerowy %>%
select(where(is.numeric)) %>%
pivot_longer(everything()) %>%
ggplot(aes(x = value)) +
geom_histogram(bins = 30, fill = "skyblue", color = "black") +
facet_wrap(~ name, scales = "free") +
labs(title = "Rozkład zmiennych liczbowych", x = "Wartość", y = "Częstość") +
theme_minimal()   

sklep_rowerowy %>%
select(where(is.factor)) %>%
pivot_longer(everything()) %>%
ggplot(aes(x = value)) +
geom_bar(fill = "steelblue") +
facet_wrap(~ name, scales = "free") +
labs(title = "Rozkład zmiennych kategorycznych", x = "Kategorie", y = "Liczba obserwacji") +
theme_minimal()  

  ggplot(sklep_rowerowy, aes(x = Region, fill = Purchased.Bike)) +
    geom_bar(position = "dodge") +
    labs(title = "Zakup rowerów względem regionu",
         x = "Region",
         y = "Liczba zakupów",
         fill = "Zakup roweru (No = 0, Yes = 1)") +
    theme_minimal()

ggplot(sklep_rowerowy, aes(x = Commute.Distance, fill = Purchased.Bike)) +
  geom_bar(position = "dodge") +
  labs(title = "Zakup rowerów względem przejechanych kilometrów",
       x = "Dystans dojazdu do pracy",
       y = "Liczba zakupów",
       fill = "Zakup roweru (No = 0, Yes = 1)") +
  theme_minimal()

ggplot(sklep_rowerowy, aes(x = Income, fill = Purchased.Bike)) +
  geom_histogram(position = "dodge", bins = 30, alpha = 0.7) +
  labs(title = "Dochód klientów względem zakupu roweru",
       x = "Dochód",
       y = "Liczba klientów",
       fill = "Zakup roweru (No = 0, Yes = 1)") +
  theme_minimal()

ggplot(sklep_rowerowy, aes(x = Region, y = Income, fill = Region)) +
  geom_boxplot() +
  labs(title = "Dochód klientów w różnych regionach",
       x = "Region",
       y = "Dochód") +
  theme_minimal()

cor_matrix <- cor(sklep_rowerowy %>% select(where(is.numeric)), use = "complete.obs")
ggcorrplot(cor_matrix, hc.order = TRUE, type = "lower", lab = TRUE)

Model drzewa decyzyjnego

  1. Budowa modelu W celu przewidywania zakupu roweru zbudowano model drzewa decyzyjnego, wykorzystując dane treningowe stanowiące 70% zbioru, a pozostałe 30% jako zbiór testowy. Model został wytrenowany na podstawie zmiennych niezależnych, a następnie zwizualizowany, co umożliwia interpretację kluczowych czynników wpływających na zakup roweru.

  2. Wyniki predykcji Macierz pomyłek pokazuje, że model poprawnie sklasyfikował 102 przypadki braku zakupu oraz 77 przypadków zakupu, jednak 71 osób, które nie kupiły roweru, zostało błędnie zaklasyfikowanych jako kupujący, a 50 osób, które dokonały zakupu, zostały zaklasyfikowane jako niekupujący.

  3. Dokładność modelu Uzyskana dokładność modelu wynosi 59,67%, co sugeruje umiarkowaną skuteczność klasyfikacji. Wynik ten może wskazywać na potrzebę optymalizacji modelu, np. poprzez pruning drzewa, zastosowanie innych metod klasyfikacyjnych lub inżynierię cech w celu zwiększenia jego predykcyjnej wartości.

set.seed(123)
train_index <- sample(seq_len(nrow(sklep_rowerowy)), size = 0.7 * nrow(sklep_rowerowy))
train_data <- sklep_rowerowy[train_index, ]
test_data <- sklep_rowerowy[-train_index, ]

tree_model <- rpart(`Purchased.Bike` ~ ., data = train_data, method = "class")
tree_model
## n= 700 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##   1) root 700 333 No (0.52428571 0.47571429)  
##     2) Cars>=1.184741 337 121 No (0.64094955 0.35905045)  
##       4) ID>=18668.5 195  56 No (0.71282051 0.28717949) *
##       5) ID< 18668.5 142  65 No (0.54225352 0.45774648)  
##        10) Children>=4.5 25   6 No (0.76000000 0.24000000) *
##        11) Children< 4.5 117  58 Yes (0.49572650 0.50427350)  
##          22) Occupation=Clerical,Management 37  11 No (0.70270270 0.29729730) *
##          23) Occupation=Manual,Professional,Skilled Manual 80  32 Yes (0.40000000 0.60000000) *
##     3) Cars< 1.184741 363 151 Yes (0.41597796 0.58402204)  
##       6) ID< 17728 140  61 No (0.56428571 0.43571429)  
##        12) Occupation=Management,Manual,Skilled Manual 74  22 No (0.70270270 0.29729730) *
##        13) Occupation=Clerical,Professional 66  27 Yes (0.40909091 0.59090909)  
##          26) Age< 33.5 10   2 No (0.80000000 0.20000000) *
##          27) Age>=33.5 56  19 Yes (0.33928571 0.66071429)  
##            54) Age>=54.5 8   2 No (0.75000000 0.25000000) *
##            55) Age< 54.5 48  13 Yes (0.27083333 0.72916667) *
##       7) ID>=17728 223  72 Yes (0.32286996 0.67713004)  
##        14) Age< 31.5 30  11 No (0.63333333 0.36666667)  
##          28) Region=Europe,North America 22   3 No (0.86363636 0.13636364) *
##          29) Region=Pacific 8   0 Yes (0.00000000 1.00000000) *
##        15) Age>=31.5 193  53 Yes (0.27461140 0.72538860)  
##          30) Age>=39.5 110  49 Yes (0.44545455 0.55454545)  
##            60) Commute.Distance=10+ Miles 7   0 No (1.00000000 0.00000000) *
##            61) Commute.Distance=0-1 Miles,1-2 Miles,2-5 Miles,5-10 Miles 103  42 Yes (0.40776699 0.59223301)  
##             122) ID< 21870.5 43  20 No (0.53488372 0.46511628)  
##               244) Income>=65000 10   1 No (0.90000000 0.10000000) *
##               245) Income< 65000 33  14 Yes (0.42424242 0.57575758) *
##             123) ID>=21870.5 60  19 Yes (0.31666667 0.68333333) *
##          31) Age< 39.5 83   4 Yes (0.04819277 0.95180723) *
rpart.plot(tree_model, type = 4, extra = 104, fallen.leaves = TRUE, 
           box.palette = "RdBu", shadow.col = "gray", nn = TRUE )

tree_predictions <- predict(tree_model, test_data, type = "class")

conf_matrix <- table(Predicted = tree_predictions, Actual = test_data$`Purchased.Bike`)
conf_matrix
##          Actual
## Predicted No Yes
##       No  98  71
##       Yes 54  77
accuracy <- mean(tree_predictions == test_data$`Purchased.Bike`)
cat("Dokładność modelu drzewa decyzyjnego:", round(accuracy * 100, 2), "%\n")
## Dokładność modelu drzewa decyzyjnego: 58.33 %

Segmentacja klientów (Klasteryzacja K-średnich) dla osób które kupiły rower ze względu na dane numeryczne

Przeprowadzono segmentację klientów, którzy kupili rower, wykorzystując metodę K-średnich na podstawie numerycznych cech. Dane zostały standaryzowane, a optymalną liczbę klastrów określono metodą WSS (Elbow Method). Klasteryzacja podzieliła klientów na trzy grupy, co wizualizacja przedstawia jako odrębne segmenty. Analiza ta pozwala lepiej zrozumieć różnice między kupującymi oraz identyfikować ich charakterystyczne cechy, co może być użyteczne w strategiach marketingowych i sprzedażowych.

bike_buyers <- sklep_rowerowy %>% filter(Purchased.Bike == "Yes")

cluster_data <- bike_buyers %>% select(where(is.numeric))
cluster_data_scaled <- scale(cluster_data)

fviz_nbclust(cluster_data_scaled, kmeans, method = "wss")

set.seed(123)
kmeans_model <- kmeans(cluster_data_scaled, centers = 3, nstart = 25)

fviz_cluster(kmeans_model, data = cluster_data_scaled, geom = "point") +
  labs(title = "Segmentacja klientów - Klasteryzacja K-średnich (Kupujący rowery)")

Statystyki opisowe

Statystyki dla zmiennych numerycznych

Przeprowadzona analiza statystyczna zbioru danych obejmowała kluczowe zmienne numeryczne, takie jak dochód klientów (Income) oraz liczba dzieci (Children). W celu charakterystyki rozkładu danych obliczono średnią arytmetyczną (mean), medianę (median) oraz odchylenie standardowe (sd), które określają przeciętną wartość cechy, jej środkową wartość odporną na odstające obserwacje oraz zmienność wyników.

Uzyskane wyniki wskazują, że dla ID średnia wynosi 19 965,99, mediana 19 744, a odchylenie standardowe 5 347,33, co świadczy o równomiernym rozkładzie wartości. Dochód klientów charakteryzuje się średnią 56 252,09 i medianą 60 000, co sugeruje asymetrię rozkładu i duże zróżnicowanie, potwierdzone wysokim odchyleniem standardowym (30 975,03). Natomiast liczba dzieci wykazuje stabilność – średnia wynosi 1,91, mediana 2, a niewielkie odchylenie standardowe wskazuje na małą zmienność tej cechy.

sklep_rowerowy %>% summarise(across(where(is.numeric), list(
  mean = ~mean(.x, na.rm = TRUE),
  median = ~median(.x, na.rm = TRUE),
  sd = ~sd(.x, na.rm = TRUE)
)))
##    ID_mean ID_median    ID_sd Income_mean Income_median Income_sd Children_mean
## 1 19965.99     19744 5347.334    56252.09         60000  30975.03      1.909287
##   Children_median Children_sd Cars_mean Cars_median Cars_sd Age_mean Age_median
## 1               2    1.620421  1.454325           1 1.11672 44.17587         43
##     Age_sd
## 1 11.31659

Statystyki opisowe dla zmiennych kategorycznych

Analiza zmiennych kategorycznych obejmuje stan cywilny, płeć, poziom wykształcenia, rodzaj zatrudnienia, zakup roweru, dystans do pracy oraz region zamieszkania. W celu identyfikacji dominujących grup klientów utworzono tabele liczebności.

Wyniki wskazują, że żonaci/zamężni (538 osób) i osoby samotne (462) występują w zbliżonych proporcjach, podobnie jak kobiety (494) i mężczyźni (506). Najwięcej osób posiada wykształcenie licencjackie (306), a najliczniejsza grupa zawodowa to pracownicy profesjonalni (276).

Większość klientów (684 osoby) zakupiła rower, co może sugerować duże zainteresowanie tym środkiem transportu. Najczęściej dojeżdżają do pracy w promieniu 1 mili (366 osób). Pod względem regionu, dominującą grupą są mieszkańcy Ameryki Północnej (684 osoby), następnie Europy (308) i regionu Pacyfiku (192).

Podsumowując, większość klientów mieszka blisko miejsca pracy, ma wykształcenie licencjackie, wykonuje zawód profesjonalny i pochodzi z Ameryki Północnej. Zdecydowana większość dokonała zakupu roweru, co może wskazywać na dużą popularność tego środka transportu wśród badanej grupy.

table(sklep_rowerowy$Marital.Status)
## 
## Married  Single 
##     538     462
table(sklep_rowerowy$Gender)
## 
## Female   Male 
##    494    506
table(sklep_rowerowy$Education)
## 
##           Bachelors     Graduate Degree         High School     Partial College 
##                 306                 174                 179                 265 
## Partial High School 
##                  76
table(sklep_rowerowy$Occupation)
## 
##       Clerical     Management         Manual   Professional Skilled Manual 
##            177            173            119            276            255
table(sklep_rowerowy$Home.Owner)
## 
##  No Yes 
## 316 684
table(sklep_rowerowy$Commute.Distance)
## 
##  0-1 Miles  1-2 Miles  10+ Miles  2-5 Miles 5-10 Miles 
##        366        169        111        162        192
table(sklep_rowerowy$Region)
## 
##        Europe North America       Pacific 
##           300           508           192

Podsumowanie statystyk opisowych

  1. Kluczowe statystyki opisowe: Analiza zmiennych numerycznych wskazuje na istotne różnice w dochodach klientów. Średni dochód wynosi 56 252,1, jednak duża rozpiętość wartości (od 10 000 do 170 000) oraz wysokie odchylenie standardowe sugerują istotne różnice dochodowe wśród badanej grupy. Tego rodzaju zróżnicowanie może wskazywać na różne grupy klientów o odmiennym statusie ekonomicznym, co może mieć wpływ na ich decyzje zakupowe. Pod względem wieku średnia wynosi 44,2, a mediana 43 lata, co oznacza, że większość klientów znajduje się w wieku średnim. Wiek minimalny wynosi 25 lat, a maksymalny 89 lat, co sugeruje stosunkowo szeroką rozpiętość wieku w analizowanej grupie. Może to oznaczać, że oferta sklepu rowerowego jest atrakcyjna dla osób z różnych grup wiekowych. Średnia liczba dzieci wynosi 1,9, przy wartościach od 0 do 5, co sugeruje, że większość klientów ma jedno lub dwoje dzieci, a większe rodziny stanowią mniejszy odsetek. Liczba posiadanych samochodów wynosi średnio 1,5, co wskazuje, że większość badanej populacji posiada od jednego do dwóch pojazdów, co może mieć wpływ na wybór środków transportu i preferencje dotyczące mobilności.

  2. Struktura demograficzna i społeczna: Analiza struktury populacji pod względem płci pokazuje, że kobiety i mężczyźni są niemal równomiernie reprezentowani (49,4% vs. 50,6%), co oznacza, że nie ma dominującej grupy pod względem płci wśród klientów. W kontekście stanu cywilnego 53,8% osób pozostaje w związku małżeńskim, a 46,2% to osoby samotne, co może sugerować, że zarówno osoby żyjące w rodzinach, jak i osoby nieposiadające partnerów są zainteresowane zakupem roweru w podobnym stopniu. Największa część klientów posiada wykształcenie licencjackie (30,6%), co oznacza, że większość z nich ukończyła studia wyższe pierwszego stopnia. Stosunkowo duży odsetek klientów ma również częściowe wykształcenie wyższe (26,5%) lub studia magisterskie (17,4%), podczas gdy najmniejsza grupa posiada tylko wykształcenie średnie (7,6%). Może to sugerować, że oferta sklepu rowerowego trafia głównie do osób z wyższym poziomem edukacji. Dodatkowo, 68,4% klientów posiada własną nieruchomość, co sugeruje ich stabilną sytuację finansową. Właściciele nieruchomości mogą mieć większą skłonność do inwestycji w produkty rekreacyjne, takie jak rowery, co może być istotnym czynnikiem wpływającym na ich decyzje zakupowe.

  3. Charakterystyka transportu i lokalizacji:Analiza dystansu do pracy wskazuje, że najwięcej osób dojeżdża do pracy w promieniu 0-1 mili (36,6%), co oznacza, że większość klientów mieszka stosunkowo blisko swojego miejsca zatrudnienia. Może to wpływać na popularność rowerów jako środka transportu, ponieważ krótkie dystanse sprzyjają ich wykorzystaniu. Z kolei najrzadziej spotykany dystans to ponad 10 mil (11,1%), co oznacza, że tylko niewielka grupa klientów musi pokonywać duże odległości codziennie. Pod względem regionu zamieszkania 50,8% klientów pochodzi z Ameryki Północnej, 30% z Europy, a 19,2% z regionu Pacyfiku. Może to sugerować, że klienci z Ameryki Północnej dominują w analizowanym zbiorze, co może mieć wpływ na wzorce zakupowe i preferencje dotyczące transportu.

  4. Decyzja o zakupie roweru: Wyniki analizy pokazują, że 51,9% klientów nie kupiło roweru, natomiast 48,1% zdecydowało się na jego zakup. Sugeruje to, że niemal połowa populacji dostrzega wartość roweru jako środka transportu lub narzędzia rekreacyjnego. Wnioski wskazują, że dochody klientów oraz odległość do pracy mogą mieć wpływ na ich decyzję zakupową – osoby o wyższych dochodach oraz te, które mieszkają bliżej miejsca pracy, częściej wybierają rower. Dodatkowo, status własności nieruchomości i liczba posiadanych samochodów również mogą wpływać na zakup roweru. Osoby posiadające więcej niż jeden samochód mogą być mniej skłonne do zakupu roweru jako alternatywnego środka transportu. Natomiast region zamieszkania wydaje się mieć mniejsze znaczenie dla decyzji o zakupie roweru, co sugeruje, że motywacje klientów są bardziej związane z indywidualnymi czynnikami ekonomicznymi i stylu życia niż z ich lokalizacją geograficzną.

  5. Podsumowując, analiza wykazała, że klienci sklepu rowerowego to przede wszystkim osoby w średnim wieku, z wyższym wykształceniem, stabilnym zatrudnieniem i relatywnie wysokimi dochodami. W większości posiadają oni własne nieruchomości i samochody, jednak znaczna część z nich mieszka blisko miejsca pracy, co sprzyja wykorzystywaniu rowerów jako środka transportu. Decyzja o zakupie roweru zależy głównie od poziomu dochodów oraz dystansu do pracy, natomiast region zamieszkania nie wydaje się istotnym czynnikiem.

library(summarytools)
dfSummary(sklep_rowerowy) %>% print(method = "render", style = "grid")

Data Frame Summary

sklep_rowerowy

Dimensions: 1000 x 13
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 ID [integer]
Mean (sd) : 19966 (5347.3)
min ≤ med ≤ max:
11000 ≤ 19744 ≤ 29447
IQR (CV) : 9180 (0.3)
1000 distinct values 1000 (100.0%) 0 (0.0%)
2 Marital.Status [factor]
1. Married
2. Single
538(53.8%)
462(46.2%)
1000 (100.0%) 0 (0.0%)
3 Gender [factor]
1. Female
2. Male
494(49.4%)
506(50.6%)
1000 (100.0%) 0 (0.0%)
4 Income [numeric]
Mean (sd) : 56252.1 (30975)
min ≤ med ≤ max:
10000 ≤ 60000 ≤ 170000
IQR (CV) : 40000 (0.6)
17 distinct values 1000 (100.0%) 0 (0.0%)
5 Children [numeric]
Mean (sd) : 1.9 (1.6)
min ≤ med ≤ max:
0 ≤ 2 ≤ 5
IQR (CV) : 3 (0.8)
0.00  :274(27.4%)
1.00  :169(16.9%)
1.79 !:8(0.8%)
2.00  :209(20.9%)
3.00  :133(13.3%)
4.00  :126(12.6%)
5.00  :81(8.1%)
! rounded
1000 (100.0%) 0 (0.0%)
6 Education [factor]
1. Bachelors
2. Graduate Degree
3. High School
4. Partial College
5. Partial High School
306(30.6%)
174(17.4%)
179(17.9%)
265(26.5%)
76(7.6%)
1000 (100.0%) 0 (0.0%)
7 Occupation [factor]
1. Clerical
2. Management
3. Manual
4. Professional
5. Skilled Manual
177(17.7%)
173(17.3%)
119(11.9%)
276(27.6%)
255(25.5%)
1000 (100.0%) 0 (0.0%)
8 Home.Owner [factor]
1. No
2. Yes
316(31.6%)
684(68.4%)
1000 (100.0%) 0 (0.0%)
9 Cars [numeric]
Mean (sd) : 1.5 (1.1)
min ≤ med ≤ max:
0 ≤ 1 ≤ 4
IQR (CV) : 1 (0.8)
0.00  :238(23.8%)
1.00  :267(26.7%)
1.37 !:9(0.9%)
2.00  :342(34.2%)
3.00  :85(8.5%)
4.00  :59(5.9%)
! rounded
1000 (100.0%) 0 (0.0%)
10 Commute.Distance [factor]
1. 0-1 Miles
2. 1-2 Miles
3. 10+ Miles
4. 2-5 Miles
5. 5-10 Miles
366(36.6%)
169(16.9%)
111(11.1%)
162(16.2%)
192(19.2%)
1000 (100.0%) 0 (0.0%)
11 Region [factor]
1. Europe
2. North America
3. Pacific
300(30.0%)
508(50.8%)
192(19.2%)
1000 (100.0%) 0 (0.0%)
12 Age [numeric]
Mean (sd) : 44.2 (11.3)
min ≤ med ≤ max:
25 ≤ 43 ≤ 89
IQR (CV) : 17 (0.3)
54 distinct values 1000 (100.0%) 0 (0.0%)
13 Purchased.Bike [factor]
1. No
2. Yes
519(51.9%)
481(48.1%)
1000 (100.0%) 0 (0.0%)

Generated by summarytools 1.0.1 (R version 4.4.2)
2025-02-11

Przekroje

Przeprowadzona analiza przekrojowa ujawnia istotne zależności między dochodem, wiekiem, dystansem do pracy, regionem zamieszkania i decyzją o zakupie roweru. Osoby, które zdecydowały się na zakup roweru, miały wyższy średni dochód (57 738,22) niż osoby, które nie kupiły roweru (54 874,76). Różnice te sugerują, że rower może być traktowany zarówno jako środek transportu, jak i produkt rekreacyjny przez klientów o wyższych dochodach. Widać również, że młodsze osoby częściej kupują rowery – średni wiek kupujących wynosi 42,93, natomiast niekupujących 45,33, co może wskazywać na większe zainteresowanie rowerami w młodszych grupach wiekowych.

Analiza dystansu do pracy wykazała, że osoby o wyższych dochodach częściej dojeżdżają na dłuższe dystanse – średni dochód rośnie wraz z odległością, osiągając najwyższy poziom 74 864,86 dla osób dojeżdżających 12,5 mili. Może to wynikać z faktu, że lepiej płatne miejsca pracy znajdują się dalej od obszarów zamieszkania.

Podział według regionów ujawnił wyraźne różnice w poziomie dochodów. W Europie średni dochód osób dojeżdżających na dłuższe dystanse jest ponad trzykrotnie wyższy niż u tych mieszkających blisko pracy, natomiast w Ameryce Północnej i regionie Pacyfiku różnice te są mniej wyraźne. Wskazuje to, że w Europie odległość do pracy może być silniej skorelowana z poziomem dochodów niż w innych regionach.

Analiza decyzji o zakupie roweru w różnych regionach wykazała, że osoby, które kupiły rower, miały wyższy średni dochód we wszystkich regionach. W Ameryce Północnej kupujący zarabiali średnio 65 062,19, podczas gdy niekupujący 60 902,78. Podobne zależności zaobserwowano w Europie i regionie Pacyfiku.

przekroj_Purchased_Income_Age <- sklep_rowerowy %>%
  group_by(Purchased.Bike) %>%
  summarise(Count = n(), Avg_Income = mean(Income, na.rm = TRUE), Avg_Age = mean(Age, na.rm = TRUE))
przekroj_Purchased_Income_Age
## # A tibble: 2 × 4
##   Purchased.Bike Count Avg_Income Avg_Age
##   <fct>          <int>      <dbl>   <dbl>
## 1 No               519     54875.    45.3
## 2 Yes              481     57738.    42.9
przekroj_Distance_Income_Cars <- sklep_rowerowy %>%
  group_by(Commute.Distance) %>%
  summarise(Count = n(), Avg_Income = mean(Income, na.rm = TRUE), Avg_Age = mean(Cars, na.rm = TRUE))
przekroj_Distance_Income_Cars
## # A tibble: 5 × 4
##   Commute.Distance Count Avg_Income Avg_Age
##   <fct>            <int>      <dbl>   <dbl>
## 1 0-1 Miles          366     49384.    1.01
## 2 1-2 Miles          169     51893.    1.50
## 3 10+ Miles          111     74865.    2.44
## 4 2-5 Miles          162     60331.    1.26
## 5 5-10 Miles         192     58978.    1.87
przekroj_Income_Age_Children <- sklep_rowerowy %>%
  pivot_longer(cols = c(Income, Age, Children,Cars), names_to = "Variable", values_to = "Value") %>%
  group_by(Variable) %>%
  summarise(Avg_Value = mean(Value, na.rm = TRUE), Count = n())
przekroj_Income_Age_Children
## # A tibble: 4 × 3
##   Variable Avg_Value Count
##   <chr>        <dbl> <int>
## 1 Age          44.2   1000
## 2 Cars          1.45  1000
## 3 Children      1.91  1000
## 4 Income    56252.    1000
przekroj_region_Distance_dochod <- sklep_rowerowy %>%
  group_by(Region, `Commute.Distance`) %>%
  summarise(Count = n(), Avg_Income = mean(Income, na.rm = TRUE))
## `summarise()` has grouped output by 'Region'. You can override using the
## `.groups` argument.
przekroj_region_Distance_dochod
## # A tibble: 15 × 4
## # Groups:   Region [3]
##    Region        Commute.Distance Count Avg_Income
##    <fct>         <fct>            <int>      <dbl>
##  1 Europe        0-1 Miles          188     32772.
##  2 Europe        1-2 Miles           38     25263.
##  3 Europe        10+ Miles           18    101667.
##  4 Europe        2-5 Miles           40     39750 
##  5 Europe        5-10 Miles          16    103125 
##  6 North America 0-1 Miles          126     68016.
##  7 North America 1-2 Miles          108     61111.
##  8 North America 10+ Miles           62     59839.
##  9 North America 2-5 Miles          103     65473.
## 10 North America 5-10 Miles         109     57156.
## 11 Pacific       0-1 Miles           52     64302.
## 12 Pacific       1-2 Miles           23     52609.
## 13 Pacific       10+ Miles           31     89355.
## 14 Pacific       2-5 Miles           19     75789.
## 15 Pacific       5-10 Miles          67     51398.
przekroj_region_purchased_income <- sklep_rowerowy %>%
  group_by(Region,`Purchased.Bike`) %>%
  summarise(Count = n(), Avg_Income = mean(Income, na.rm = TRUE))
## `summarise()` has grouped output by 'Region'. You can override using the
## `.groups` argument.
przekroj_region_purchased_income
## # A tibble: 6 × 4
## # Groups:   Region [3]
##   Region        Purchased.Bike Count Avg_Income
##   <fct>         <fct>          <int>      <dbl>
## 1 Europe        No               152     39474.
## 2 Europe        Yes              148     41831.
## 3 North America No               288     60903.
## 4 North America Yes              220     65062.
## 5 Pacific       No                79     62532.
## 6 Pacific       Yes              113     64313.

Wnioskowanie statystyczne

Model regresji logistycznej

  1. Czynniki istotnie wpływające na decyzję o zakupie roweru Stan cywilny (Marital.StatusSingle, p = 0.00904) – osoby samotne wykazują wyższe prawdopodobieństwo zakupu roweru niż osoby w związku małżeńskim (współczynnik = 0.4755, istotność na poziomie 0.01). Może to wynikać z większej mobilności oraz mniejszej liczby zobowiązań rodzinnych. Liczba dzieci (Children, p = 0.03568) – każda dodatkowa osoba na utrzymaniu zmniejsza szanse zakupu roweru (współczynnik = -0.1342, istotność na poziomie 0.05). Rodziny z dziećmi mogą częściej korzystać z samochodów lub innych środków transportu, co wpływa na ich decyzję.

    Poziom wykształcenia (EducationPartial College, p = 0.02652) – osoby z częściowym wykształceniem wyższym rzadziej kupują rowery (współczynnik = -0.5856). Może to wynikać z różnych nawyków transportowych tej grupy lub specyfiki ich sytuacji zawodowej.

    Posiadanie nieruchomości (Home.OwnerYes, p = 0.01264) – osoby posiadające dom rzadziej decydują się na zakup roweru (współczynnik = 0.5083, istotność na poziomie 0.05), co może sugerować, że stabilna sytuacja mieszkaniowa wiąże się z innymi środkami transportu, takimi jak samochód.

    Liczba samochodów (Cars, p = 0.00555) – każdy dodatkowy samochód zmniejsza prawdopodobieństwo zakupu roweru (współczynnik = -0.3000, istotność na poziomie 0.01). Oznacza to, że osoby posiadające wiele pojazdów nie widzą potrzeby zakupu roweru jako środka transportu.

    Odległość do pracy (Commute.Distance10+ Miles, p = 0.01997) – osoby dojeżdżające na duże odległości rzadziej kupują rower (współczynnik = -1.091, istotność na poziomie 0.01), co sugeruje, że rower jest mniej praktyczny dla długodystansowych dojazdów. Region zamieszkania

    (RegionPacific, p = 0.00999) – mieszkańcy regionu Pacyfiku częściej kupują rowery (współczynnik = 0.7637). Może to wynikać z większej dostępności infrastruktury rowerowej, klimatu sprzyjającego jeździe na rowerze lub polityki proekologicznej regionu.

  2. Zmienne o nieistotnym wpływie na decyzję o zakupie roweru Kilka zmiennych nie wykazało istotnego wpływu na decyzję zakupową:

    Płeć (GenderMale, p = 0.86498) – brak istotnego wpływu płci na zakup roweru sugeruje, że preferencje transportowe są podobne wśród mężczyzn i kobiet.

    Dochód (Income, p = 0.07602) – wartość znajduje się na granicy istotności, co sugeruje pewien wpływ dochodów na decyzję zakupową, choć nie jest on jednoznacznie potwierdzony.

    Poziom wykształcenia (EducationGraduate Degree, EducationHigh School) – brak znaczącego wpływu sugeruje, że posiadanie wykształcenia wyższego lub średniego nie różnicuje wyraźnie skłonności do zakupu roweru.

    Rodzaj zatrudnienia (Occupation) – analiza nie wykazała istotnych różnic w skłonności do zakupu roweru w zależności od wykonywanego zawodu.

    Odległość do pracy dla krótszych dystansów (Commute.Distance1-2 Miles, 2-5 Miles, 5-10 Miles) – różnice w krótszych odległościach nie były istotne statystycznie, co może oznaczać, że w tych przypadkach wybór roweru jest determinowany innymi czynnikami niż sama odległość.

  3. Wnioski i interpretacja wyników Wyniki modelu regresji logistycznej pozwalają na sformułowanie kilku kluczowych wniosków:

    Najważniejsze determinanty zakupu roweru to stan cywilny, liczba dzieci, liczba samochodów, odległość do pracy oraz region zamieszkania.

    Osoby samotne, mieszkańcy regionu Pacyfiku oraz osoby dojeżdżające krótsze dystanse są bardziej skłonne do zakupu roweru, co sugeruje, że może on pełnić funkcję zarówno rekreacyjną, jak i użytkową.

    Posiadanie dzieci,własnego domu oraz większej liczby samochodów zmniejsza prawdopodobieństwo zakupu roweru, co sugeruje, że osoby w ustabilizowanej sytuacji rodzinnej i mające inne środki transportu rzadziej decydują się na rower. Płeć oraz poziom wykształcenia nie mają istotnego wpływu na decyzję o zakupie roweru, co oznacza, że preferencje zakupowe w tym zakresie są niezależne od tych cech demograficznych.

model <- glm(`Purchased.Bike` ~ ., data = train_data, family = binomial)
summary(model)
## 
## Call:
## glm(formula = Purchased.Bike ~ ., family = binomial, data = train_data)
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)   
## (Intercept)                  -6.204e-01  6.641e-01  -0.934  0.35027   
## ID                            2.363e-05  1.591e-05   1.485  0.13762   
## Marital.StatusSingle          4.755e-01  1.821e-01   2.611  0.00904 **
## GenderMale                    2.830e-02  1.664e-01   0.170  0.86498   
## Income                        8.436e-06  4.755e-06   1.774  0.07602 . 
## Children                     -1.342e-01  6.389e-02  -2.101  0.03568 * 
## EducationGraduate Degree     -1.660e-01  2.640e-01  -0.629  0.52959   
## EducationHigh School         -1.040e-01  2.955e-01  -0.352  0.72491   
## EducationPartial College     -5.856e-01  2.640e-01  -2.218  0.02652 * 
## EducationPartial High School -7.672e-01  4.323e-01  -1.775  0.07595 . 
## OccupationManagement         -4.654e-01  4.978e-01  -0.935  0.34990   
## OccupationManual              5.997e-02  3.296e-01   0.182  0.85562   
## OccupationProfessional        6.364e-01  4.083e-01   1.558  0.11913   
## OccupationSkilled Manual     -2.123e-01  3.230e-01  -0.657  0.51091   
## Home.OwnerYes                 5.083e-01  2.039e-01   2.494  0.01264 * 
## Cars                         -3.000e-01  1.082e-01  -2.773  0.00555 **
## Commute.Distance1-2 Miles    -2.296e-02  2.528e-01  -0.091  0.92762   
## Commute.Distance10+ Miles    -1.091e+00  3.527e-01  -3.095  0.00197 **
## Commute.Distance2-5 Miles     5.077e-02  2.610e-01   0.195  0.84578   
## Commute.Distance5-10 Miles   -5.338e-01  2.981e-01  -1.790  0.07338 . 
## RegionNorth America          -1.130e-01  2.589e-01  -0.437  0.66236   
## RegionPacific                 7.637e-01  2.964e-01   2.576  0.00999 **
## Age                           5.746e-04  9.367e-03   0.061  0.95109   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 968.75  on 699  degrees of freedom
## Residual deviance: 867.93  on 677  degrees of freedom
## AIC: 913.93
## 
## Number of Fisher Scoring iterations: 4

Test Shapiro-Wilka dla dochodu a zakupu roweru

Pomaga określić, czy stosować testy parametryczne czy nieparametryczne. Hipotezy testowe: H₀ (hipoteza zerowa): Dane mają rozkład normalny. H₁ (hipoteza alternatywna): Dane nie mają rozkładu normalnego.

by(sklep_rowerowy$Income, sklep_rowerowy$`Purchased.Bike`, shapiro.test)
## sklep_rowerowy$Purchased.Bike: No
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.94371, p-value = 3.956e-13
## 
## ------------------------------------------------------------ 
## sklep_rowerowy$Purchased.Bike: Yes
## 
##  Shapiro-Wilk normality test
## 
## data:  dd[x, ]
## W = 0.94003, p-value = 5.172e-13

Przy poziomie istotności 95% bardzo niskie wartości p-value (< 0.05) oznaczają, że istnieją statystyczne przesłanki do odrzucenia hipotezy zerowej na rzecz hipotezy alternatywnej, co wskazuje, że dane nie mają rozkładu normalnego.Należy zastosować testy nieprarametryczne.

Chi2 dla region a zakup roweru

Test chi-kwadrat dla zakupu roweru i regionu (p = 0.001032) wykazał istotną zależność, co oznacza, że miejsce zamieszkania wpływa na decyzję o zakupie. Niektóre regiony wykazują większą skłonność do kupowania rowerów niż inne

chi_Region <- chisq.test(table(sklep_rowerowy$`Purchased.Bike`, sklep_rowerowy$Region))
print(chi_Region)
## 
##  Pearson's Chi-squared test
## 
## data:  table(sklep_rowerowy$Purchased.Bike, sklep_rowerowy$Region)
## X-squared = 13.752, df = 2, p-value = 0.001032

Chi2 dla dystans do pracy a zakup roweru

Testy chi-kwadrat wykazały istotne zależności między zakupem roweru a regionem (p = 0.001032) oraz dystansem dojazdu (p = 5.852e-07). Oznacza to, że miejsce zamieszkania i odległość do pracy wpływają na decyzję o zakupie roweru – osoby mieszkające bliżej pracy częściej go wybierają.

chi_Distance <- chisq.test(table(sklep_rowerowy$`Purchased.Bike`, sklep_rowerowy$Commute.Distance))
print(chi_Distance)
## 
##  Pearson's Chi-squared test
## 
## data:  table(sklep_rowerowy$Purchased.Bike, sklep_rowerowy$Commute.Distance)
## X-squared = 34.512, df = 4, p-value = 5.852e-07

Test Kruskala-Wallisa dla zakupu roweru a dochodu

kruskal_test_income_purchasedbike <- kruskal.test(Income ~ `Purchased.Bike`, data = sklep_rowerowy)
kruskal_test_income_purchasedbike
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Income by Purchased.Bike
## Kruskal-Wallis chi-squared = 2.2551, df = 1, p-value = 0.1332

Powiązanie testów z analizą klientów

Test Shapiro-Wilka: Wyniki testu wykazały, że dochód nie ma rozkładu normalnego zarówno w grupie kupujących, jak i niekupujących roweru (p < 0,05). Wskazuje to, że w dalszej analizie należy stosować testy nieparametryczne (np. Kruskala-Wallisa) zamiast testów parametrycznych (np. ANOVA).

Test Kruskala-Wallisa: Wynik testu (p = 0.1274) wskazuje, że dochód nie różni się istotnie między osobami, które kupiły rower, a tymi, które go nie kupiły. Oznacza to, że dochód nie jest kluczowym czynnikiem decyzyjnym przy zakupie roweru – inne aspekty, takie jak region zamieszkania, dystans do pracy czy styl życia, mogą mieć większe znaczenie.

Test Kruskala- Wallisa dla zakupu roweru a regionu

kruskal_test_Region_purchasedbike <- kruskal.test(Region ~ `Purchased.Bike`, data = sklep_rowerowy)
kruskal_test_Region_purchasedbike
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Region by Purchased.Bike
## Kruskal-Wallis chi-squared = 1.89, df = 1, p-value = 0.1692

Test Kruskala - Wallisa dla zakupu roweru a dystans do pracy

kruskal_test_Commute_Distance_purchasedbike <- kruskal.test(`Commute.Distance` ~ `Purchased.Bike`, data = sklep_rowerowy)
print(kruskal_test_Commute_Distance_purchasedbike)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Commute.Distance by Purchased.Bike
## Kruskal-Wallis chi-squared = 7.3539, df = 1, p-value = 0.006692

Analiza wyniku testu Kruskala-Wallisa dla dystansu do pracy a zakupu roweru

Przeprowadzony test Kruskala-Wallisa wykazał istotne statystycznie różnice w dystansie do pracy między osobami, które kupiły rower, a tymi, które go nie kupiły (p = 0.0067). Oznacza to, że dystans do pracy jest kluczowym czynnikiem wpływającym na decyzję zakupową, co potwierdzają wcześniejsze wizualizacje. Wynik sugeruje, że osoby pokonujące określone odległości częściej decydują się na zakup roweru, dlatego warto skupić się na segmentacji klientów według dystansu i dostosowaniu strategii marketingowych do tej grupy.

Wizualizacja testów

  1. Wpływ wieku na zakup roweru Model regresji oraz test Manna-Whitneya (p = 0.00375) wskazują, że wiek ma istotny wpływ na decyzję zakupową. Mediana wieku osób kupujących rower wynosi 41 lat, natomiast dla osób, które nie dokonały zakupu, wynosi 44 lata. Analiza wykazała, że młodsze osoby częściej decydują się na zakup roweru, co może wynikać z ich większej aktywności fizycznej oraz większej elastyczności w zakresie wyboru środków transportu. Wartość współczynnika r_s (0.11) sugeruje, że korelacja jest niewielka, ale istotna statystycznie. Wyniki regresji logistycznej potwierdzają brak istotnego wpływu wieku na decyzję zakupową (p = 0.95109), co oznacza, że mimo widocznej różnicy w medianie, nie jest to dominujący czynnik wpływający na zakup.

  2. Dochód a decyzja o zakupie roweru Zarówno regresja logistyczna (p = 0.07602), jak i test Manna-Whitneya (p = 0.13) wskazują, że dochód nie jest istotnym czynnikiem decydującym o zakupie roweru.Wykresy pokazują, że mediana dochodu w obu grupach wynosi 60 000, co oznacza, że osoby o różnych poziomach zarobków podejmują decyzję o zakupie roweru w podobny sposób. Wartość r_s (-0.05) potwierdza brak istotnej korelacji. Wyniki te sugerują, że decyzja o zakupie roweru jest niezależna od poziomu dochodów i może być bardziej związana z czynnikami stylu życia, dostępnością infrastruktury rowerowej lub preferencjami transportowymi.

  3. Dystans do pracy jako kluczowy czynnik zakupu roweru Zarówno wyniki regresji, jak i analiza graficzna wskazują, że dystans do pracy jest jednym z najważniejszych czynników wpływających na zakup roweru. Test Manna-Whitneya (p = 1.26e-05) oraz regresja logistyczna (p = 0.01997 dla dystansu powyżej 10 mil) potwierdzają, że osoby mieszkające bliżej miejsca pracy częściej wybierają rower jako środek transportu. Mediana dystansu do pracy w grupie kupujących wynosi 1.5 mili, podczas gdy dla osób, które nie kupiły roweru, wynosi 3.5 mili. Wartość r_s (0.15) sugeruje umiarkowaną, ale istotną korelację. Wyniki regresji wskazują również, że osoby dojeżdżające ponad 10 mil do pracy są znacznie mniej skłonne do zakupu roweru (współczynnik = -1.091). Rower jako środek transportu staje się więc mniej praktyczny na dłuższych dystansach, co ogranicza jego popularność wśród osób o długich codziennych dojazdach.

ggbetweenstats( data = sklep_rowerowy, x = Purchased.Bike,
y = Age,
type = "nonparametric",
title = "Wiek a decyzja o zakupie roweru", xlab = "Zakup roweru", ylab = "Wiek", )

ggbetweenstats( data = sklep_rowerowy, x = Purchased.Bike,
y = Income,
type = "nonparametric",
title = "Dochód a decyzja o zakupie roweru", xlab = "Zakup roweru", ylab = "Dochód", )

sklep_rowerowy <- sklep_rowerowy %>%
  mutate(Commute.Distance = case_when(
    Commute.Distance == "0-1 Miles" ~ 0.5,
    Commute.Distance == "1-2 Miles" ~ 1.5,
    Commute.Distance == "2-5 Miles" ~ 3.5,
    Commute.Distance == "5-10 Miles" ~ 7.5,
    Commute.Distance == "10+ Miles" ~ 12.5,
    TRUE ~ NA_real_
  ))

ggbetweenstats( data = sklep_rowerowy, x = Purchased.Bike,
y = Commute.Distance,
type = "nonparametric",
title = "Dystans do pracy a decyzja o zakupie roweru", xlab = "Zakup roweru", ylab = "Dystans do pracy", )

Podsumowanie

Przeprowadzona analiza pozwoliła na szczegółowe zbadanie czynników wpływających na decyzję klientów o zakupie roweru, uwzględniając zarówno cechy demograficzne, ekonomiczne, jak i behawioralne. Dzięki kompleksowej obróbce danych, ich wizualizacji, analizie opisowej oraz modelowaniu statystycznemu możliwe było określenie, które zmienne odgrywają kluczową rolę w podejmowaniu decyzji zakupowych oraz jakie relacje występują między nimi.

Jednym z najważniejszych ustaleń było to, że dystans do pracy ma decydujący wpływ na zakup roweru – osoby mieszkające bliżej miejsca zatrudnienia częściej decydują się na jego zakup. Wynika to z faktu, że krótsze dystanse sprzyjają wykorzystywaniu roweru jako codziennego środka transportu, natomiast osoby dojeżdżające na większe odległości częściej korzystają z samochodów lub transportu publicznego. Analiza regresji logistycznej oraz test Kruskala-Wallisa jednoznacznie potwierdziły, że osoby dojeżdżające ponad 10 mil do pracy rzadziej kupują rower, co wynika z jego ograniczonej praktyczności na długich dystansach.

Istotną zależność zaobserwowano również w odniesieniu do wieku – osoby młodsze częściej decydują się na zakup roweru niż osoby starsze. Może to wynikać z większej aktywności fizycznej oraz elastyczności młodszych klientów w wyborze środków transportu. Jednak, mimo istotnej różnicy w medianie wieku kupujących i niekupujących, wyniki regresji wskazują, że wiek sam w sobie nie jest kluczowym czynnikiem determinującym decyzję o zakupie, lecz jest skorelowany z innymi czynnikami, takimi jak styl życia i potrzeby transportowe.

Dochód, który początkowo mógł wydawać się istotnym czynnikiem determinującym zakup roweru, ostatecznie nie wykazał silnego wpływu na decyzję zakupową. Test Manna-Whitneya wykazał brak istotnych różnic w medianach dochodu między kupującymi i niekupującymi rower, co sugeruje, że rower nie jest produktem ekskluzywnym ani ograniczonym do osób o określonym statusie finansowym. Niemniej jednak, dochód może pośrednio wpływać na decyzję zakupową poprzez inne czynniki, takie jak liczba posiadanych samochodów – osoby z wyższymi dochodami częściej posiadają więcej pojazdów, co zmniejsza ich skłonność do wyboru roweru jako głównego środka transportu.

Liczba posiadanych samochodów oraz liczba dzieci również okazały się istotnymi czynnikami wpływającymi na decyzję zakupową. Każdy dodatkowy samochód w gospodarstwie domowym zmniejszał prawdopodobieństwo zakupu roweru, co wynika z faktu, że osoby posiadające więcej pojazdów są mniej zależne od alternatywnych środków transportu. Podobnie, każda dodatkowa osoba na utrzymaniu obniżała szansę na zakup roweru, co może być związane z koniecznością wyboru bardziej praktycznych środków transportu dla rodziny.

Analiza wykazała również znaczącą zależność między miejscem zamieszkania a skłonnością do zakupu roweru. Mieszkańcy regionu Pacyfiku częściej kupowali rowery w porównaniu do klientów z Europy czy Ameryki Północnej, co może wynikać z lepszej infrastruktury rowerowej, polityki ekologicznej lub preferencji kulturowych związanych z aktywnym stylem życia. Testy chi-kwadrat potwierdziły istotność tej zależności, co sugeruje, że region zamieszkania powinien być brany pod uwagę w strategii marketingowej sklepu rowerowego.

Podsumowując, analiza wykazała, że decyzja o zakupie roweru jest wynikiem wzajemnych relacji między wieloma czynnikami. Dystans do pracy bezpośrednio wpływa na wybór roweru jako środka transportu, podczas gdy dochód, choć nie jest czynnikiem kluczowym, może pośrednio oddziaływać na decyzję poprzez liczbę posiadanych samochodów. Wiek klientów koreluje z ich preferencjami transportowymi, ale nie jest samodzielnym czynnikiem determinującym zakup. Natomiast region zamieszkania odgrywa znaczącą rolę w decyzjach zakupowych, co sugeruje konieczność dostosowania działań marketingowych do specyfiki poszczególnych rynków. Wnioski te mogą być wykorzystane do optymalizacji strategii sprzedażowej sklepu rowerowego poprzez precyzyjne targetowanie klientów, uwzględniające ich miejsce zamieszkania, odległość do pracy oraz sytuację ekonomiczną.

Przeprowadzona analiza pozwoliła na dogłębną ocenę czynników wpływających na decyzję o zakupie roweru, obejmując aspekty demograficzne, ekonomiczne i behawioralne klientów sklepu rowerowego. W ramach badania przeprowadzono kompleksowe przygotowanie danych, wizualizację, analizę opisową oraz wnioskowanie statystyczne, co umożliwiło określenie kluczowych zależności i zależności przyczynowo-skutkowych między zmiennymi.

Na etapie przygotowania danych dokonano ich czyszczenia, imputacji brakujących wartości oraz konwersji zmiennych na odpowiednie formaty. Dzięki temu możliwe było rzetelne przeprowadzenie dalszych analiz bez wpływu brakujących danych na uzyskane wyniki. Standaryzacja zmiennych liczbowych oraz przypisanie wartości kategorycznych do odpowiednich grup pozwoliły na dokładniejsze analizy statystyczne i modelowanie predykcyjne. Wizualizacja danych umożliwiła ocenę rozkładu zmiennych oraz wykrycie potencjalnych zależności, które mogły mieć wpływ na decyzję klientów dotyczącą zakupu roweru.

Analiza opisowa wykazała, że dochód klientów jest silnie zróżnicowany, jednak nie przekłada się wprost na decyzję o zakupie roweru. Średni dochód wynosi 56 252,1, lecz duża zmienność wartości wskazuje na występowanie różnych grup dochodowych wśród klientów. Jednocześnie wyniki testów statystycznych pokazały, że nie istnieje istotna różnica w dochodach między osobami, które kupiły rower, a tymi, które go nie kupiły, co sugeruje, że decyzja zakupowa nie jest determinowana poziomem zarobków, lecz innymi czynnikami.

Najważniejszym czynnikiem wpływającym na zakup roweru okazał się dystans do pracy – testy statystyczne wykazały istotne różnice w jego wartości między osobami, które kupiły rower, a tymi, które go nie kupiły. Wynika z tego, że osoby mieszkające bliżej miejsca pracy częściej decydują się na zakup roweru, ponieważ krótszy dystans sprzyja jego wykorzystaniu jako środka transportu. Potwierdza to również regresja logistyczna, według której osoby dojeżdżające powyżej 10 mil mają znacznie mniejsze prawdopodobieństwo zakupu roweru.

Wiek również wykazał umiarkowany wpływ na decyzję zakupową. Testy statystyczne wykazały, że młodsze osoby częściej decydują się na zakup roweru, jednak model regresji logistycznej nie potwierdził jednoznacznej istotności tego czynnika. Może to oznaczać, że decyzja zakupowa wynika nie tyle z wieku, co z innych czynników związanych ze stylem życia i aktywnością fizyczną, które często współwystępują z młodszym wiekiem.

Z kolei liczba posiadanych samochodów oraz liczba dzieci wykazały istotny negatywny wpływ na zakup roweru. Wynika to prawdopodobnie z faktu, że osoby posiadające więcej samochodów częściej korzystają z nich jako podstawowego środka transportu, co zmniejsza potrzebę posiadania roweru. Podobna zależność dotyczy liczby dzieci – osoby z większą liczbą dzieci mogą preferować inne środki transportu, bardziej dostosowane do przewożenia rodziny.

Istotnym czynnikiem okazał się również region zamieszkania. Wyniki regresji logistycznej wykazały, że osoby mieszkające w regionie Pacyfiku częściej kupują rowery niż osoby z innych regionów. Może to wynikać z różnic w infrastrukturze rowerowej, klimacie sprzyjającym jeździe na rowerze lub preferencjach ekologicznych dominujących w tym regionie. Jednocześnie testy chi-kwadrat potwierdziły, że region zamieszkania jest istotnie powiązany z decyzją o zakupie roweru, co sugeruje, że nawyki transportowe klientów mogą być uwarunkowane lokalnymi czynnikami środowiskowymi.

Podsumowując, kluczowe wnioski płynące z analizy wskazują, że decyzja o zakupie roweru wynika głównie z dystansu do pracy, który w największym stopniu wpływa na prawdopodobieństwo jego zakupu – im krótsza odległość, tym większa skłonność do zakupu. Dochód, choć początkowo wydawał się istotnym czynnikiem, nie wykazał znaczącego wpływu, co sugeruje, że decyzja zakupowa jest bardziej związana z indywidualnym stylem życia niż ze statusiem ekonomicznym. Posiadanie dzieci oraz większej liczby samochodów znacząco obniża skłonność do zakupu roweru, co może wynikać z konieczności korzystania z bardziej praktycznych środków transportu. Region zamieszkania również ma wpływ na zakup roweru, co może być związane z dostępnością infrastruktury rowerowej i lokalnymi preferencjami transportowymi.

Wyniki analizy dostarczają cennych informacji, które mogą być wykorzystane w strategii marketingowej sklepu rowerowego. Ze względu na to, że decyzja zakupowa jest w dużej mierze determinowana przez dystans do pracy, warto skupić działania promocyjne na osobach mieszkających w pobliżu swoich miejsc zatrudnienia. Ponadto, osoby mieszkające w regionach o większej popularności rowerów mogą stanowić grupę docelową, do której warto skierować dedykowane kampanie marketingowe. Jednocześnie, wyniki analizy sugerują, że posiadanie dzieci oraz samochodów zmniejsza skłonność do zakupu roweru, dlatego potencjalnym rozwiązaniem mogłoby być promowanie rowerów elektrycznych lub rowerów rodzinnych jako alternatywnego środka transportu.

Podsumowując, analiza pozwoliła na identyfikację kluczowych zależności i określenie głównych czynników determinujących zakup roweru. Wynika z niej, że na decyzję klientów wpływają zarówno czynniki osobiste, takie jak liczba samochodów i dzieci, jak i kontekstowe, takie jak dystans do pracy oraz region zamieszkania.