Wstęp

Celem projektu jest skonstruowanie modelu, który będzie badał zależność pomiędzy zmiennymi objaśniającymi, a satysfkacją klientów lini lotniczych. W tym celu zostaną wykorzystane dane pochodzące z Kaggle, które dotyczą omawianego tematu. Znajdują się pod adresem: https://www.kaggle.com/datasets/teejmahal20/airline-passenger-satisfaction?resource=download&select=train.csv. Dodatkowo projekt został opublikowany i znajduje się pod linkiem: http://rpubs.com/jakub1203/999054

Projekt został podzielony na 4 części: - Wstęp - znajdują się w nim dodatkowo przegląd danych oraz ich czyszczenie, a także zaprezentowanie hipotez badawczych - Analizy - zawiera wizualizacje oraz modele niektórych zależności - Model - zawiera końcowy model, który ma zweryfikować ostateczną hipotezę - Podsumowanie

Spradzenie poprawności danych

str(dane)
## 'data.frame':    103904 obs. of  25 variables:
##  $ X                                : int  0 1 2 3 4 5 6 7 8 9 ...
##  $ id                               : int  70172 5047 110028 24026 119299 111157 82113 96462 79485 65725 ...
##  $ Gender                           : chr  "Male" "Male" "Female" "Female" ...
##  $ Customer.Type                    : chr  "Loyal Customer" "disloyal Customer" "Loyal Customer" "Loyal Customer" ...
##  $ Age                              : int  13 25 26 25 61 26 47 52 41 20 ...
##  $ Type.of.Travel                   : chr  "Personal Travel" "Business travel" "Business travel" "Business travel" ...
##  $ Class                            : chr  "Eco Plus" "Business" "Business" "Business" ...
##  $ Flight.Distance                  : int  460 235 1142 562 214 1180 1276 2035 853 1061 ...
##  $ Inflight.wifi.service            : int  3 3 2 2 3 3 2 4 1 3 ...
##  $ Departure.Arrival.time.convenient: int  4 2 2 5 3 4 4 3 2 3 ...
##  $ Ease.of.Online.booking           : int  3 3 2 5 3 2 2 4 2 3 ...
##  $ Gate.location                    : int  1 3 2 5 3 1 3 4 2 4 ...
##  $ Food.and.drink                   : int  5 1 5 2 4 1 2 5 4 2 ...
##  $ Online.boarding                  : int  3 3 5 2 5 2 2 5 3 3 ...
##  $ Seat.comfort                     : int  5 1 5 2 5 1 2 5 3 3 ...
##  $ Inflight.entertainment           : int  5 1 5 2 3 1 2 5 1 2 ...
##  $ On.board.service                 : int  4 1 4 2 3 3 3 5 1 2 ...
##  $ Leg.room.service                 : int  3 5 3 5 4 4 3 5 2 3 ...
##  $ Baggage.handling                 : int  4 3 4 3 4 4 4 5 1 4 ...
##  $ Checkin.service                  : int  4 1 4 1 3 4 3 4 4 4 ...
##  $ Inflight.service                 : int  5 4 4 4 3 4 5 5 1 3 ...
##  $ Cleanliness                      : int  5 1 5 2 3 1 2 4 2 2 ...
##  $ Departure.Delay.in.Minutes       : int  25 1 0 11 0 0 9 4 0 0 ...
##  $ Arrival.Delay.in.Minutes         : num  18 6 0 9 0 0 23 0 0 0 ...
##  $ satisfaction                     : chr  "neutral or dissatisfied" "neutral or dissatisfied" "satisfied" "neutral or dissatisfied" ...

W naszym zbiorze danych znajdują się 25 zmiennych, w tym 19 typu int, 5 typu chr i 1 typu num. Kolumna X, która zawiera wyłącznie numery wiersza, jest zbędna i nie zostanie uwzględniona w modelu. Analogicznie, zmienna “id” również zostanie pominięta. Pozostałe kolumny będą brane pod uwagę w naszym modelu statystycznym. Zauważamy, że oprócz zmiennych “age”, “Arrival.Delay.in.Minutes”, “Departure.Delay.in.Minutes” i “Flight.Distance”, wszystkie pozostałe zmienne są kategoryczne.
W naszym zbiorze danych zmienną zależną (objaśnianą) jest satysfakcja klientów, a reszę kolumn można określić jako zmienne niezależne (objaśniające).

