Wstęp
Dane na których opiera się poniższa analiza zawieraja informacje związane ze sprzedażą w sklepach Lidl. Zawarte w nich są szczegółowe informacje o zamówieniach, klientach, produktach i transakcjach sprzedaży. W danych możemy znaleźć między innymi informacje na temat miejsca sprzedaży produktu, jego kategorii i konkretnej nazwy czy zysku, który osiągnęła firma na sprzedaży danego produktu. Zbiór na początkowym etapie (przed oczyszczeniem danych) zawiera 5091 obserwacji opisanych przez 23 zmienne.
Celem badawczym jest wykorzystanie powyższych danych do zrozumienia zachowań i preferencji klientów oraz analizy trendów. Stawiamy hipotezę główną, że istnieje statyczna istotność między analizowanymi czynnikami.
W niniejszym projekcie przyjmujemy następujące założenia:
Reprezentatywność danych: Dane są reprezentatywne dla całej firmy.
Kompletność danych: Dane są kompletne, a brakujące wartości nie wpływają znacząco na wyniki analizy.
Stabilność warunków: Warunki w firmie pozostają stosunkowo stabilne w trakcie badania, a ewentualne zmiany są minimalne.
Pytania badawcze:
Czy istnieje statystyczna istotność między sprzedażą, a segmentem klienta?
Czy istnieje statystyczna istotność między zyskiem , a kategorią produktu?
Czy istnieje statystyczna istotność między sprzedażą, a regionem sprzedaży?
Czy istnieje statystyczna istotność między czasem dostawy, a sposobem płatności?
Czy istnieje statystyczna istotność między czasem dostawy, a regionem sprzedaży?
Czyszczenie danych
Walidacja danych
Usuwamy kolumny o nazwach “Row.ID.O6G3A1.R6”, “ind1”, “ind2” ponieważ nie zawierają one istotnych dla nas informacji. Następnie, sprawdzamy typy posiadanych przez nas danych:
## 'data.frame': 5901 obs. of 20 variables:
## $ Order.ID : chr "CA-2019-160304" "CA-2019-160304" "CA-2019-160304" "CA-2019-125206" ...
## $ Order.Date : chr "01-01-2019" "02-01-2019" "02-01-2019" "03-01-2019" ...
## $ Ship.Date : chr "07-01-2019" "07-01-2019" "07-01-2019" "05-01-2019" ...
## $ Ship.Mode : chr "Standard Class" "Standard Class" "Standard Class" "First Class" ...
## $ Customer.ID : chr "BM-11575" "BM-11575" "BM-11575" "LR-16915" ...
## $ Customer.Name: chr "Brendan Murry" "Brendan Murry" "Brendan Murry" "Lena Radford" ...
## $ Segment : chr "Corporate" "Corporate" "Corporate" "Consumer" ...
## $ Country : chr "United States" "United States" "United States" "United States" ...
## $ City : chr "Gaithersburg" "Gaithersburg" "Gaithersburg" "Los Angeles" ...
## $ State : chr "Maryland" "Maryland" "Maryland" "California" ...
## $ Region : chr "East" "East" "East" "West" ...
## $ Product.ID : chr "FUR-BO-10004709" "FUR-BO-10004709" "TEC-PH-10000455" "OFF-ST-10003692" ...
## $ Category : chr "Furniture" "Furniture" "Technology" "Office Supplies" ...
## $ Sub.Category : chr "Bookcases" "Bookcases" "Phones" "Storage" ...
## $ Product.Name : chr "Bush Westfield Collection Bookcases, Medium Cherry Finish" "Bush Westfield Collection Bookcases, Medium Cherry Finish" "GE 30522EE2" "Recycled Steel Personal File for Hanging File Folders" ...
## $ Sales : num 73.9 173.9 232 114.5 30.1 ...
## $ Quantity : int 1 3 2 2 2 3 5 7 2 4 ...
## $ Profit : num 28.27 38.27 67.27 28.61 -5.26 ...
## $ Returns : chr "#N/A" "#N/A" "#N/A" "#N/A" ...
## $ Payment.Mode : chr "Online" "Online" "Cards" "Online" ...
Zauważamy, że kolumny Order.Date oraz Ship.Date nie mają typu “date” tylko “character”. Z kolei kolumny Ship.Mode, Customer.ID, Segment, Country, City, State, Region, Product.ID, Category, Sub.Category oraz Payment.Mode również mają typ “character” zamiast “factor”. Zmieniamy typ danych dla odpowiednich kolumn:
## 'data.frame': 5901 obs. of 20 variables:
## $ Order.ID : Factor w/ 3003 levels "CA-2019-100041",..: 944 944 944 395 2551 2551 2551 73 73 2702 ...
## $ Order.Date : Date, format: "2019-01-01" "2019-01-02" ...
## $ Ship.Date : Date, format: "2019-01-07" "2019-01-07" ...
## $ Ship.Mode : Factor w/ 4 levels "Same Day","First Class",..: 4 4 4 2 4 4 4 4 4 4 ...
## $ Customer.ID : Factor w/ 773 levels "AA-10315","AA-10375",..: 91 91 91 458 123 123 123 96 96 247 ...
## $ Customer.Name: chr "Brendan Murry" "Brendan Murry" "Brendan Murry" "Lena Radford" ...
## $ Segment : Factor w/ 3 levels "Consumer","Corporate",..: 2 2 2 1 2 2 2 2 2 2 ...
## $ Country : Factor w/ 1 level "United States": 1 1 1 1 1 1 1 1 1 1 ...
## $ City : Factor w/ 452 levels "Aberdeen","Abilene",..: 137 137 137 228 369 369 369 42 42 57 ...
## $ State : Factor w/ 49 levels "Alabama","Arizona",..: 19 19 19 4 42 42 42 35 35 32 ...
## $ Region : Factor w/ 4 levels "Central","East",..: 2 2 2 4 1 1 1 1 1 3 ...
## $ Product.ID : Factor w/ 1755 levels "FUR-BO-10000112",..: 45 45 1604 1339 1455 1476 1692 306 786 1530 ...
## $ Category : Factor w/ 3 levels "Furniture","Office Supplies",..: 1 1 3 2 3 3 3 1 2 3 ...
## $ Sub.Category : Factor w/ 17 levels "Accessories",..: 5 5 14 15 1 1 14 17 4 7 ...
## $ Product.Name : chr "Bush Westfield Collection Bookcases, Medium Cherry Finish" "Bush Westfield Collection Bookcases, Medium Cherry Finish" "GE 30522EE2" "Recycled Steel Personal File for Hanging File Folders" ...
## $ Sales : num 73.9 173.9 232 114.5 30.1 ...
## $ Quantity : int 1 3 2 2 2 3 5 7 2 4 ...
## $ Profit : num 28.27 38.27 67.27 28.61 -5.26 ...
## $ Returns : chr "#N/A" "#N/A" "#N/A" "#N/A" ...
## $ Payment.Mode : Factor w/ 3 levels "Cards","COD",..: 3 3 1 3 3 3 1 2 2 3 ...
Usuwamy wiersze zawierające dane z przyszłymi datami (operujemy jedynie na datach przeszłych). Filtrujemy również linijki, w których data dostawy jest wcześniejsza niż data zamówienia, ponieważ jest to błąd.
Nie zostały usunięte żadne wiersze, co świadczy o tym, że wszystkie daty były prawidłowe. Weryfikujemy, czy w pliku występują duplikaty:
## [1] 0
Duplikaty nie występują. Kolejnym krokiem jest sprawdzenie, czy dane w kolumnach z kategoriami są prawidłowe:
| Rodzaj dostawy | Liczba wystąpień |
|---|---|
| Same Day | 344 |
| First Class | 959 |
| Second Class | 1147 |
| Standard Class | 3451 |
| Segment | Liczba wystąpień |
|---|---|
| Consumer | 2997 |
| Corporate | 1774 |
| Home Office | 1130 |
| Kraj | Liczba wystąpień |
|---|---|
| United States | 5901 |
| Stan | Liczba wystąpień |
|---|---|
| Alabama | 35 |
| Arizona | 113 |
| Arkansas | 39 |
| California | 1189 |
| Colorado | 114 |
| Connecticut | 56 |
| Delaware | 43 |
| District of Columbia | 7 |
| Florida | 212 |
| Georgia | 115 |
| Idaho | 12 |
| Illinois | 293 |
| Indiana | 96 |
| Iowa | 24 |
| Kansas | 13 |
| Kentucky | 73 |
| Louisiana | 19 |
| Maine | 2 |
| Maryland | 63 |
| Massachusetts | 63 |
| Michigan | 138 |
| Minnesota | 46 |
| Mississippi | 36 |
| Missouri | 40 |
| Montana | 5 |
| Nebraska | 25 |
| Nevada | 16 |
| New Hampshire | 13 |
| New Jersey | 92 |
| New Mexico | 26 |
| New York | 672 |
| North Carolina | 159 |
| North Dakota | 7 |
| Ohio | 293 |
| Oklahoma | 49 |
| Oregon | 65 |
| Pennsylvania | 335 |
| Rhode Island | 36 |
| South Carolina | 19 |
| South Dakota | 8 |
| Tennessee | 120 |
| Texas | 565 |
| Utah | 23 |
| Vermont | 9 |
| Virginia | 104 |
| Washington | 337 |
| West Virginia | 4 |
| Wisconsin | 77 |
| Wyoming | 1 |
| Region | Liczba wystąpień |
|---|---|
| Central | 1381 |
| East | 1688 |
| South | 931 |
| West | 1901 |
| Kategoria | Liczba wystąpień |
|---|---|
| Furniture | 1249 |
| Office Supplies | 3569 |
| Technology | 1083 |
| Podkategoria | Liczba wystąpień |
|---|---|
| Accessories | 461 |
| Appliances | 279 |
| Art | 465 |
| Binders | 915 |
| Bookcases | 131 |
| Chairs | 355 |
| Copiers | 38 |
| Envelopes | 133 |
| Fasteners | 124 |
| Furnishings | 573 |
| Labels | 211 |
| Machines | 65 |
| Paper | 825 |
| Phones | 519 |
| Storage | 498 |
| Supplies | 119 |
| Tables | 190 |
| Rodzaj płatności | Liczba wystąpień |
|---|---|
| Cards | 1284 |
| COD | 2453 |
| Online | 2164 |
Wszystkie dane są prawidłowe. Następnie weryfikujemy, czy dane w kolumnach Order.ID, Product.ID i Customer.ID są poprawne:
| ID zamówienia | ID klienta | ID produktu |
|---|---|---|
| CA-2019-152072 | Dp-13240 | OFF-EN-10003040 |
| CA-2019-152072 | Dp-13240 | OFF-AR-10001573 |
| CA-2019-152072 | Dp-13240 | TEC-AC-10000844 |
| CA-2019-120530 | Dl-13600 | FUR-CH-10000454 |
| CA-2019-140543 | Co-12640 | OFF-ST-10000563 |
| US-2020-155299 | Dl-13600 | OFF-AP-10002203 |
| CA-2020-169691 | Dp-13240 | OFF-ST-10001291 |
| CA-2020-169691 | Dp-13240 | OFF-PA-10003022 |
| CA-2020-169691 | Dp-13240 | OFF-LA-10002312 |
| US-2020-132381 | Dp-13240 | FUR-TA-10002356 |
Mamy 26 niepoprawnych wartości w Customer.ID (Dp), co świadczy o niepoprawności w nazwisku któregoś z klientów. Wszystkie błędne wartości w kolumnie Customer.ID zostały poprawione.
Brakujące obserwacje
Sprawdzamy, czy występują brakujące obserwacje:
Brakujące obserwacje nie występują, ale przyglądamy się dokładniej kolumnie Returns:
| Zwrot | Liczba wystąpień |
|---|---|
| #N/A | 5614 |
| 1 | 287 |
Mamy 5614 wartości “#N/A”, które zastąpimy “FALSE” oraz 287 wartości “1”, które zastąpimy “TRUE”:
| Zwrot | Liczba wystąpień |
|---|---|
| FALSE | 5614 |
| TRUE | 287 |
Obserwacje odstające
Sprawdzamy, jak prezentują się wartości w kolumnie Quantity:
| Ilość | Liczba wystąpień |
|---|---|
| 1 | 563 |
| 2 | 1397 |
| 3 | 1392 |
| 4 | 703 |
| 5 | 764 |
| 6 | 305 |
| 7 | 362 |
| 8 | 177 |
| 9 | 151 |
| 10 | 29 |
| 11 | 16 |
| 12 | 14 |
| 13 | 13 |
| 14 | 15 |
Dane są prawidłowe, ilość zamawianych sztuk produktów zawiera się w przedziale od 1 do 14.
Ostatnim krokiem jest usunięcie wartości, w których Profit jest większy niż Sales. Dodatkowo, zaokrąglamy je do 2 miejsc po przecinku oraz sprawdzamy, czy występują wartości odstające:
Wartości odstające występują, natomiast nie decydujemy się ich usunąć, ponieważ chcemy, aby dane które mamy odwzierciedlały rzeczywistość.
Analiza
Po upewnieniu się, że posiadane przez nas dane nie zawierają błędów, możemy przejść do ich szczegółowej analizy.
Jak widać na powyższym wykresie, najwyższą sprzedaż zanotowano w grudniu 2020 roku, za to najniższa sprzedaż była zanotowana w styczniu 2019 roku. Możemy tu zauważyć lekki trend rosnący, ponieważ z miesiąca na miesiąc wartości sprzedaży wzrastały względem wartości sprzedaży z poprzedzających miesięcy, ale można zauważyć odstępstwa od tej tendencji.
Na tym wykresie można zauważyć, że skumulowany zysk ma tendencje wzrostową, ale w niektórych miesiącach można było zauważyć straty. Oznacza to, że w tych miesiącach firma nie generowała zysków, czyli poniosła stratę. Takimi miesiącami były grudzień 2019 oraz maj 2020 roku.
Jak widać na powyższych wykresach, zysk skumulowany w 2020 roku był zdecydowanie wyższy niż w roku 2019. W roku 2019 zysk wynosił około 67500 USD, a w roku 2020 zysk wynosił około 79000 USD.
Najwyższą sprzedaż można było zaobserwować w Kalifornii, a następnie w Nowym Jorku. Kolejnymi dość znaczącymi stanami pod względem sprzedaży są: Texas, Waszyngton, Pensylwania Ohio oraz Illinois. Inne stany posiadają bardzo podobne dane sprzedażowe. Najmniejszą sprzedaż można zaobserwować w stanie Maine oraz w mieście Waszyngton.
Jak można zauważyć na powyższych diagramach słupkowych, im wyższa sprzedaż, tym wyższy zysk. Dlatego też, wykresy te wyglądają bardzo podobnie, ponieważ zysk jest uzależniony od sprzedaży. Najwyższa sprzedaż, jak i zysk występują w segmencie Consumer, następnie w segmencie Corporate, a najmniejsza Sprzedaż oraz zysk generuje segment Home Office.
Na tym wykresie możemy zauważyć, że przy wartości sprzedaży 115000 USD Tables nie generują one zysku, a raczej tworzą stratę. To samo możemy zauważyć w takich produktach jak Supplies oraz Bookcases. Machines oraz Fasteners nie generują ani zysku ani straty. Największy zysk generują Accessories, a najwyższą sprzedaż Phones.
| ID produktu | Nazwa | Całkowita sprzedaż | Całkowity zysk | Całkowita ilość |
|---|---|---|---|---|
| TEC-CO-10004722 | Canon imageCLASS 2200 Advanced Copier | 7917.95 | 6159.99 | 7 |
| TEC-CO-10001449 | Hewlett Packard LaserJet 3310 Copier | 13300.78 | 5399.92 | 25 |
| TEC-MA-10001047 | 3D Systems Cube Printer, 2nd Generation, Magenta | 14334.89 | 3717.97 | 11 |
| TEC-MA-10001127 | HP Designjet T520 Inkjet Large Format Printer - 24” Color | 4749.95 | 2799.98 | 5 |
| OFF-BI-10001359 | GBC DocuBind TL300 Electric Binding System | 12890.25 | 2753.75 | 21 |
W powyższej tabeli zostały przedstawione produkty, które generują najwyższy zysk.
| ID klienta | Imię i naziwsko | Całkowita sprzedaż | Całkowity zysk | Całkowita ilość |
|---|---|---|---|---|
| HL-15040 | Hunter Lopez | 6091.11 | 5174.40 | 16 |
| AR-10540 | Andy Reiter | 6353.82 | 2617.21 | 22 |
| DR-12940 | Daniel Raglin | 6408.62 | 2549.73 | 33 |
| SE-20110 | Sanjit Engle | 7821.98 | 2436.94 | 54 |
| BS-11365 | Bill Shonely | 9199.78 | 2405.36 | 18 |
W powyższej tabeli zostali przedstawienie klienci, którzy generują największy zysk. Została wymieniona szóstka klientów. Największy zysk wygenerował Hunter Lopez.
Jak widać na powyższym diagramie, mamy wyodrębnione 4 tryby dostawy. Najkrótszy z nich to tryb same day, gdzie dostawa przychodzi średnio tego samego dnia, kolejnym trybem jest first class, gdzie średni czas dostawy to ponad dwa dni. Występują jeszcze dwa tryby: second class, gdzie średni czas dostawy wynosi ponad 3 dni oraz najdłuższy tryb – standard class, którego średni czas dostawy wynosi średnio ponad 5 dni.
Jak widać na powyższym wykresie największy udział w formie płatności ma płatność online. Można zauważyć 2 wyjątki od tej reguły. Kiedy wysokość sprzedaży wynosi 1400/1500 USD to największy udział ma COD zabierając tym samym udział płatnością online, za to kiedy wysokość sprzedaży wynosi 1900/2000 USD największy udział ma COD zabierając tym samym udział płatnością kartą.
Jak można zauważyć na powyższym wykresie – nie posiadamy danych do stycznia 2020 roku. Dlatego też możemy wyciągać wnioski tylko z roku 2020. Najmniejszy udział zwrotów można zaobserwować w maju 2020 roku, za to największy udział zwrotów można zaobserwować w sierpniu 2020 roku oraz w lutym 2020 roku.
Analiza opisowa
Kolejnym etapem jest przeprowadzenia analizy opisowej posiadanych danych.
Wykres boxplot pokazuje jak rozmieszczone są statystyki opisowe. Wiemy, że mediana sprzedaży wynosi 128,64 USD, co sugeruje, że 50% wartości sprzedaży było większa niż wartość 128,64 USD. Kwartyl dolny wynosi 71,975 USD, co sugeruje, że 25% wartości sprzedaży było mniejsze niż wartość 71,975 USD. Kwartyl górny wynosi 264,24 USD, co sugeruje, że 75% wartości sprzedaży było większe niż wartość 264,24 USD.
Wykres boxplot pokazuje jak rozmieszczone są statystyki opisowe. Wiemy, że mediana zysku wynosi 8,49 USD, co sugeruje, że 50% wartości zysku było większa niż wartość 8,49 USD. Kwartyl dolny wynosi 1,79, co sugeruje, że 25% wartości zysku było mniejsze niż wartość 1,79 USD. Kwartyl górny wynosi 28,20 USD, co sugeruje, że 75% wartości zysku było większe niż wartość 28,20 USD.
| Region | Central | East | South | West |
| Minimum | 0.84 | 1.50 | 2.21 | 1.41 |
| Maksimum | 5455.96 | 9099.93 | 4749.95 | 5107.96 |
| Kwartyl dolny | 67.45 | 72.11 | 73.24 | 75.76 |
| Mediana | 123.76 | 129.94 | 127.66 | 131.02 |
| Kwartyl górny | 250.09 | 265.09 | 276.86 | 264.71 |
| Średnia | 244.80 | 266.10 | 270.98 | 273.02 |
| Odch. standardowe | 405.89 | 529.29 | 448.27 | 470.95 |
| IQR | 182.64 | 192.98 | 203.62 | 188.95 |
| Odch. ćwiartkowe | 91.32 | 96.49 | 101.81 | 94.47 |
| Odch. standardowe w % | 1.66 | 1.99 | 1.65 | 1.72 |
| Odch. ćwiartkowe w % | 1.48 | 1.49 | 1.60 | 1.44 |
| Skośność | 5.15 | 7.39 | 4.51 | 4.99 |
| Kurtoza | 40.29 | 79.22 | 28.04 | 33.54 |
Powyższa tabela przedstawia statystyki opisowe dla sprzedaży z podziałem na poszeczególne regiony. Najwyższa średnia występuje w regionie zachodnim, a najniższa w regionie centralnym. Jeżeli chodzi o medianę, to również najwyższa występuje w regionie zachodnim, a najniższa w regionie centralnym.
Wnioskowanie
Ostatnim etapem jest przeprowadzenie wnioskowania i przeprowadzenie testów badających zależności pomiędzy poszczególnymi zmiennymi.
H0: sales nie zależy od segmentu
H1: sales zależy od segmentu
Pvalue wynosi 0.03 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że sprzedaż zależy od segmentu.
H0: profit nie zależy od kategorii
H1: profit zależy od kategorii
Pvalue wynosi 6.58*10-6 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że zysk zależy od kategorii.
H0: sales nie zależy od regionu
H1: sales zależy od regionu
Pvalue wynosi 0.26 i jest większe od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że nie ma podstaw do odrzucenia hipotezy zerowej i skłaniamy się do tego, że sprzedaż nie zależy od regionu.
H0: czas dostawy nie zależy od sposobu płatności
H1: czas dostawy zależy od sposobu płatności
Pvalue wynosi 5.28*10-3 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że czas dostawy zależy od sposobu płatności.
H0: czas dostawy nie zależy od regionu
H1: czas dostawy zależy od regionu
Pvalue wynosi 2.31*10-9 i jest mniejsze od przyjętego poziomu istotności równemu alfa = 0.05, co oznacza, że odrzucamy hipotezę zerową i skłaniamy się do tego, że czas dostawy zależy od regionu.
Podsumowanie
Nasz projekt opiera się na danych Lidla ze Stanów Zjednoczonych. Dane, które posiadamy to informacje o zamówieniach, klientach, produktach i transakcjach sprzedaży.
Na początku pracy postanowiliśmy oczyścić wszystkie dane. Przebrnęliśmy przez etap walidacji danych, brakujących obserwacji, które nie występowały oraz obserwacji odstających.
Po oczyszczeniu danych przeszliśmy do etapu analizy oraz analizy opisowej. Podsumowując największa sprzedaż została zanotowana w grudniu 2020 roku, a skumulowany zysk był dużo większy w roku 2020, niż w roku 2019. Kalifornia była stanem, w którym odnotowano największa sprzedaż, za to najmniejszą sprzedaż odnotowano w Maine. Najbardziej popularną formą płatności była płatność online. Mediana sprzedaży wynosiła 128,64 USD, co oznacza ze 50% wartości sprzedaży było większe niż 128,64 USD. Jeżeli chodzi o zysk, to jego mediana wynosiła 8,49 USD, co sugeruje, że 50% wartości zysku było większe niż wartość 8,49 USD.
Ostatnim etapem naszej pracy było wnioskowanie, gdzie sprawdzaliśmy różnego rodzaju zależności. Skupiliśmy się między innymi na zależności między sprzedażą, a segmentem oraz czasem dostawy, a metodą płatności.
Uważamy, że nasz projekt idealnie pokazuje jak kształtowała się sprzedaż oraz zysk sieci sklepów Lidl w Stanach Zjednoczonych na przestrzeni lat 2019 - 2020.