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
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).
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.
dane <- subset(dane, select = -c(X, id))
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)
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" ...
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.
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.
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.
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.
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ą.
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.
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.
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.
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 |
Dystans lotu wpływa na opóźnienie lotu. Dłuższe loty będą średnio bardziej opóźnione
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.
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)
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
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ń.