Hipotezy Badawcze

Po dokonaniu wstępnej analizy danych, jesteśmy w stanie zaprezentować hipotezy, które będziemy dalej testować. W szczególności chcemy zbadać, czy czas trwania lotu może być determinowany przez takie zmienne jak klasa, wiek i typ podróży. Zdaje się nam, że istnieje silne powiązanie między tymi zmiennymi, ponieważ osoby starsze częściej podróżują w celach służbowych. Dlatego też bierwsza hipoteza badawcz brzmi:

Hipoteza badawcza 1: Długość lotu jest zależna od typu podróży oraz wieku.

Druga hipoteza badawcz dotyczy z kolei

Hipoteza badawcza 2: Dystans lotu wpływa na opóźnienie lotu. Dłuższe loty będą średnio bardziej opóźnione.

Na końcu po sprawdzeniu pierwszych dwóch hipotez zostanie przedstawiony model, po wyłączeniu niektórych zmiennych, które podczas badania zostały wyeliminowane.
Hipoteza badawcza 3: Opisywane zmienne niezależne mają statystycznie istotny wpływ na satysfakcję klientów lini lotniczych.

Usunięcie zbędnych kolumn

dane <- subset(dane, select = -c(X, id))

Czyszczenie danych (ominięcie pustych wierszy)

sum(is.na(dane))
## [1] 310

Jak widać w naszym zbiorze danych występuje 310 wierszy, które zawierają puste komórki. Zostaną one usunięte w następnym kroku.

dane <- na.omit(dane)

Zamiana poszczególnych zmiennych na kategoryczne i numeryczne wartości

Następnie przekształcamy wybrane zmienne na kategoryczne.

dane$Gender <- factor(dane$Gender)
dane$Customer.Type <- factor(dane$Customer.Type)
dane$Type.of.Travel <- factor(dane$Type.of.Travel)
dane$Class <- factor(dane$Class)
dane$satisfaction <- factor(dane$satisfaction)
str(dane)
## 'data.frame':    103594 obs. of  23 variables:
##  $ Gender                           : Factor w/ 2 levels "Female","Male": 2 2 1 1 2 1 2 1 1 2 ...
##  $ Customer.Type                    : Factor w/ 2 levels "disloyal Customer",..: 2 1 2 2 2 2 2 2 2 1 ...
##  $ Age                              : int  13 25 26 25 61 26 47 52 41 20 ...
##  $ Type.of.Travel                   : Factor w/ 2 levels "Business travel",..: 2 1 1 1 1 2 2 1 1 1 ...
##  $ Class                            : Factor w/ 3 levels "Business","Eco",..: 3 1 1 1 1 2 2 1 1 2 ...
##  $ Flight.Distance                  : int  460 235 1142 562 214 1180 1276 2035 853 1061 ...
##  $ Inflight.wifi.service            : int  3 3 2 2 3 3 2 4 1 3 ...
##  $ Departure.Arrival.time.convenient: int  4 2 2 5 3 4 4 3 2 3 ...
##  $ Ease.of.Online.booking           : int  3 3 2 5 3 2 2 4 2 3 ...
##  $ Gate.location                    : int  1 3 2 5 3 1 3 4 2 4 ...
##  $ Food.and.drink                   : int  5 1 5 2 4 1 2 5 4 2 ...
##  $ Online.boarding                  : int  3 3 5 2 5 2 2 5 3 3 ...
##  $ Seat.comfort                     : int  5 1 5 2 5 1 2 5 3 3 ...
##  $ Inflight.entertainment           : int  5 1 5 2 3 1 2 5 1 2 ...
##  $ On.board.service                 : int  4 1 4 2 3 3 3 5 1 2 ...
##  $ Leg.room.service                 : int  3 5 3 5 4 4 3 5 2 3 ...
##  $ Baggage.handling                 : int  4 3 4 3 4 4 4 5 1 4 ...
##  $ Checkin.service                  : int  4 1 4 1 3 4 3 4 4 4 ...
##  $ Inflight.service                 : int  5 4 4 4 3 4 5 5 1 3 ...
##  $ Cleanliness                      : int  5 1 5 2 3 1 2 4 2 2 ...
##  $ Departure.Delay.in.Minutes       : int  25 1 0 11 0 0 9 4 0 0 ...
##  $ Arrival.Delay.in.Minutes         : num  18 6 0 9 0 0 23 0 0 0 ...
##  $ satisfaction                     : Factor w/ 2 levels "neutral or dissatisfied",..: 1 1 2 1 2 1 1 2 1 1 ...
##  - attr(*, "na.action")= 'omit' Named int [1:310] 214 1125 1530 2005 2109 2486 2631 3622 4042 4491 ...
##   ..- attr(*, "names")= chr [1:310] "214" "1125" "1530" "2005" ...

