Dynamicznie rozwijający się świat handlu sprawia, że co raz ciężej dotrzymać kroku zmieniającym się trendom. Mając to na uwadze należy je, w sposób ciągły, je monitorować i analizować.
Cel badania polega na zrozumieniu i analizie trendów zakupowych klientów na podstawie dostępnych danych transakcyjnych zawierających cechy demograficzne, produkty, ich ceny, sezonowość oraz zachowania zakupowe. Badanie ma na celu identyfikację kluczowych czynników wpływających na wartość zakupów, wykrycie sezonowych wzorców, zrozumienie profilów klientów (np. według płci, wieku, subskrypcji) oraz analizę preferowanych metod płatności i częstotliwości zakupów. Dzięki temu możliwa jest predykcja zachowań konsumenckich, lepsze dostosowanie strategii marketingowej i oferty produktowej, a także rekomendacje dotyczące segmentacji klientów i kanałów sprzedaży, co przekłada się na bardziej efektywne działania biznesowe i zwiększenie zyskowności.
W celu sprawnej i efektywnej analizy danych, należy rozpocząć od zainstalowania wymaganych bibliotek, tak aby dalsza część raportu mogła być przejrzysta, bez konieczności dodawania dodatkowych pakietów i bibliotek (mogłoby to zaburzyć strukturę raportu).
Pierwszym etapem, pozwalającym analizę wyżej wymienionych czynników jest tak zwany Data Cleansing. Rozpoczynając od podejrzenia danych, sprawdzenia ilości danych brakujących, jaki jest ich udział procentowy oraz czy braki są ze sobą skorelowane.
| ID | Age | Gender | Item | Category | Amount_USD | Location | Size | Color | Season | Rating | Subscription | Shipping | Discount | Promo | Previous | Payment | Frequency |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 55 | Male | Blouse | Clothing | 53 | Kentucky | L | Gray | Winter | 3.1 | Yes | Express | Yes | Yes | 14 | Venmo | Fortnightly |
| 2 | 19 | Male | Sweater | Clothing | 64 | Maine | L | Maroon | NA | 3.1 | Yes | Express | Yes | Yes | 2 | Cash | Fortnightly |
| 3 | NA | Male | Jeans | Clothing | 73 | Massachusetts | S | Maroon | Spring | 3.1 | Yes | Free Shipping | Yes | Yes | 23 | Credit Card | Weekly |
| 4 | 21 | Male | Sandals | Footwear | NA | Rhode Island | M | Maroon | Spring | 3.5 | Yes | Next Day Air | Yes | Yes | 49 | PayPal | Weekly |
| 5 | 45 | Male | Blouse | Clothing | 49 | Oregon | M | Turquoise | Spring | 2.7 | Yes | Free Shipping | Yes | Yes | 31 | PayPal | Annually |
| 6 | 46 | Male | Sneakers | Footwear | 20 | Wyoming | M | White | NA | 2.9 | Yes | Standard | Yes | Yes | 14 | Venmo | Weekly |
| Opis statystyki | Wartość |
|---|---|
| Liczba kompletnych danych | 69100 |
| Liczba braków | 1100 |
| Proporcja | 0.0157 |
| Procent | 1.57% |
Widzimy, że przed uzupełnieniem brakuje aż 1100 danych. Oprócz brakujących danych widzimy, że mamy 69100 danych w komplecie. Obliczmy jaka jest proporcja oraz procent brakujących danych. Zaledwie 1,5% całości danych to dane brakujące. Sprawdźmy więc gdzie najbardziej ich brakuje.
| variable | n_miss | pct_miss |
|---|---|---|
| Season | 550 | 14.1 |
| Purchase.Amount..USD. | 450 | 11.5 |
| Age | 100 | 2.56 |
| Customer.ID | 0 | 0 |
| Gender | 0 | 0 |
| Item.Purchased | 0 | 0 |
| Category | 0 | 0 |
| Location | 0 | 0 |
| Size | 0 | 0 |
| Color | 0 | 0 |
| Review.Rating | 0 | 0 |
| Subscription.Status | 0 | 0 |
| Shipping.Type | 0 | 0 |
| Discount.Applied | 0 | 0 |
| Promo.Code.Used | 0 | 0 |
| Previous.Purchases | 0 | 0 |
| Payment.Method | 0 | 0 |
| Frequency.of.Purchases | 0 | 0 |
Dzięki powyższej tabeli wiemy, że kolumny Season, Purchase Amount oraz Age zawierają puste miejsca.
| n_miss_in_case | n_cases | pct_cases |
|---|---|---|
| 0 | 2888 | 74.05128 |
| 1 | 924 | 23.69231 |
| 2 | 88 | 2.25641 |
Widzimy już w jakich wierszach i kolumnach brakuje nam danych, zobrazujmy to na wykresach.
Poniżej sprawdzimy związek między brakiem danych a chociażby metodą płatności czy kategorią. Pozwoli nam to sprawdzić czy braki są losowe czy zależą od konkretnej cechy.
Powyżej zobrazowane zostały Zauważamy, że najwięcej braków występuje w kolumnie Season, szczególnie przy płatności PayPal. Purchase Amount też wykazuje braki w niektórych metodach. Najmniej natomiast w kolumnie Age. Porównajmy to z heatmapa według kategorii odzieży
Możemy zauważyć, że podobnie jak poprzednio najwięcej danych brakuje przy zmiennej Season, szczególnie w kategorii Footwear.
Sprawdźmy zatem czy braki są ze sobą skorelowane.
Brakujące dane nie są ze sobą skorelowane dla trzech kategorii. Korelacja występuje między dwoma z trzech kategorii. W 61 przypadków brakuje danych w kolumnie zarówno Purchase Amount jak i Season, 19 razy brakuje danych dla Age oraz Season, 8 razy dla Age i Purchase Amount.
Sprawdźmy braki zmiennej Age względem Purchase Amount aby wykryć losowośc braków.
Widzimy, że braki skupione są przy niższych kwotach zakupu, natomiast nie ma jednoznacznego wzorca w przypadku wieku.
Dzięki pikselowej mapie braków jesteśmy w stanie zobrazować rozkład i różnorodnoścdanych. Zauważamy, że zmienne kategoryczne mają różne liczby, zmienne liczbowe mają płynny gradient np. Age, występują bloki braków danych.
Przeprowadźmy zatem test Little’a aby ostatecznie potwierdzić, czy braki są losowe.
| statistic | df | p.value | missing.patterns |
|---|---|---|---|
| 9.068443 | 9 | 0.4309804 | 7 |
Wynika z niego iż p value jest większe od poziomu istotności (0.43>0.05). Zatem nie ma podstaw do odrzucenia H0: braki są kompletnie losowe.
Dzięki temu oraz dzięki testowi Little’a (MCAR test) wiemy iż dane są całkowicie losowe (missing completly at random). Oznacza to, że dopuszczalne są metody prostej imputacji (średnią/medianą) czym zajmiemy się w dalszej części. Przedtem jednak, warto sprawdzić spójność danych.
Wiemy już, że braki są losowe. Zajmiemy się teraz imputacją danych. Po uprzednim utworzeniu backupu kolumn zdecydowaliśmy się uzupełnić kolumny Age, Purchase.Amount..USD i Season. Pierwszą z nich uzupełniliśmy wykorzystując medianę, drugą uzupełniliśmy medianą według kategorii Season. Trzecią zaś uzupełniliśmy za pomoca funkcji hotdeck.
Po sprawdzeniu widzimy, że liczba braków wynosi obecnie 0. Możemy więc zająć się dalszymi krokami.
Po ukończeniu kroku numer 3, zajmijmy się przedstawieniem wizualnym uzupełnionych danych. Wizualizacja obejmuje przedstawienie wykresów i zobrazowanie jak te dane przedstawiają się chociażby według poszczególnych kategorii. Pierwszym z nich jest zobrazowanie liczby zakupów w każdej kategorii.
Jak widać na wykresie, najwięcej zakupów wiąże się z kategoriami “Clothing” oraz “Accessories”, najmniej “Footwear” oraz “Outerwear”.
Kolejno widzimy boxplot obrazujący rozkład kwot zakupu w poszczególnych kategoriach.
Jak widać rozkład jest podobny w każdej z kategorii, nie widać szczególnych różnic w zakresach wartości. Sugeruje to, że klienci wydają podobną kwotę niezależnie od kategorii.
Sprawdźmy więc teraz czy poszczególne sezony wpływają na kwoty zakupu. Posłużymy się do tego wykresem słupkowym.
Na wykresie można zauważyć, iż kwoty zakupu nieznacznie się różnią w zależności od pory roku.
Jako że, za zakupy należy płacić, warto sprawdzić jakimi metodami płatności posługują się klienci.
Najwięcej transakcji zostało dokonanych przy użyciu PayPal, najmniej natomiast klienci korzystają z przelewu bankowego. Świadczy to o wygodzie wykorzystywania platformy płatniczej PayPal w porównaniu chociażby do przelewów, które zazwyczaj zajmują dłużej.
Wcześniej sprawdziliśmy już czy sezonowość wpływa na kwotę zakupu, sprawdźmy też czy kwoty zachowują się inaczej, kiedy dodamy do tego podział na płeć. Pozwoli nam to sprawdzić, kto wydaje więcej w danym okresie, kobiety czy mężczyźni.
Boxplot obrazuje nam istotność sezonowości w wydanych kwotach w przypadku kobiet. Możemy zauważyć, że jesienią i zimą kobiety wydają więcej niż w cieplejszych okresach roku. W przypadku mężczyzn sezonowość ta nie występuje. Możemy zatem przyjąć, że jesień i zima to kluczowe okresy sprzedażowe dla segmentu kobiecego.
Kolejno analizujemy hipotezę o lojalności klientów, sprawdzamy czy poprzednie transakcje mają wpływ na kwotę zakupów.
Zauważalna jest lekka zależność rosnącą, im więcej poprzednich zakupów, tym wyższa może być wartość kolejnego. Klienci ze statusem subskrypcji skupieni są bardziej wokół wyższych kwot, natomiast u nie subskrybentów zauważalny jest większy rozrzut. Możemy zatem przyjąć, że subskrypcja jest czynnikiem stabilizującym oraz zwiększającym kwotę zakupów.
Istotnym czynnikiem jest zbadanie współliniowości między kategoriami. Do identyfikacji tej tezy użyjemy macierzy korelacji liczbowych.
Zauważamy, że większość korelacji między zmiennymi jest bardzo słaba (bliska zeru). Niektóre zależności są statystycznie istotne, ale praktycznie marginalne — np. korelacja 0.045** pomiędzy zmiennymi Age i PurchaseAmount. Świadczy to o większej liczbie zakupów wraz ze wzrostem wieku. Może być to dla nas sygnał, któremu warto się przyjrzeć, ale nie fundament strategii. Brak silnych zależności jak chociażby między zmiennymi chase.Amount i Previous.Purchase oznacza, że wartość zakupu jest niezależna od liczby wcześniejszych transakcji. Segmentacja klientów wg wieku i historii zakupów może mieć sens, ale wymaga dalszych analiz — obecne korelacje są zbyt słabe, by podejmować decyzje strategiczne. Oceny produktów nie są silnie związane z żadną zmienną — warto skupić się na jakości i doświadczeniu klienta niezależnie od jego profilu.
Jako że macierz korelacji nie wskazała nam jednoznacznie kierunku strategii sprzedażowych, sprawdzamy czy kierunek ten nada nam wykres pt. “udział rabatów w wydanej kwocie”.
Przy niższych kwotach (20–40 USD) rabaty są stosowane częściej — turkusowa część słupków jest większa. Wraz ze wzrostem wydatków, udział transakcji bez rabatu rośnie — klienci wydający więcej rzadziej korzystają z rabatów. Przy najwyższych kwotach (80–100 USD) rabaty są stosunkowo rzadkie — dominują pełne ceny. Dzięki temu możemy stwierdzić, że rabatowanie działa najlepiej przy niższych kwotach, daje nam to możliwość zachęcenia klientów do szybkich i impulsywnych zakupów. Klienci wydający więcej najczęściej nie korzystają z rabatów, co może świadzyć o ich mniejszej podatności na promocje. W tej sytuacji warto rozważyć segmentację rabatową konsumentów lub testowanie rabatów progowych np. “rabat -20% przy zakupach za wyższą kwotę”.
Po sprawdzeniu, uzupełnieniu i wizualizacji danych nastała pora na zadanie pytań badawczych, czyli podstawy do kolejnych kroków jak analiza opisowa oraz wnioskowanie statystyczne. W trakcie tego ostatniego sprawdzimy istotność naszych pytań.
Na podstawie boxplotów i tabeli widzimy, że średnia kwota zakupu wg kategorii nieznacznie się różni, największa różnica wynosi zaledwie 2.5 dolara.
W tym przypadku także nie są widoczne znaczne różnice. Konsumenci średnio najwięcej wydają na jesieni. Jednakże średnia kwota jest nieznacznie wyższa od kwot w pozostałych sezonach.
Aby to zobrazować użyjemy wykresu słupkowego wraz z przedziałami ufności.
Wykres obrazuje, że subskrypcja nieznacznie wpływa na wartość pojedynczych zakupów i co ciekawe na niekorzyść subskrybentów. Widzimy, że pomarańczowy słupek jest wyższy, więc średnia kwota jest nieznacznie, ale wyższa.
Do zobrazowania tego pytania użyjemy wykresu kołowego.
Co ciekawe, po raz kolejny różnice są znikome. Bądź w ogóle nie występują. Zauważamy, że części wykresu dla kobiet i dla mężczyzn są praktycznie tej samej wielkości.
Analizę opisową rozpoczniemy od sprawdzenia czy wiersze łamią założone reguły. Pozwoli nam to sprawdzić czy nasze dane są odpowiednio przygotowane, aby sporządzić statystyki opisowe.
Zmienna Age musi znajdować się w przedziale 18-100. Zmienna Season musi obejmować cztery pory roku Fall, Spring, Summer, Winter. Zmienna Gender musi przybierać tylko wartości Male bądź Female. Zmienna Category może przyjmować tylko wartości Accessories, Clothing, Footwear, Outerwear. Zmienna Rating może przyjmować wartości z przedziału <1;5>.
Wszystkie reguły ujęliśmy w jednym kodzie, na podstawie którego nastepnie utworzyliśmy tabelę.
| viol_age | viol_season | viol_gender | viol_category | viol_rating |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
W powyższej tabeli możemy zauważyć, że nasze dane są odpowiednie i możemy przeprowadzić analizę opisową.
Aby móc stworzyć statystyki opisowe potrzebujemy pakietów psych oraz knitr.
Tabela 1 pokazuje nam podstawowe statystyki dla zmiennej Purchase Amount w zależności od sezonu.
| Season | Min | Max | Q1 | Mediana | Q3 | Srednia | SD | IQR |
|---|---|---|---|---|---|---|---|---|
| Fall | 20 | 100 | 42 | 60 | 80.0 | 60.89 | 22.56 | 38.0 |
| Spring | 20 | 100 | 40 | 60 | 76.0 | 58.63 | 22.40 | 36.0 |
| Summer | 20 | 100 | 40 | 59 | 76.5 | 58.82 | 22.09 | 36.5 |
| Winter | 20 | 100 | 43 | 60 | 77.0 | 59.91 | 21.73 | 34.0 |
Zauważalne są przede wszystkim: takie same kwoty minimalne i maksymalne, zbliżony rozkład kwantyli dla tej zmiennej, tak samo jak odchylenia standardowego, średniej, mediany i rozkładu międzykwantylowego.
| Gender | Min | Max | Q1 | Mediana | Q3 | Srednia | SD | IQR |
|---|---|---|---|---|---|---|---|---|
| Female | 20 | 100 | 43 | 60 | 78 | 60.10 | 21.98 | 35 |
| Male | 20 | 100 | 40 | 60 | 77 | 59.32 | 22.32 | 37 |
Sytuacja ma się podobnie, kiedy przeanalizujemy statystyki opisowe dla tej samej zmiennej według płci.
Sprawdzimy teraz statystyki opisowe dla pytania czy subskrypcja wpływa na kwotę zakupu.
| Subscription.Status | Min | Max | Q1 | Mediana | Q3 | Srednia | SD | IQR |
|---|---|---|---|---|---|---|---|---|
| No | 20 | 100 | 41 | 60 | 78 | 59.70 | 22.31 | 37 |
| Yes | 20 | 100 | 41 | 60 | 77 | 59.22 | 21.94 | 36 |
Ponownie zauważamy, że statystyki nie mają dużego rozrzutu. Kwoty minimlne i maksymalne są takie same, kwantyl 1 także. Różnica w średniej kwocie jest niewielka tak jak odchylenie czy rozkład międzykwantylowy.
Jako że, nasze 4 pytanie badawcze obejmuje 2 zmienne kategoryczne, nie jesteśmy w stanie przygotować dla niego statystyk opisowych. Zamiast tego przygotowaliśmy tabelę z podaną liczbą klientów wybierających daną kategorię.
| Gender | Category | Liczba | Procent_w_ramach_plci |
|---|---|---|---|
| Female | Accessories | 392 | 31.4 |
| Female | Clothing | 556 | 44.6 |
| Female | Footwear | 199 | 15.9 |
| Female | Outerwear | 101 | 8.1 |
| Male | Accessories | 848 | 32.0 |
| Male | Clothing | 1181 | 44.5 |
| Male | Footwear | 400 | 15.1 |
| Male | Outerwear | 223 | 8.4 |
Zauważalny jest niemal identyczny rozkład procentowy poszczególnych kategorii odzieżowych w całości zakupów (tak samo jak było to widoczne ówcześnie na wykresie).Widzimy, że procenty poszczególnych kategorii rozkładają siętak samo dla kobiet i mężczyzn, jednakże ilość transakcji w poszcególnych kategoriach się różni.
Kolejnym z elementów naszego projektujest wnioskowanie statystyczne. W jego trakcie przetestujemy hipotezy dotyczące zależności między zmiennymi na przykładzie wcześniej postawionych pytań badawczych. Pozwoli to nam ocenić czy obserwowane różnice w próbie mogą być uogólnione na całą populację klientów.
Stawiamy więc dwie hipotezy:
H0 (hipoteza zerowa): Średnia kwota zakupu jest taka sama we wszystkich kategoriach.
H1 (alternatywna): Co najmniej jedna kategoria różni się średnią kwotą zakupu.
| Df | Sum Sq | Mean Sq | F value | Pr(>F) | |
|---|---|---|---|---|---|
| Category | 3 | 1696.315 | 565.4382 | 1.146237 | 0.3289411 |
| Residuals | 3896 | 1921894.950 | 493.2995 | NA | NA |
Widzimy, że wartość p-value = 0.329>0.05, więc nie ma podstaw do odrzucenia hipotezy zerowej. Stwierdzamy zatem, że średnia kwota zakupu jest taka sama dla wszystkich kategorii.
Ponownie stawiamy dwie hipotezy:
H0: Średnia kwota zakupu jest taka sama we wszystkich sezonach.
H1: Co najmniej jeden sezon różni się średnią kwotą zakupu.
| Df | Sum Sq | Mean Sq | F value | Pr(>F) | |
|---|---|---|---|---|---|
| Season | 3 | 3238.924 | 1079.6414 | 2.19037 | 0.0870796 |
| Residuals | 3896 | 1920352.340 | 492.9036 | NA | NA |
Wartość p-value wynosi w tym przypadku 0.0871 i jest wyższa od poziomu istotności na poziomie 0,05. W tym przypadku odrzucamy hipotezę zerową, ponieważ niema wystarczjących dowodów na to, aby stwierdzić, że sezon wpływa na wysokość wydatków. Jednakże gdy przyjmiemy poziom istotności na poziomie 0.1 wartość p-value jest mniejsza.Sugeruje nam to, że sezon może wpłynąć na wysokość wydatków. Podsumowując, różnice w wydatkach występują, nie są jednak na tyle duże aby uznać je za pewne. Sezon ma potencjalny, ale słaby wpływ na wysokość wydatków.
Do sprawdzenia tej hipotezy posłużymy się testem t-studenta.
H0: Średnia kwota zakupu klientów z subskrypcją = średnia kwota zakupu klientów bez subskrypcji.
H1: Średnie różnią się
| estimate | estimate1 | estimate2 | statistic | p.value | parameter | conf.low | conf.high | method | alternative |
|---|---|---|---|---|---|---|---|---|---|
| 0.4780991 | 59.69652 | 59.21842 | 0.6013224 | 0.5476967 | 1907.301 | -1.081217 | 2.037416 | Welch Two Sample t-test | two.sided |
Nie stwierdzono istotnej statystycznie różnicy w średniej kwocie zakupu pomiędzy klientami z subskrypcją i bez subskrypcji.
Aby to stwierdzić użyjemy testu chi-kwadrat.
H0: Płeć i kategoria produktu są niezależne (brak związku).
H1: Istnieje zależność między płcią a kategorią produktu.
| statistic | p.value | parameter | method |
|---|---|---|---|
| 0.5984208 | 0.8967938 | 3 | Pearson’s Chi-squared test |
Test chi‑kwadrat nie wykazał istotnej zależności między płcią a wyborem kategorii produktu (p‑value = 0.8968). Oznacza to, że w analizowanej próbie nie zaobserwowaliśmy statystycznie istotnych różnic w preferencjach kategorii między kobietami a mężczyznami.
Reasumując powyższą analizę jesteśmy w stanie przewidzieć zachowania klientów, a co za tym idzie dostosować naszą strategię marketingową do potrzeb konsumentów. Dzięki wizualizacji danych wiemy, że największą uwagę powinniśmy poświęcać odzieży (“clothing”) gdyż jest to najczęściej wybierana kategoria zakupowa. Niemniej jednak, wciąż warto pamiętać o pozostałych kategoriach, gdyż średnie kwoty zakupu pomiędzy kategoriami różnią się jedynie nieznacznie. Co więcej wiemy, iż sezon nie wpływa na całokształt wydatków zakupowych, jednocześnie wiemy, że kobiety wydają więcej w “zimnym” okresie roku kobiety wydają więcej. Możemy dzięki temu przygotowywać kampanie skierowane właśnie na tę płeć. Należy jednak pamiętać, że sezon zakupowy wpływa na wysokość wydatków jedynie na mnie rygorystycznym poziomie istotności. Kolejno wiemy już, że płeć konsumenta nie wpływa na kategorie zakupów jakie wybiera.
Biorąc pod uwagę wszystkie czynniki, możemy stwierdzić, że aktualna strategia marketingowa jest odpowiednia. Średnia wartość wydatków klientów, a co za tym idzie- także naszych przychodów- jest podobna. Możemy jedynie dodać kampanie marketingową skierowaną do kobiet w jesienno-zimowym okresie. Pozostała część analizy popiera naszą aktualną strategię, dlatego należy utrzymać ją na tym samym poziomie.