#install.packages
library(readxl)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
mydata_excel1 <- read_excel("~/Desktop/NLB projekt/Logistična regresija/1ka data.xlsx")
mydata_excel2 <- read_excel("~/Desktop/NLB projekt/Logistična regresija/anketa_končni podatki.xlsx")
mydata_excel2 <- mydata_excel2[-1, ] #Delete first row in which the questions are written
mydata_excel2$ID <- seq(1,nrow(mydata_excel2))
head(mydata_excel1)
## # A tibble: 6 × 62
## Q1 Q21 Q22a Q23a Q23b Q23c Q23d Q23e Q23f Q24 Q25 Q26 Q27a
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 Ali u… Kako… Zave… Skle… Spre… Naro… Spre… Odpr… Skle… Kje … Kako… Ste … V mo…
## 2 1 6 3 1 1 1 1 1 1 2 3 1 1
## 3 1 5 4 1 1 1 1 1 1 1 4 1 1
## 4 1 6 4 2 1 1 1 2 2 2 3 2 0
## 5 1 6 5 1 1 1 1 1 1 1 4 1 0
## 6 1 6 5 1 1 1 1 1 1 1 4 1 0
## # ℹ 49 more variables: Q27b <chr>, Q27c <chr>, Q28 <chr>, Q29a <chr>,
## # Q29b <chr>, Q29c <chr>, Q29d <chr>, Q30a <chr>, Q30b <chr>, Q30c <chr>,
## # Q30d <chr>, Q30e <chr>, Q31a <chr>, Q31b <chr>,
## # `Podpora in usmerjanje` <chr>, Brezskrbnost <chr>, Varnost <chr>,
## # Dostopnost <chr>, Jasnost <chr>, Hitrost <chr>,
## # `Poslovalnica_Podpora in usmerjanje` <chr>,
## # `Mobilna aplikacija_Podpora in usmerjanje` <chr>, …
head(mydata_excel2)
## # A tibble: 6 × 129
## Q1 Q2 Q3 Q4 Q5 Q6a Q6b Q6c Q6d Q6e Q6f Q6g Q6h
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2 1 1 1 1 2 1 1 2 1 2 1 1
## 2 2 1 1 2 -2 -2 -2 -2 -2 -2 -2 -2 -2
## 3 2 1 1 1 2 4 5 5 4 3 5 5 4
## 4 2 1 1 1 2 -3 -3 -3 -3 -3 -3 -3 -3
## 5 2 1 1 1 2 2 3 4 4 1 2 2 3
## 6 2 1 1 1 2 3 2 5 1 1 1 1 1
## # ℹ 116 more variables: Q6i <chr>, Q6j <chr>, Q6j_text <chr>, Q7 <chr>,
## # `Podpora in svetovanje` <chr>,
## # `Zagotavljanje varnosti in zaščita vaših finančnih podatkov ter transakcij` <chr>,
## # `Transparentnost delovanja banke in njenih storitev` <chr>,
## # Priročnost <chr>, `Hitrost in zanesljivost opravljene storitve` <chr>,
## # Q8f <chr>, Q8f_text <chr>, `Poslovalnica_Podpora in svetovanje` <chr>,
## # `Mobilna banka_Podpora in svetovanje` <chr>, …
mydata2 <- mydata_excel2[!(apply(mydata_excel2 == -3, 1, any)), ]
mydata2 <- subset(mydata2, select = -c(Q21:Q40))
mydata2$ID <- seq(1,nrow(mydata2))
head(mydata2)
## # A tibble: 6 × 83
## Q1 Q2 Q3 Q4 Q5 Q6a Q6b Q6c Q6d Q6e Q6f Q6g Q6h
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2 1 1 1 1 2 1 1 2 1 2 1 1
## 2 2 1 1 2 -2 -2 -2 -2 -2 -2 -2 -2 -2
## 3 2 1 1 1 2 4 5 5 4 3 5 5 4
## 4 2 1 1 1 2 2 3 4 4 1 2 2 3
## 5 2 1 1 1 2 3 2 5 1 1 1 1 1
## 6 2 2 2 1 2 5 4 4 5 4 3 5 5
## # ℹ 70 more variables: Q6i <chr>, Q6j <chr>, Q6j_text <chr>, Q7 <chr>,
## # `Podpora in svetovanje` <chr>,
## # `Zagotavljanje varnosti in zaščita vaših finančnih podatkov ter transakcij` <chr>,
## # `Transparentnost delovanja banke in njenih storitev` <chr>,
## # Priročnost <chr>, `Hitrost in zanesljivost opravljene storitve` <chr>,
## # Q8f <chr>, Q8f_text <chr>, `Poslovalnica_Podpora in svetovanje` <chr>,
## # `Mobilna banka_Podpora in svetovanje` <chr>, …
mydata2$Q2 <- factor(mydata2$Q2,
levels = c(1, 2),
labels = c("Yes","No"))
mydata2$Q3 <- factor(mydata2$Q3,
levels = c(1, 2),
labels = c("Yes","No"))
mydata2$Q4 <- factor(mydata2$Q4,
levels = c(1, 2, 3),
labels = c("Yes","No", "I don't know"))
mydata2$Q5 <- factor(mydata2$Q5,
levels = c(1, 2),
labels = c("Yes","No"))
mydata2$Q7 <- factor(mydata2$Q7,
levels = c(1, 2),
labels = c("Yes","No"))
mydata2$Q16a <- factor(mydata2$Q16a,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q16b <- factor(mydata2$Q16b,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q16c <- factor(mydata2$Q16c,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q16d <- factor(mydata2$Q16d,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q16e <- factor(mydata2$Q16e,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q16f <- factor(mydata2$Q16f,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q16g <- factor(mydata2$Q16g,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q41 <- factor(mydata2$Q41,
levels = c(1, 2, 3),
labels = c("Female","Male", "I don't want to answer"))
mydata2$Q43a <- factor(mydata2$Q43a,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43b <- factor(mydata2$Q43b,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43c <- factor(mydata2$Q43c,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43d <- factor(mydata2$Q43d,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43e <- factor(mydata2$Q43e,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43f <- factor(mydata2$Q43f,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43g <- factor(mydata2$Q43g,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q43h <- factor(mydata2$Q43h,
levels = c(1, 0),
labels = c("Selected","Not selected"))
mydata2$Q44 <- factor(mydata2$Q44,
levels = c(2, 6, 1, 4, 3, 5),
labels = c("1.000 – 5.000 habitants","More than 100.000 habitants", "Less than 1.000 habitants", "20.001 – 50.000 habitants", "5.001 – 20.000 habitants", "50.001 – 100.000 habitants"))
mydata2$Q45 <- factor(mydata2$Q45,
levels = c(3, 5, 1, 9, 12, 7, 10, 4, 11, 6),
labels = c("OTP banka d.d.","Banka Intesa Sanpaolo d.d.", "Nova Ljubljanska Banka d.d. (NLB)", "Gorenjska Banka d.d.", "Delavska Hranilnica d.d.", "Revolut", "Deželna Banka Slovenije d.d.", "Banka Sparkasse d.d.", "Addiko Bank d.d.", "UniCredit Banka Slovenija d.d."))
mydata2$Q46 <- factor(mydata2$Q46,
levels = c(1, 2, 3, 5, 6, 4),
labels = c("Študent/-ka","Redno zaposlen/-a", "Upokojen/-a", "Samozaposlen/-a", "Delno zaposlen/-a", "Brezposeln/-a"))
mydata2$Q47 <- factor(mydata2$Q47,
levels = c(1, 5, 3, 8, 2, 4, 6, 7),
labels = c("Pod 1.000€","3.001€ - 5.000€", "1.501€ - 2.000€", "I don't want to answer", "1.000€ - 1.500€", "2.001€ - 3.000€", "5.001€ - 10.000€", "Above 10.000€"))
mydata2$Q48 <- factor(mydata2$Q48,
levels = c(2, 6, 3, 5, 7, 4),
labels = c("Dokončana osnovna šola","Dokončana visokošolska strokovna univerzitetna izobrazba (tudi 2. bolonjska stopnja)", "Dokončana nižja ali srednja poklicna izobrazba", "Dokončana višješolska strokovna ali visokošolska strokovna izobrazba (tudi 1. bolonjska stopnja)", "Dokončana specializacija, znanstveni magisterij, doktorat", "Dokončana srednja strokovna ali splošna izobrazba"))
mydata2$Q49 <- factor(mydata2$Q49,
levels = c(1, 2, 3),
labels = c("Preko linka","Na tablici", "Na listu papirja"))
mydata2[c(6:14, 18:22, 25:39, 48:55, 58:62)] <- mydata2[c(6:14, 18:22, 25:39, 48:55, 58:62)] %>% mutate_all(as.numeric)
mydata2 <- mydata2 %>% mutate(across(where(is.numeric), ~ replace(., . == -2, mean(.[. != -2], na.rm = TRUE))))
mydata2 <- mydata2 %>% mutate(across(where(is.numeric), ~ replace(., is.na(.), mean(., na.rm = TRUE))))
mydata2 <- mydata2 %>%
filter(!ID %in% c(2, 16, 17))
mydata2$ID <- seq(1, nrow(mydata2))
summary(mydata2[c(-1, -15, -16, -23, -24, -47, -56, -57, -63, -64, -66, -75, -78, -83)])
## Q2 Q3 Q4 Q5 Q6a
## Yes :121 Yes :131 Yes :103 Yes : 25 Min. :1.000
## No : 36 No : 26 No : 28 No :132 1st Qu.:3.000
## NA's: 1 NA's: 1 I don't know: 26 NA's: 1 Median :3.000
## NA's : 1 Mean :3.433
## 3rd Qu.:4.000
## Max. :5.000
##
## Q6b Q6c Q6d Q6e
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:1.000
## Median :4.000 Median :4.000 Median :4.000 Median :2.000
## Mean :3.535 Mean :3.847 Mean :3.854 Mean :2.688
## 3rd Qu.:4.000 3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.000
##
## Q6f Q6g Q6h Q6i Q7
## Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000 Yes :82
## 1st Qu.:3.000 1st Qu.:2.000 1st Qu.:2.00 1st Qu.:3.000 No :75
## Median :4.000 Median :3.086 Median :3.00 Median :4.000 NA's: 1
## Mean :3.497 Mean :3.172 Mean :2.93 Mean :3.465
## 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:4.00 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.00 Max. :5.000
##
## Podpora in svetovanje
## Min. :1.00
## 1st Qu.:3.00
## Median :4.00
## Mean :3.79
## 3rd Qu.:4.00
## Max. :5.00
##
## Zagotavljanje varnosti in zaščita vaših finančnih podatkov ter transakcij
## Min. :1.000
## 1st Qu.:4.000
## Median :5.000
## Mean :4.382
## 3rd Qu.:5.000
## Max. :5.000
##
## Transparentnost delovanja banke in njenih storitev Priročnost
## Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000
## Median :4.000 Median :4.000
## Mean :4.108 Mean :3.975
## 3rd Qu.:5.000 3rd Qu.:5.000
## Max. :5.000 Max. :5.000
##
## Hitrost in zanesljivost opravljene storitve Poslovalnica_Podpora in svetovanje
## Min. :1.000 Min. :2.000
## 1st Qu.:4.000 1st Qu.:4.000
## Median :4.000 Median :4.000
## Mean :4.185 Mean :4.006
## 3rd Qu.:5.000 3rd Qu.:5.000
## Max. :5.000 Max. :5.000
##
## Mobilna banka_Podpora in svetovanje
## Min. :1.00
## 1st Qu.:3.00
## Median :3.00
## Mean :3.14
## 3rd Qu.:4.00
## Max. :5.00
##
## Poslovalnica_Zagotavljanje varnosti in zaščita vaših finančnih podatkov ter transakcij
## Min. :2.000
## 1st Qu.:3.986
## Median :4.000
## Mean :3.981
## 3rd Qu.:5.000
## Max. :5.000
##
## Mobilna banka_Zagotavljanje varnosti in zaščita vaših finančnih podatkov ter transakcij
## Min. :1.000
## 1st Qu.:2.000
## Median :3.000
## Mean :3.032
## 3rd Qu.:4.000
## Max. :5.000
##
## Poslovalnica_Transparentnost delovanja banke in njenih storitev
## Min. :1.000
## 1st Qu.:3.000
## Median :4.000
## Mean :3.898
## 3rd Qu.:4.000
## Max. :5.000
##
## Mobilna banka_Transparentnost delovanja banke in njenih storitev
## Min. :1.000
## 1st Qu.:3.000
## Median :3.000
## Mean :3.248
## 3rd Qu.:4.000
## Max. :5.000
##
## Poslovalnica_Priročnost Mobilna banka_Priročnost
## Min. :1.000 Min. :1.000
## 1st Qu.:3.000 1st Qu.:3.000
## Median :4.000 Median :3.000
## Mean :3.752 Mean :3.389
## 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000
##
## Poslovalnica_Hitrost in zanesljivost opravljene storitve
## Min. :1.000
## 1st Qu.:3.000
## Median :4.000
## Mean :3.701
## 3rd Qu.:4.000
## Max. :5.000
##
## Mobilna banka_Hitrost in zanesljivost opravljene storitve Q15a
## Min. :1.000 Min. :1
## 1st Qu.:3.000 1st Qu.:4
## Median :4.000 Median :4
## Mean :3.586 Mean :4
## 3rd Qu.:4.000 3rd Qu.:5
## Max. :5.000 Max. :5
##
## Q15b Q15c Q15d Q15e
## Min. :2.000 Min. :1.000 Min. :1.000 Min. :2.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:3.000 1st Qu.:4.000
## Median :4.000 Median :4.000 Median :4.000 Median :4.000
## Mean :4.134 Mean :4.115 Mean :3.809 Mean :4.127
## 3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:4.000 3rd Qu.:5.000
## Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.000
##
## Q16a Q16b Q16c Q16d
## Selected :98 Selected :66 Selected :68 Selected :79
## Not selected:59 Not selected:91 Not selected:89 Not selected:78
## NA's : 1 NA's : 1 NA's : 1 NA's : 1
##
##
##
##
## Q16e Q16f Q16g Q17a
## Selected : 49 Selected : 36 Selected : 9 Min. :0.000
## Not selected:108 Not selected:121 Not selected:148 1st Qu.:4.000
## NA's : 1 NA's : 1 NA's : 1 Median :4.000
## Mean :3.662
## 3rd Qu.:4.000
## Max. :5.000
##
## Q17b Q17c Q17d Q17e Q18a
## Min. :0.000 Min. :0.000 Min. :0.000 Min. :0.000 Min. :1.00
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:2.000 1st Qu.:4.000 1st Qu.:3.00
## Median :4.000 Median :4.000 Median :4.000 Median :4.000 Median :4.00
## Mean :3.694 Mean :3.758 Mean :3.223 Mean :3.809 Mean :3.35
## 3rd Qu.:4.000 3rd Qu.:4.750 3rd Qu.:4.000 3rd Qu.:5.000 3rd Qu.:4.00
## Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.00
##
## Q18b Q18c Q19a Q19b
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:3.000
## Median :4.000 Median :4.000 Median :3.000 Median :4.000
## Mean :3.732 Mean :3.713 Mean :3.217 Mean :3.548
## 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.000
##
## Q19c Q19d Q19e Q41
## Min. :1.000 Min. :1.000 Min. :1.000 Female :78
## 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:2.000 Male :79
## Median :4.000 Median :4.000 Median :3.000 I don't want to answer: 0
## Mean :3.331 Mean :3.618 Mean :3.051 NA's : 1
## 3rd Qu.:4.000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :5.000 Max. :5.000 Max. :5.000
##
## Q43a Q43b Q43c Q43d
## Selected : 32 Selected : 12 Selected : 5 Selected :81
## Not selected:125 Not selected:145 Not selected:152 Not selected:76
## NA's : 1 NA's : 1 NA's : 1 NA's : 1
##
##
##
##
## Q43e Q43f Q43g Q43h
## Selected : 57 Selected : 1 Selected : 29 Selected : 0
## Not selected:100 Not selected:156 Not selected:128 Not selected:157
## NA's : 1 NA's : 1 NA's : 1 NA's : 1
##
##
##
##
## Q44 Q45
## 1.000 – 5.000 habitants :44 OTP banka d.d. :71
## More than 100.000 habitants:36 Nova Ljubljanska Banka d.d. (NLB):35
## Less than 1.000 habitants :30 Delavska Hranilnica d.d. :12
## 20.001 – 50.000 habitants :14 Banka Intesa Sanpaolo d.d. :10
## 5.001 – 20.000 habitants :22 Deželna Banka Slovenije d.d. : 8
## 50.001 – 100.000 habitants :11 (Other) :18
## NA's : 1 NA's : 4
## Q46 Q47
## Študent/-ka :22 Pod 1.000€ :46
## Redno zaposlen/-a:73 1.000€ - 1.500€:39
## Upokojen/-a :43 2.001€ - 3.000€:29
## Samozaposlen/-a :13 1.501€ - 2.000€:25
## Delno zaposlen/-a: 3 3.001€ - 5.000€: 6
## Brezposeln/-a : 3 (Other) : 4
## NA's : 1 NA's : 9
## Q48
## Dokončana osnovna šola : 8
## Dokončana visokošolska strokovna univerzitetna izobrazba (tudi 2. bolonjska stopnja) :35
## Dokončana nižja ali srednja poklicna izobrazba :23
## Dokončana višješolska strokovna ali visokošolska strokovna izobrazba (tudi 1. bolonjska stopnja):34
## Dokončana specializacija, znanstveni magisterij, doktorat : 5
## Dokončana srednja strokovna ali splošna izobrazba :50
## NA's : 3
## Q49
## Preko linka :84
## Na tablici :37
## Na listu papirja:17
## NA's :20
##
##
##
Q1: Ali uporabljate mobilno aplikacijo banke, kjer imate odprt primarni račun (npr. KlikIn, mBank@Net in podobno)? [1 - Da, 2 - Ne]
Q2: Ali dnevno uporabljate pametni telefon? [1 - Da, 2 - Ne]
Q3: Ali uporabljate internet vsaj nekajkrat na teden? [1 - Da, 2 - Ne]
Q4: Ali je kdo od vaših družinskih članov uporabnik mobilne banke? [1 - Da, 2 - Ne, 3 - Ne vem]
Q5: Ali imate skupni bančni račun, ki ga upravlja en član družine? [1 - Da, 2 - Ne]
Q6: Zakaj ne uporabljate mobilne banke (npr. KlikIn, mBank@Net, Addiko Mobil, …)? [1 - Sploh se ne strinjam, 2 - Se ne strinjam, 3 - Niti se ne strinjam niti se strinjam, 4 - Se strinjam, 5 - Popolnoma se strinjam]
Q7: Se vam zdi, da bi potrebovali dodatno izobraževanje, preden bi lahko uporabljali mobilno banko? [1 - Da, 2 - Ne]
Q8: Kako pomembni so naslednji dejavniki pri odločitvi med poslovalnico ali mobilno aplikacijo? [1 - Sploh ni pomembno, 2 - Ni pomembno, 3 - Niti ni pomembno niti je pomembno, 4 - Je pomembno, 5 - Zelo pomembno]
Q10: Kako zaznavate podporo in svetovanje v poslovalnici in mobilni aplikaciji? [1 - Sploh se ne strinjam, 2 - Se ne strinjam, 3 - Niti niti, 4 - Se strinjam, 5 - Popolnoma se strinjam]
Q11: Kako zaznavate zagotavljanje varnosti in zaščito vaših finančnih podatkov ter transakcij v poslovalnici in mobilni aplikaciji? [1 - Sploh se ne strinjam, 2 - Se ne strinjam, 3 - Niti niti, 4 - Se strinjam, 5 - Popolnoma se strinjam]
Q12: Kako zaznavate transparentnost delovanja banke in njenih storitev v poslovalnici in mobilni aplikaciji? [1 - Sploh se ne strinjam, 2 - Se ne strinjam, 3 - Niti niti, 4 - Se strinjam, 5 - Popolnoma se strinjam]
Q13: Kako zaznavate priročnost (npr. enostavna uporaba, dostopnost od kjerkoli, hitre transakcije) v poslovalnici in mobilni aplikaciji? [1 - Sploh se ne strinjam, 2 - Se ne strinjam, 3 - Niti niti, 4 - Se strinjam, 5 - Popolnoma se strinjam]
Q14: Kako zaznavate zanesljivost opravljene storitve v poslovalnici in mobilni aplikaciji? [1 - Sploh se ne strinjam, 2 - Se ne strinjam, 3 - Niti niti, 4 - Se strinjam, 5 - Popolnoma se strinjam]
Q15: Kako zaskrbljeni ste glede naslednjih tveganj med uporabo mobilnega bančništva? [1 - Sploh me ne skrbi, 2 - Me ne skrbi, 3 - Niti me ne skrbi niti me skrbi, 4 - Me skrbi, 5 - Zelo me skrbi]
Q16: Kateri izmed spodaj navedenih dejavnikov bi vam omogočili večje zaupanje v mobilno bančništvo? [Izbira več možnih odgovorov]
Q17: Kako koristne bi se vam zdele naslednje funkcije v aplikaciji za mobilno bančništvo? [1 - Sploh ni koristna, 2 - Ni koristna, 3 - Niti ni koristna niti je koristna, 4 - Je koristna, 5 - Izjemno koristna]
Q18: Kateri finančni spodbudni ukrepi bi vas spodbudili k uporabi mobilnega bančništva? [1 - Sploh me ne bi spodbudilo, 2 - Ne bi me spodbudilo, 3 - Niti niti, 4 - Bi me spodbudilo, 5 - Zelo bi me spodbudilo]
Q19: Kateri nefinančni spodbudni ukrepi bi vas spodbudili k uporabi mobilnega bančništva? [1 - Sploh me ne bi spodbudilo, 2 - Ne bi me spodbudilo, 3 - Niti niti, 4 - Bi me spodbudilo, 5 - Zelo bi me spodbudilo]
Q41: Spol [1 - Ženska, 2 - Moški, 3 - Ne želim odgovoriti]
Q42: Prosimo, vpišite leto rojstva. [Odprto besedilo]
Q43: S kom živite v istem gospodinjstvu? [Izbira več možnih odgovorov]
Q44: Koliko prebivalcev živi v kraju, kjer prebivate? [1 - Manj kot 1.000 prebivalcev, 2 - 1.000–5.000 prebivalcev, 3 - 5.001–20.000 prebivalcev, 4 - 20.001–50.000 prebivalcev, 5 - 50.001–100.000 prebivalcev, 6 - Več kot 100.000 prebivalcev]
Q45: Katera je vaša primarna banka? [1 - Nova Ljubljanska Banka d.d. (NLB), 2 - BKS Bank AG, Bančna podružnica, 3 - OTP banka d.d., 4 - Banka Sparkasse d.d., 5 - Banka Intesa Sanpaolo d.d., 6 - UniCredit Banka Slovenija d.d., 7 - Revolut, 8 - N26, 9 - Gorenjska Banka d.d., 10 - Deželna Banka Slovenije d.d., 11 - Addiko Bank d.d., 12 - Delavska Hranilnica d.d., 13 - Drugo]
Q46: Kakšna je vaša trenutna zaposlitev? [1 - Študent/ka, 2 - Redno zaposlen/a, 3 - Upokojen/a, 4 - Brezposeln/a, 5 - Samozaposlen/a, 6 - Delno zaposlen/a]
Q47: Kakšen je vaš mesečni neto prihodek? [1 - Pod 1.000€, 2 - 1.000€–1.500€, 3 - 1.501€–2.000€, 4 - 2.001€–3.000€, 5 - 3.001€–5.000€, 6 - 5.001€–10.000€, 7 - Nad 10.000€, 8 - Ne želim odgovoriti]
Q48: Kakšna je vaša stopnja izobrazbe? [1 - Nedokončana osnovna šola, 2 - Dokončana osnovna šola, 3 - Dokončana nižja ali srednja poklicna izobrazba, 4 - Dokončana srednja strokovna ali splošna izobrazba, 5 - Dokončana višješolska strokovna ali visokošolska strokovna izobrazba (tudi 1. bolonjska stopnja), 6 - Dokončana visokošolska strokovna ali univerzitetna izobrazba (tudi 2. bolonjska stopnja), 7 - Dokončana specializacija, znanstveni magisterij ali doktorat]
Q49: Kako ste rešili anketo? [1 - Preko linka, 2 - Na tablici, 3 - Na listu papirja]
# Keep only specific columns (replace with actual column names)
data1_log_reg <- mydata_excel1 %>% select(Q1, Q41, Q42, Q43a, Q43b, Q43c, Q43d, Q43e, Q43f, Q43g, Q43h, Q44, Q45, Q46, Q47, Q48)
data2_log_reg <- mydata_excel2 %>% select(Q1, Q41, Q42, Q43a, Q43b, Q43c, Q43d, Q43e, Q43f, Q43g, Q43h, Q44, Q45, Q46, Q47, Q48)
merged_data_log_reg <- rbind(data1_log_reg, data2_log_reg)
# Rename columns using colnames()
colnames(merged_data_log_reg) <- c("Ali uporabljate mobilno aplikacijo","Spol","Leto rojstva","Živim s starši","Živim s sorojenci","Živim s sorodniki","Živim s partnerko/jem", "Živim z otroki", "Živim s skrbnikom", "Živim sam/a", "Drugo", "Št. prebivalcev v kraju bivanja", "Primarna banka", "Trenutna zaposlitev", "Mesečni neto prihodek", "Stopnja izobrazbe")
# View first few rows
head(merged_data_log_reg)
## # A tibble: 6 × 16
## `Ali uporabljate mobilno aplikacijo` Spol `Leto rojstva` `Živim s starši`
## <chr> <chr> <chr> <chr>
## 1 Ali uporabljate mobilno aplikacijo bank… Spol Prosimo, vpiš… S starši
## 2 1 2 2000 1
## 3 1 2 1998 0
## 4 1 2 2001 1
## 5 1 2 1994 0
## 6 1 2 2000 1
## # ℹ 12 more variables: `Živim s sorojenci` <chr>, `Živim s sorodniki` <chr>,
## # `Živim s partnerko/jem` <chr>, `Živim z otroki` <chr>,
## # `Živim s skrbnikom` <chr>, `Živim sam/a` <chr>, Drugo <chr>,
## # `Št. prebivalcev v kraju bivanja` <chr>, `Primarna banka` <chr>,
## # `Trenutna zaposlitev` <chr>, `Mesečni neto prihodek` <chr>,
## # `Stopnja izobrazbe` <chr>
# Remove the first row
merged_data_log_reg1 <- merged_data_log_reg[-1, ]
merged_data_clean <- merged_data_log_reg1 %>%
filter(complete.cases(.)) # Removes rows with any NAs
# Automatically calculate age and assign age groups
merged_data_clean <- merged_data_clean %>%
mutate(
`Leto rojstva` = as.numeric(as.character(`Leto rojstva`)), # Convert to numeric (handles factors & characters)
age = as.numeric(format(Sys.Date(), "%Y")) - `Leto rojstva`, # Calculate age
age_group = case_when(
age <= 27 ~ "Young",
age > 27 & age <= 65 ~ "Professional",
age > 65 ~ "Older"))
# View first few rows
head(merged_data_clean)
## # A tibble: 6 × 18
## `Ali uporabljate mobilno aplikacijo` Spol `Leto rojstva` `Živim s starši`
## <chr> <chr> <dbl> <chr>
## 1 1 2 2000 1
## 2 1 2 1998 0
## 3 1 2 2001 1
## 4 1 2 1994 0
## 5 1 2 2000 1
## 6 1 2 2004 1
## # ℹ 14 more variables: `Živim s sorojenci` <chr>, `Živim s sorodniki` <chr>,
## # `Živim s partnerko/jem` <chr>, `Živim z otroki` <chr>,
## # `Živim s skrbnikom` <chr>, `Živim sam/a` <chr>, Drugo <chr>,
## # `Št. prebivalcev v kraju bivanja` <chr>, `Primarna banka` <chr>,
## # `Trenutna zaposlitev` <chr>, `Mesečni neto prihodek` <chr>,
## # `Stopnja izobrazbe` <chr>, age <dbl>, age_group <chr>
# Convert a specific column to numeric
merged_data_clean <- merged_data_clean %>%
mutate(across(c(`Živim s starši`, `Živim s sorojenci`, `Živim s sorodniki`, `Živim s partnerko/jem`, `Živim z otroki`, `Živim s skrbnikom`, `Živim sam/a`, `Drugo`, `age`),
~ as.numeric(as.character(.))))
str(merged_data_clean)
## tibble [454 × 18] (S3: tbl_df/tbl/data.frame)
## $ Ali uporabljate mobilno aplikacijo: chr [1:454] "1" "1" "1" "1" ...
## $ Spol : chr [1:454] "2" "2" "2" "2" ...
## $ Leto rojstva : num [1:454] 2000 1998 2001 1994 2000 ...
## $ Živim s starši : num [1:454] 1 0 1 0 1 1 0 0 0 0 ...
## $ Živim s sorojenci : num [1:454] 0 0 0 0 1 0 0 0 0 0 ...
## $ Živim s sorodniki : num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Živim s partnerko/jem : num [1:454] 0 1 0 1 0 0 1 0 1 1 ...
## $ Živim z otroki : num [1:454] 0 0 0 0 0 0 0 0 1 0 ...
## $ Živim s skrbnikom : num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Živim sam/a : num [1:454] 0 0 0 0 0 0 0 1 0 0 ...
## $ Drugo : num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Št. prebivalcev v kraju bivanja : chr [1:454] "2" "6" "2" "6" ...
## $ Primarna banka : chr [1:454] "3" "3" "1" "12" ...
## $ Trenutna zaposlitev : chr [1:454] "2" "2" "2" "5" ...
## $ Mesečni neto prihodek : chr [1:454] "2" "3" "2" "6" ...
## $ Stopnja izobrazbe : chr [1:454] "2" "4" "3" "5" ...
## $ age : num [1:454] 25 27 24 31 25 21 28 23 39 23 ...
## $ age_group : chr [1:454] "Young" "Young" "Young" "Professional" ...
merged_data_clean <- merged_data_clean %>%
mutate(`Ali uporabljate mobilno aplikacijo` = ifelse(`Ali uporabljate mobilno aplikacijo` == 1, 0, ifelse(!1 == 2, 1, V1)))
print(merged_data_clean)
## # A tibble: 454 × 18
## `Ali uporabljate mobilno aplikacijo` Spol `Leto rojstva` `Živim s starši`
## <dbl> <chr> <dbl> <dbl>
## 1 0 2 2000 1
## 2 0 2 1998 0
## 3 0 2 2001 1
## 4 0 2 1994 0
## 5 0 2 2000 1
## 6 0 2 2004 1
## 7 0 1 1997 0
## 8 0 2 2002 0
## 9 0 2 1986 0
## 10 0 1 2002 0
## # ℹ 444 more rows
## # ℹ 14 more variables: `Živim s sorojenci` <dbl>, `Živim s sorodniki` <dbl>,
## # `Živim s partnerko/jem` <dbl>, `Živim z otroki` <dbl>,
## # `Živim s skrbnikom` <dbl>, `Živim sam/a` <dbl>, Drugo <dbl>,
## # `Št. prebivalcev v kraju bivanja` <chr>, `Primarna banka` <chr>,
## # `Trenutna zaposlitev` <chr>, `Mesečni neto prihodek` <chr>,
## # `Stopnja izobrazbe` <chr>, age <dbl>, age_group <chr>
fit0 <- glm(`Ali uporabljate mobilno aplikacijo` ~ 1, #Dependent and explanatory variables
family = binomial, #Binary logistic regression
data = merged_data_clean)
summary(fit0)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ 1, family = binomial,
## data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.33798 0.09521 -3.55 0.000385 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 616.6 on 453 degrees of freedom
## Residual deviance: 616.6 on 453 degrees of freedom
## AIC: 618.6
##
## Number of Fisher Scoring iterations: 4
exp(cbind(odds = fit0$coefficients, confint.default(fit0))) #Odds for Y=1
## odds 2.5 % 97.5 %
## (Intercept) 0.7132075 0.5917995 0.8595225
head(fitted(fit0)) #Estimated probability for Y=1
## 1 2 3 4 5 6
## 0.4162996 0.4162996 0.4162996 0.4162996 0.4162996 0.4162996
fit1 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit1)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age, family = binomial,
## data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.854603 0.305414 -9.347 <2e-16 ***
## age 0.056008 0.006648 8.425 <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: 616.6 on 453 degrees of freedom
## Residual deviance: 477.3 on 452 degrees of freedom
## AIC: 481.3
##
## Number of Fisher Scoring iterations: 8
exp(cbind(odds = fit1$coefficients, confint.default(fit1))) #Odds for Y=1
## odds 2.5 % 97.5 %
## (Intercept) 0.05757866 0.03164411 0.1047684
## age 1.05760659 1.04391609 1.0714766
head(fitted(fit1)) #Estimated probability for Y=1
## 1 2 3 4 5 6
## 0.1893264 0.2071196 0.1808794 0.2463189 0.1893264 0.1573040
#Ifelse za vprašanje s kom živijo
merged_data_clean <- merged_data_clean %>%
mutate(
# Create a text column listing all people they live with
S_kom_živijo = paste0(
ifelse(`Živim s starši` == 1, "Živim s starši, ", ""),
ifelse(`Živim s sorojenci` == 1, "Živim s sorojenci, ", ""),
ifelse(`Živim s sorodniki` == 1, "Živim s sorodniki, ", ""),
ifelse(`Živim s partnerko/jem` == 1, "Živim s partnerko/jem, ", ""),
ifelse(`Živim z otroki` == 1, "Živim z otroki, ", ""),
ifelse(`Živim s skrbnikom` == 1, "Živim s skrbnikom, ", ""),
ifelse(`Drugo` == 1, "Drugo, ", "")
),
S_kom_živijo = sub(", $", "", S_kom_živijo), # Remove trailing comma
# Categorize into "Lives alone" or "Lives with others"
Kako_živijo = ifelse(`Živim sam/a` == 1, "Živi sam", "Živi z drugimi")
)
anova(fit0, fit1, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ 1
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 453 616.6
## 2 452 477.3 1 139.29 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
exp(cbind(OR = fit1$coefficients, confint.default(fit1))) #Odds ratio for Y=1 (with 95% CI)
## OR 2.5 % 97.5 %
## (Intercept) 0.05757866 0.03164411 0.1047684
## age 1.05760659 1.04391609 1.0714766
merged_data_clean <- merged_data_clean %>%
mutate(across(c(`Št. prebivalcev v kraju bivanja`, `Trenutna zaposlitev`, `Mesečni neto prihodek`, `Stopnja izobrazbe`),
~ as.numeric(as.character(.))))
str(merged_data_clean)
## tibble [454 × 20] (S3: tbl_df/tbl/data.frame)
## $ Ali uporabljate mobilno aplikacijo: num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Spol : chr [1:454] "2" "2" "2" "2" ...
## $ Leto rojstva : num [1:454] 2000 1998 2001 1994 2000 ...
## $ Živim s starši : num [1:454] 1 0 1 0 1 1 0 0 0 0 ...
## $ Živim s sorojenci : num [1:454] 0 0 0 0 1 0 0 0 0 0 ...
## $ Živim s sorodniki : num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Živim s partnerko/jem : num [1:454] 0 1 0 1 0 0 1 0 1 1 ...
## $ Živim z otroki : num [1:454] 0 0 0 0 0 0 0 0 1 0 ...
## $ Živim s skrbnikom : num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Živim sam/a : num [1:454] 0 0 0 0 0 0 0 1 0 0 ...
## $ Drugo : num [1:454] 0 0 0 0 0 0 0 0 0 0 ...
## $ Št. prebivalcev v kraju bivanja : num [1:454] 2 6 2 6 2 3 6 6 1 4 ...
## $ Primarna banka : chr [1:454] "3" "3" "1" "12" ...
## $ Trenutna zaposlitev : num [1:454] 2 2 2 5 2 1 2 1 2 1 ...
## $ Mesečni neto prihodek : num [1:454] 2 3 2 6 3 8 4 6 4 2 ...
## $ Stopnja izobrazbe : num [1:454] 2 4 3 5 6 4 6 1 6 5 ...
## $ age : num [1:454] 25 27 24 31 25 21 28 23 39 23 ...
## $ age_group : chr [1:454] "Young" "Young" "Young" "Professional" ...
## $ S_kom_živijo : chr [1:454] "Živim s starši" "Živim s partnerko/jem" "Živim s starši" "Živim s partnerko/jem" ...
## $ Kako_živijo : chr [1:454] "Živi z drugimi" "Živi z drugimi" "Živi z drugimi" "Živi z drugimi" ...
fit2 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Trenutna zaposlitev` + `Stopnja izobrazbe`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit2)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age + `Trenutna zaposlitev` +
## `Stopnja izobrazbe`, family = binomial, data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.701673 0.547710 -3.107 0.00189 **
## age 0.050893 0.007328 6.945 3.79e-12 ***
## `Trenutna zaposlitev` 0.196965 0.105319 1.870 0.06146 .
## `Stopnja izobrazbe` -0.287442 0.096975 -2.964 0.00304 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 616.60 on 453 degrees of freedom
## Residual deviance: 464.89 on 450 degrees of freedom
## AIC: 472.89
##
## Number of Fisher Scoring iterations: 8
exp(cbind(odds = fit2$coefficients, confint.default(fit2))) #Odds for Y=1
## odds 2.5 % 97.5 %
## (Intercept) 0.1823781 0.06233915 0.5335618
## age 1.0522105 1.03720513 1.0674329
## `Trenutna zaposlitev` 1.2177018 0.99058923 1.4968844
## `Stopnja izobrazbe` 0.7501804 0.62032616 0.9072174
head(fitted(fit2)) #Estimated probability for Y=1
## 1 2 3 4 5 6
## 0.3519916 0.2528644 0.2791602 0.3597691 0.1467825 0.1699873
fit3 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit3)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja`,
## family = binomial, data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.15225 0.36578 -5.884 4.01e-09 ***
## age 0.05557 0.00672 8.269 < 2e-16 ***
## `Št. prebivalcev v kraju bivanja` -0.18964 0.06041 -3.139 0.0017 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 616.60 on 453 degrees of freedom
## Residual deviance: 467.22 on 451 degrees of freedom
## AIC: 473.22
##
## Number of Fisher Scoring iterations: 8
exp(cbind(odds = fit0$coefficients, confint.default(fit3))) #Odds for Y=1
## odds 2.5 % 97.5 %
## (Intercept) 0.7132075 0.05674606 0.2380390
## age 0.7132075 1.04330711 1.0711543
## `Št. prebivalcev v kraju bivanja` 0.7132075 0.73487957 0.9312491
head(fitted(fit3)) #Estimated probability for Y=1
## 1 2 3 4 5 6
## 0.2418862 0.1430987 0.2318432 0.1725698 0.2418862 0.1744705
fit4 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` + `Mesečni neto prihodek` + `Kako_živijo`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit4)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Mesečni neto prihodek` + Kako_živijo, family = binomial,
## data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.764016 0.490624 -3.595 0.000324 ***
## age 0.070261 0.008148 8.624 < 2e-16 ***
## `Št. prebivalcev v kraju bivanja` -0.138284 0.065225 -2.120 0.033995 *
## `Mesečni neto prihodek` -0.430912 0.080001 -5.386 7.19e-08 ***
## Kako_živijoŽivi z drugimi -0.022689 0.316948 -0.072 0.942930
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 616.60 on 453 degrees of freedom
## Residual deviance: 429.85 on 449 degrees of freedom
## AIC: 439.85
##
## Number of Fisher Scoring iterations: 9
exp(cbind(odds = fit4$coefficients, confint.default(fit4))) #Odds for Y=1
## odds 2.5 % 97.5 %
## (Intercept) 0.1713553 0.06550553 0.4482469
## age 1.0727887 1.05579340 1.0900575
## `Št. prebivalcev v kraju bivanja` 0.8708510 0.76634555 0.9896077
## `Mesečni neto prihodek` 0.6499163 0.55559719 0.7602472
## Kako_živijoŽivi z drugimi 0.9775660 0.52524176 1.8194199
head(fitted(fit4)) #Estimated probability for Y=1
## 1 2 3 4 5 6
## 0.23711529 0.11793973 0.22464111 0.04636325 0.16805540 0.01516684
fit5 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` + `Trenutna zaposlitev` + `Mesečni neto prihodek` + `Stopnja izobrazbe` + `Kako_živijo`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit5)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Trenutna zaposlitev` + `Mesečni neto prihodek` + `Stopnja izobrazbe` +
## Kako_živijo, family = binomial, data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.612760 0.701152 -2.300 0.0214 *
## age 0.064432 0.008697 7.409 1.27e-13 ***
## `Št. prebivalcev v kraju bivanja` -0.119564 0.066382 -1.801 0.0717 .
## `Trenutna zaposlitev` 0.189542 0.111978 1.693 0.0905 .
## `Mesečni neto prihodek` -0.416846 0.082512 -5.052 4.37e-07 ***
## `Stopnja izobrazbe` -0.082033 0.111749 -0.734 0.4629
## Kako_živijoŽivi z drugimi -0.052886 0.319491 -0.166 0.8685
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 616.60 on 453 degrees of freedom
## Residual deviance: 426.56 on 447 degrees of freedom
## AIC: 440.56
##
## Number of Fisher Scoring iterations: 9
anova(fit0, fit1, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ 1
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 453 616.6
## 2 452 477.3 1 139.29 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit1, fit2, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ age
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age + `Trenutna zaposlitev` +
## `Stopnja izobrazbe`
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 452 477.30
## 2 450 464.89 2 12.418 0.002011 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit2, fit3, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ age + `Trenutna zaposlitev` +
## `Stopnja izobrazbe`
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja`
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 450 464.89
## 2 451 467.22 -1 -2.3373 0.1263
anova(fit2, fit4, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ age + `Trenutna zaposlitev` +
## `Stopnja izobrazbe`
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Mesečni neto prihodek` + Kako_živijo
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 450 464.89
## 2 449 429.85 1 35.037 3.235e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit4, fit5, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Mesečni neto prihodek` + Kako_živijo
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Trenutna zaposlitev` + `Mesečni neto prihodek` + `Stopnja izobrazbe` +
## Kako_živijo
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 449 429.85
## 2 447 426.56 2 3.2913 0.1929
Glede na teste je najboljši fit4:
Ali uporabljate mobilno aplikacijo~ age +Št. prebivalcev
v kraju bivanja+Mesečni neto prihodek` + Kako_živijo
# Extract standardized residuals and Cook's distance from fit5
merged_data_clean$StdResid <- rstandard(fit4) # Standardized residuals
merged_data_clean$Cook <- cooks.distance(fit4) # Cook's distance
# Plot histogram of standardized residuals
hist(merged_data_clean$StdResid,
main = "Histogram of Standardized Residuals for fit5",
ylab = "Frequency",
xlab = "Standardized Residuals")
# Ensure ID exists
if (!"ID" %in% colnames(merged_data_clean)) {
merged_data_clean$ID <- seq_len(nrow(merged_data_clean))
}
# Display the most influential observations (highest Cook's distance)
head(merged_data_clean[order(-merged_data_clean$Cook), c("ID", "Cook")])
## # A tibble: 6 × 2
## ID Cook
## <int> <dbl>
## 1 191 0.0453
## 2 440 0.0406
## 3 446 0.0299
## 4 240 0.0278
## 5 254 0.0247
## 6 313 0.0233
We have 2 high impact values and no outliers. So we dropped the high impact values.
library(dplyr)
merged_data_clean <- merged_data_clean %>%
filter(ID != 191 & ID != 440)
fit4 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` + `Mesečni neto prihodek` + `Kako_živijo`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit4)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Mesečni neto prihodek` + Kako_živijo, family = binomial,
## data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.796374 0.497717 -3.609 0.000307 ***
## age 0.075568 0.008601 8.786 < 2e-16 ***
## `Št. prebivalcev v kraju bivanja` -0.153154 0.066656 -2.298 0.021581 *
## `Mesečni neto prihodek` -0.479402 0.084560 -5.669 1.43e-08 ***
## Kako_živijoŽivi z drugimi -0.033916 0.323398 -0.105 0.916475
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 613.77 on 451 degrees of freedom
## Residual deviance: 416.14 on 447 degrees of freedom
## AIC: 426.14
##
## Number of Fisher Scoring iterations: 9
fit5 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` + `Trenutna zaposlitev` + `Mesečni neto prihodek` + `Stopnja izobrazbe` + `Kako_živijo`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(fit5)
##
## Call:
## glm(formula = `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Trenutna zaposlitev` + `Mesečni neto prihodek` + `Stopnja izobrazbe` +
## Kako_živijo, family = binomial, data = merged_data_clean)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.51073 0.71488 -2.113 0.0346 *
## age 0.06945 0.00914 7.598 3.01e-14 ***
## `Št. prebivalcev v kraju bivanja` -0.13166 0.06781 -1.942 0.0522 .
## `Trenutna zaposlitev` 0.19727 0.11369 1.735 0.0827 .
## `Mesečni neto prihodek` -0.45884 0.08663 -5.296 1.18e-07 ***
## `Stopnja izobrazbe` -0.11475 0.11514 -0.997 0.3190
## Kako_živijoŽivi z drugimi -0.07165 0.32656 -0.219 0.8263
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 613.77 on 451 degrees of freedom
## Residual deviance: 412.29 on 445 degrees of freedom
## AIC: 426.29
##
## Number of Fisher Scoring iterations: 9
anova(fit4, fit5, test = "Chi") #Comparision of models based on -2LL statistics
## Analysis of Deviance Table
##
## Model 1: `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Mesečni neto prihodek` + Kako_živijo
## Model 2: `Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` +
## `Trenutna zaposlitev` + `Mesečni neto prihodek` + `Stopnja izobrazbe` +
## Kako_živijo
## Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1 447 416.14
## 2 445 412.29 2 3.851 0.1458
Fit4 if still better and we fixed it a bit.
# Ensure the dependent variable is a factor (assuming LatePayF is the outcome variable)
merged_data_clean$`Ali uporabljate mobilno aplikacijo` <- as.factor(merged_data_clean$`Ali uporabljate mobilno aplikacijo`)
# Fit logistic regression model (use actual predictors from your RPubs model)
fit4 <- glm(`Ali uporabljate mobilno aplikacijo` ~ age + `Št. prebivalcev v kraju bivanja` + `Mesečni neto prihodek` + `Kako_živijo`,
family = binomial,
data = merged_data_clean)
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
# Generate predicted probabilities (Estimated Probability)
merged_data_clean <- merged_data_clean %>%
mutate(EstProb = predict(fit4, type = "response"))
# Classify based on probability threshold (0.50)
merged_data_clean <- merged_data_clean %>%
mutate(Classification = ifelse(EstProb < 0.50, "NO", "YES"),
ClassificationF = factor(Classification, levels = c("NO", "YES")))
# Create the classification table
ClassificationTable <- table(merged_data_clean$`Ali uporabljate mobilno aplikacijo`, merged_data_clean$ClassificationF)
# Display classification table
print(ClassificationTable)
##
## NO YES
## 0 234 30
## 1 65 123
# Compute Pseudo R² (Proportion of correctly classified cases)
Pseudo_R2_fit4 <- sum(diag(ClassificationTable)) / nrow(merged_data_clean)
# Display Pseudo R²
Pseudo_R2_fit4
## [1] 0.789823
Age: A positive and highly significant effect on mobile app usage (p < 0.001). This suggests that as age increases, the likelihood of using a mobile application also increases.
Population of Place of Residence: A negative and significant impact (p < 0.05), implying that individuals from larger population areas are less likely to use mobile applications.
Monthly Net Income: Also negatively associated with app usage (p < 0.001), indicating that individuals with higher incomes are less likely to use mobile applications.
Living Situation (“Kako živijo”): The variable was not statistically significant, meaning that whether someone lives alone or with others does not strongly predict mobile app usage.
Employment Status and Education Level: When added in Model 2 (fit5), these factors did not significantly improve model performance (p = 0.1458 in the Chi-square test), suggesting they may not be strong predictors.
Fit4 vs. Fit5: The simpler model (fit4) performed slightly better, and adding employment status and education level did not significantly improve the fit.
Classification Performance: The logistic regression model achieved 78.98% accuracy, indicating a good ability to distinguish between app users and non-users.
Potential Issues: The warning message (glm.fit: fitted probabilities numerically 0 or 1 occurred) suggests some separation in the data, meaning some observations were perfectly predicted, which could affect model reliability.
The final model (fit4) provides a solid explanation of mobile app usage patterns.
The strong role of age, population size, and income aligns with expectations—older individuals and those in smaller towns tend to use apps more, while higher-income individuals might be less dependent on them.
Addressing the perfect separation issue (perhaps by regularization techniques like ridge regression or handling outliers) could enhance the model’s robustness.
#and we take a bow