Analizy

    W poniższej części zaprezentowano różne wykresy oraz analizy, które mają przedstawić zależności występujące w naszym zbiorze danych. W celu lepszej oceny i dokładniejszej analizy skupilimy się również na zależnościach nie uwzględniających staysfakcji klienta, a więc zmiennej zależnej.

Satysfakcja klientów

    W pierwszej kolejności sprawdzono jak wygląda przekrój satysfakcji klientów wybranej linii lotniczej. Jak widać zadowolenie z usług lotniczych podzielono na dwa rodzaje: “satisfied”” oraz “neutral or dissatisfied”. Z pewnością podział na takie grupy w znacznym stopniu zredukował ilość informacji jakie mógłyby wynikać z zebranych danych. Przede wszystkim złączenie grupy nieusatysfakcjonowanych klienów oraz neutralnych sprawia, że nie jesteśmy w stanie wyznaczyć osób niezadowolonych z usług, co znacznie ogranicza możliwości analizy.

     Jak widać z wykresu poniżej mniejszą część stanowiły osoby, które wskazały na zadowolenie z odbytych podróży. Natomiast około 55% pasażerów jest niezadowolonych lub neutralnych jeżeli chodzi o poziom satysfakcji. Jak wcześniej wspomniano, niemożliwe jest wyodrębnienie grupy pasażerów tylko niezadowolonych.

Hipoteza badawcza 1

Rozkład długości lotu w zależności od satysfakcji klienta

     Następnie za pomocą rozkładu sprawdziliśmy jak w badanych grupach wyglądała długości lotu.Jak możemy zauważyć, dla zadowolonych klientów rozkład ten jest bardziej rozproszony i zawiera mniej wartości w swojej dolnej części, co wskazuje na większe zadowolenie wraz z wydłużającym się lotem. Możliwe, że w przypadku długich lotów linie lotnicze bardziej starają się o zapewnienie swoim klientom komfortu i z tego wynikać również może taki właśnie rozkład.

Rozkład długości lotu w zależności od typu podróży

     Sprawdzono również rozkład długości lotu w zależności od typu podrózy. Z wykresu wynika, że klienci podróżujący prywatnie wybierają miejsca o zdecydowanie bliższych odległościach aniżeli klienci biznesowi. Widzimy również, że rozkłady kształtem są zbliżone do tych prezentowanych powyżej. Może to sugerować, że rzeczywistym czynnikiem wpływającym na zadowolenie klientów nie jest rodzaj podróży, ale odległość, jaka jest z nią związana. Faktem jest, że klienci biznesowi poruszają się średnio na dalsze dystanse, co powoduje, że są one średnio bardziej zadowoleni.

Rozkład wieku pasażerów w zależności od typu podróży

     Poniżej można zaobserwować rozkład wieku w zależności od typu podróży. Najwięcej klientów podróżujących biznesowo jest w wieku około 40 lat, aczkolwiek widać systematyczny spadek tej wartości i dla wieku około 60 lat drastyczną redukcję pasażerów podrużujących biznesowo. Wynika to najprawdopodobniej z faktu, że jest to wiek w którym najczęściej przechodzi się na emeryturę. Można też zauważyć, silny spadek osób podróżujących biznesowo dla wieku około 30 lat, co natomiast może wynikać z tego, że jest to typowy wiek, w którym większość dorosłych decyduje się na zakładanie rodziny. Po prawej stronie można zobserwować jak ukształtował się rozkład dla podróży prywatnych, przyjmuje on raczej charakter stały i pozbawiony jest zniekształceń.

Jak możemy odczytać z wykresu poniżej klienci biznesowi przeważnie latają na większe odległości. Również można zauważyć dzięki linii regresji, że czym klienci linii lotniczych czym są starsi, tym latają na większe odległości. Na podstawie wykresu można więc podejrzewać, że długość lotu jest zależna od typu podróży i wieku. Może zastanawiać również czemu dla wieku poniżej 20 lat występują klienci, którzy latają w podróżach biznesowych. Szczególnie okolice 5-tego roku życia.

ggplot(dane, aes(x = Age, y = Flight.Distance)) + geom_point(aes(color=Type.of.Travel)) +
  geom_smooth(method="lm")
## `geom_smooth()` using formula = 'y ~ x'

W celu dokładniejszego zbadania pierwszej hipotezy poniżej zaprezentowano model analizy wariancji (ANOVA) dla dostrzeżonych zmiennych zależnych i niezależnej:

model2_h1 <- aov( Flight.Distance ~ Type.of.Travel + Age  , dane)
summary.lm(model2_h1)
## 
## Call:
## aov(formula = Flight.Distance ~ Type.of.Travel + Age, data = dane)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1560.5  -719.3  -252.8   514.3  4317.0 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   1139.285      8.631  132.00   <2e-16 ***
## Type.of.TravelPersonal Travel -567.936      6.436  -88.25   <2e-16 ***
## Age                              5.744      0.197   29.16   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 957 on 103591 degrees of freedom
## Multiple R-squared:  0.07919,    Adjusted R-squared:  0.07917 
## F-statistic:  4454 on 2 and 103591 DF,  p-value: < 2.2e-16

Jak widać w modelu tym wszystkie zmienne są istotne statystycznie, na co wskazuje test t. Dodatkowo współczynnik R^2 jest na poziomie 0,957, co oznacza, że nasz model jest bardzo dobrze dopasowany. Można więc stwierdzić, że długość lotu jest zależna od typu podróży oraz wieku, co potwierdza pierwszą hipotezę badawczą.

Rozkład opóźnienia w zależności od satysfakcji klienta

     Następnie stworzono rozkłady opóźnień w zależności od satysfkacji klientów. Po lewej stronie znajduje się wykres obejmujący wszystkie wartości. Na jego podstawie nie można zaobserwować znacznych różnic. Aczkolwiek zauważalne jest, że dla niezadowolonych i neutralnych klientów rozkład ten jest bardziej rozciągnięty i wartości mocno odstające są charakterystyczne właśnie do tej grupy. Interesujące jest to, że w grupie klientów zadowolonych również występują spore opóźnienia, które nie wpłynęly na ich zadowolenie.

     Po prawej stronie znajduje się rozkład dla opóźnień powyżej 4 godzin. W tym przypadku również zauważalny jest brak znaczących różnic, co pozwala stwierdzić, że opóźnienia nie mają znaczącego wpływu na końcową satysfkację klientów linii lotniczych.

Satysfakcja w zależności od grupy klientów

     W następnej kolejności stworzono wykresy przedstawiające zależność pomiędzy grupą klientów ze względu na stopień lojalności, a satysfakcją. Po lewej zaprezentowany jest wykres w wartościach bezwzględnych, natomiast po prawej we względnych. Można zaobserwować mocne dysproporcje w badanych grupach. W szczególności widoczne są one w wartościach względnych, gdzie klienci niezadowoleni/neutralni stanowią ponad 70% grupy klientów nielojalnych. W przypadku klientów lojalnych wartości te są mocno do siebie zbliżone. Wynika z tego więc, że grupa jaką są klienci nielojalni jest zdecydowanie bardziej krytycznie nastawiona do oferowanych usług, dlatego też warto w szczególności zadbać o ich komfort. Z wartości bezwzględnych natomiast można odczytać, że jest to grupa znacznie mniej liczna od klientów lojalnych, więc na ostateczny wynik nie ma aż tak dużego wpływu.

Satysfakcja w zależności od klasy lotu

     Zbadano również satysfakcję w zależności od klasy lotu. W tym przypadku również stworzono wykres względny jak i bezwzględny. Jak widać wartości te znacznie różnią się w zależności od klasy, Klienci podróżujący klasą business są znacznie bardziej zadowoleni z usług linii lotniczej od klientów eco i eco plus. Widać to na wartościach względnych. W przypadku klasy business prawie 70% podróżujących jest usatysfakcjonowana z podrózy, z kolei w grupie eco i eco plus są to wartości na poziomie około 20% osób zadowolonych. Dlatego też jeżeli linia lotnicza ma zamiar podnieść ogólne zadowolenie swoich klientów powinna znacznie bardziej zwrócić uwagę na niższe klasy i spróbować zgwarantować im lepszy komfort podróżowania.

Średnia ocena poszczególnych elementów

     W poniższej tabeli można zobaczyć średnie oceny dla poszczególnych zmiennych. Najwyższa wartość jest dla zmiennej ‘Obsługa lotnicza’.Najniższa wartość natomiast występuje w przypadku zmiennych ‘Inflight.wifi.service’Wifi na pokładzie’ oraz ‘Łatwość rezerwacji online’. Są to obszary, które klienci ocenili najniżej ze wszystkich, dlatego też w celu poprawy ogólnej oceny klientów należałoby w pierwszej kolejności zadbać o właśnie te obszary. Dzięki analizie tej jesteśmy w stanie lepiej poznać nasz zbiór danych oraz wyłapać występujące nieprawidłowości.

Ease.of.Online.booking 2.756984
Gate.location 2.977026
Food.and.drink 3.202126
Online.boarding 3.250497
Seat.comfort 3.439765
Inflight.entertainment 3.358341
On.board.service 3.382609
Leg.room.service 3.351401
Baggage.handling 3.631687
Checkin.service 3.304323
Inflight.service 3.640761
Cleanliness 3.286397
Departure.Delay.in.Minutes 14.747939

Hipoteza badawcza 2

Dystans lotu wpływa na opóźnienie lotu. Dłuższe loty będą średnio bardziej opóźnione

Wykres przestawiający zależność między czasem lotu a jego opóźnieniem

Na pierwszy rzut oka nie widać żdanej zależności pomiędzy tymi dwoma zmiennymi, zbudujmy jednak model liniowy i przeanalizujmy go aby poznać pełny ogląd sytuacji.

hyp.2.model <- lm(Arrival.Delay.in.Minutes ~ Flight.Distance, data=dane)

summary(hyp.2.model)
## 
## Call:
## lm(formula = Arrival.Delay.in.Minutes ~ Flight.Distance, data = dane)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
##  -15.29  -15.22  -15.04   -2.20 1568.81 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      1.529e+01  1.871e-01  81.713   <2e-16 ***
## Flight.Distance -9.413e-05  1.206e-04  -0.781    0.435    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 38.7 on 103592 degrees of freedom
## Multiple R-squared:  5.885e-06,  Adjusted R-squared:  -3.769e-06 
## F-statistic: 0.6096 on 1 and 103592 DF,  p-value: 0.4349

Jak widzimy, dystans jaki przeleci samolot sam w sobie nie objaśnia jego spóźnienia. Wartość p-value dla zmiennej Flight.Distance wynosi jedynie \(0.435\) co nie stanowi o istotności statystycznej przy żdanym z zwyczajowo zakadanych poziomów istotności. Przeanalizujmy jednak dodatkowo wykresy statystyczne modelu żeby upewnić się w naszym przekonaniu.

par(mfrow=c(2,2))
plot(hyp.2.model)


Jak widzimy model, nie jest dobrze dopasowany do naszych danych. Wykres Normal Q-Q świaczy o nie występowaniu rozkładu normalnego między rezyduami.
Na podstawie przeprowadzonego wnioskowania możemy odrzucić hipotezę nr.2 jakoby dystans lotu miał istotny statystycznie wpływ na jego opóźnienie.

Model

     W tej części projektu podjęto analizę modelu którego celem będzie predykcja satysfakcji klienta. Obejmuje ona statystyki dla danych, weryfikację modelu, ocenę zmiennych niezależnych występujących w modelu, a także weryfikacje hipotez postawionych w pierwszym punkcie punkcie.
W celu stworenia modelu zostanie wykorzystany algorytm glm (Generalized linear model)

Model GLM

model1 <- glm(satisfaction ~ Gender + Customer.Type + Age + Type.of.Travel + Class + Flight.Distance + Inflight.wifi.service + Departure.Arrival.time.convenient + Ease.of.Online.booking + Gate.location + Food.and.drink + Online.boarding + Seat.comfort + Inflight.entertainment + On.board.service + Leg.room.service + Baggage.handling + Checkin.service + Inflight.service + Cleanliness + Departure.Delay.in.Minutes + Arrival.Delay.in.Minutes , data = dane, family = "binomial")
summary(model1)
## 
## Call:
## glm(formula = satisfaction ~ Gender + Customer.Type + Age + Type.of.Travel + 
##     Class + Flight.Distance + Inflight.wifi.service + Departure.Arrival.time.convenient + 
##     Ease.of.Online.booking + Gate.location + Food.and.drink + 
##     Online.boarding + Seat.comfort + Inflight.entertainment + 
##     On.board.service + Leg.room.service + Baggage.handling + 
##     Checkin.service + Inflight.service + Cleanliness + Departure.Delay.in.Minutes + 
##     Arrival.Delay.in.Minutes, family = "binomial", data = dane)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.8483  -0.4911  -0.1751   0.3862   4.0267  
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                       -7.860e+00  7.876e-02 -99.793  < 2e-16 ***
## GenderMale                         4.255e-02  1.949e-02   2.183  0.02905 *  
## Customer.TypeLoyal Customer        2.035e+00  2.994e-02  67.970  < 2e-16 ***
## Age                               -8.308e-03  7.110e-04 -11.684  < 2e-16 ***
## Type.of.TravelPersonal Travel     -2.722e+00  3.147e-02 -86.494  < 2e-16 ***
## ClassEco                          -7.389e-01  2.566e-02 -28.794  < 2e-16 ***
## ClassEco Plus                     -8.554e-01  4.155e-02 -20.588  < 2e-16 ***
## Flight.Distance                   -1.789e-05  1.132e-05  -1.581  0.11392    
## Inflight.wifi.service              3.949e-01  1.148e-02  34.405  < 2e-16 ***
## Departure.Arrival.time.convenient -1.244e-01  8.218e-03 -15.132  < 2e-16 ***
## Ease.of.Online.booking            -1.440e-01  1.135e-02 -12.691  < 2e-16 ***
## Gate.location                      2.914e-02  9.174e-03   3.176  0.00149 ** 
## Food.and.drink                    -2.860e-02  1.068e-02  -2.677  0.00743 ** 
## Online.boarding                    6.126e-01  1.025e-02  59.773  < 2e-16 ***
## Seat.comfort                       6.555e-02  1.118e-02   5.862 4.58e-09 ***
## Inflight.entertainment             6.555e-02  1.427e-02   4.594 4.34e-06 ***
## On.board.service                   3.014e-01  1.019e-02  29.582  < 2e-16 ***
## Leg.room.service                   2.532e-01  8.540e-03  29.652  < 2e-16 ***
## Baggage.handling                   1.331e-01  1.144e-02  11.633  < 2e-16 ***
## Checkin.service                    3.234e-01  8.566e-03  37.757  < 2e-16 ***
## Inflight.service                   1.207e-01  1.205e-02  10.018  < 2e-16 ***
## Cleanliness                        2.236e-01  1.210e-02  18.471  < 2e-16 ***
## Departure.Delay.in.Minutes         4.759e-03  9.882e-04   4.815 1.47e-06 ***
## Arrival.Delay.in.Minutes          -9.412e-03  9.745e-04  -9.659  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 141768  on 103593  degrees of freedom
## Residual deviance:  69169  on 103570  degrees of freedom
## AIC: 69217
## 
## Number of Fisher Scoring iterations: 6

Z naszej analizy wynika, że przy założeniu poziomu istotności alfa równego 0.05 tylko jedna zmienna nie okazała się być istotna statystycznie. Ta zmienna to “Flight.Distance”, czyli odległość, jaką pokonuje pasażer linii lotniczych. W trakcie analizy pierwszej hipotezy badawczej, zauważyliśmy, że długość lotu może być powiązana z rodzajem podróży oraz wiekiem, co właśnie może być przyczyną takiej sytuacji. Aby przeprowadzić dalsze analizy, powinniśmy odrzucić zmienne, które okazały się być nieistotne, zaczynając od tej, dla której wartość p jest największa (Flight.Distance).

model2 <- glm(satisfaction ~ Gender + Customer.Type + Age + Type.of.Travel + Class + Inflight.wifi.service + Departure.Arrival.time.convenient + Ease.of.Online.booking + Gate.location + Food.and.drink + Online.boarding + Seat.comfort + Inflight.entertainment + On.board.service + Leg.room.service + Baggage.handling + Checkin.service + Inflight.service + Cleanliness + Departure.Delay.in.Minutes + Arrival.Delay.in.Minutes , data = dane, family = "binomial")
summary(model2)
## 
## Call:
## glm(formula = satisfaction ~ Gender + Customer.Type + Age + Type.of.Travel + 
##     Class + Inflight.wifi.service + Departure.Arrival.time.convenient + 
##     Ease.of.Online.booking + Gate.location + Food.and.drink + 
##     Online.boarding + Seat.comfort + Inflight.entertainment + 
##     On.board.service + Leg.room.service + Baggage.handling + 
##     Checkin.service + Inflight.service + Cleanliness + Departure.Delay.in.Minutes + 
##     Arrival.Delay.in.Minutes, family = "binomial", data = dane)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.8538  -0.4912  -0.1754   0.3860   4.0277  
## 
## Coefficients:
##                                     Estimate Std. Error  z value Pr(>|z|)    
## (Intercept)                       -7.8805974  0.0776711 -101.461  < 2e-16 ***
## GenderMale                         0.0426306  0.0194941    2.187  0.02875 *  
## Customer.TypeLoyal Customer        2.0228375  0.0288773   70.049  < 2e-16 ***
## Age                               -0.0082344  0.0007095  -11.606  < 2e-16 ***
## Type.of.TravelPersonal Travel     -2.7162862  0.0312523  -86.915  < 2e-16 ***
## ClassEco                          -0.7262649  0.0243771  -29.793  < 2e-16 ***
## ClassEco Plus                     -0.8401071  0.0403878  -20.801  < 2e-16 ***
## Inflight.wifi.service              0.3958541  0.0114621   34.536  < 2e-16 ***
## Departure.Arrival.time.convenient -0.1245630  0.0082158  -15.161  < 2e-16 ***
## Ease.of.Online.booking            -0.1443757  0.0113484  -12.722  < 2e-16 ***
## Gate.location                      0.0292781  0.0091723    3.192  0.00141 ** 
## Food.and.drink                    -0.0283801  0.0106844   -2.656  0.00790 ** 
## Online.boarding                    0.6121496  0.0102449   59.752  < 2e-16 ***
## Seat.comfort                       0.0652383  0.0111807    5.835 5.38e-09 ***
## Inflight.entertainment             0.0654989  0.0142682    4.591 4.42e-06 ***
## On.board.service                   0.3012244  0.0101866   29.571  < 2e-16 ***
## Leg.room.service                   0.2527880  0.0085340   29.621  < 2e-16 ***
## Baggage.handling                   0.1333193  0.0114348   11.659  < 2e-16 ***
## Checkin.service                    0.3233399  0.0085655   37.749  < 2e-16 ***
## Inflight.service                   0.1210841  0.0120457   10.052  < 2e-16 ***
## Cleanliness                        0.2235309  0.0121055   18.465  < 2e-16 ***
## Departure.Delay.in.Minutes         0.0047425  0.0009879    4.800 1.58e-06 ***
## Arrival.Delay.in.Minutes          -0.0093973  0.0009742   -9.646  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 141768  on 103593  degrees of freedom
## Residual deviance:  69172  on 103571  degrees of freedom
## AIC: 69218
## 
## Number of Fisher Scoring iterations: 6

W końcowym rozrachunku, we wskazanym modelu wszystkie zmienne charakteryzują się istotnością statystyczną, co sugeruje brak podstaw do odrzucenia hipotezy trzeciej. Z tego powodu możemy stwierdzić, że zadowolenie klientów linii lotniczych jest uwarunkowane przez wszystkie zastosowane w modelu zmienne niezależne

Podsumowanie

W powyższej analizie statystycznej zajeliśmy się problemem czynników wpływających na satysfakcję klientów z lotu, a także pokrótce przeanalizowaliśmy wpływ długości lotu na jego opóźnienie a w konsekwencji satysfakcje pasażerów. Zastosowaliśmy zarówno model liniowy, model anova jak i model wielo klasowej regresji logistycznej (glm). Dwie z trzech początkowo zakładanych hipotez potwierdziły się jedna została przez nas obalona. Napewno obszerność zbioru danych pozwoliłaby w przyszłości spojrzeć na niego pod wieloma innymi kątami i rozważyć znacznie większą ilość hipotez. Wykonana przez nas praca jest dobrą podstawą do dalszej pracy ze zbiorem danych i odpowiedzą na kilka nurtujących nas pytań.