Cleaning data

#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, 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, , 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]

Merging data

# 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)

K-Means Clustering

# 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" ...

Logistic Regression

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

Interpretation:

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

Interpretation:

Fit4 if still better and we fixed it a bit.

Observations

230 + 119 smo jih razvrstili prav!!

  1. The Intercept (-1.831e+14) is Extremely Large (Negative)
  1. Extremely Large Coefficients (1.831e+14) Indicate Perfect Separation
  1. Interpretation of Some Log-Odds Coefficients

Employment (Q46): - Q461 (-2.69) suggests that respondents in this employment category have lower odds of using mobile banking than the reference category. - Other employment categories (Q462, Q463, etc.) have log-odds values ranging between -0.90 and -2.63, indicating a negative effect on mobile banking usage.

Income (Q47): - The coefficient for Q471 (-26.4) is extremely negative, suggesting that people in this income group are almost never using mobile banking. - Similarly, Q472 to Q478 have very large negative values, reinforcing this pattern.

Education (Q48): - All categories of Q48 (education level) have large negative values (e.g., -25.8 to -26.3), meaning higher education levels are associated with lower odds of using mobile banking.

  1. The decrease in deviance (616.6 → 431.3) suggests that the model explains some variance, but:

Overall:

Mislim, da imamo še probleme, ki bi jih morali rešiti, specifično: - Ali imamo perfect separation - Ali imamo še kaj multikolinearnosti (non-converging logarithms) - Ali moramo uporabiti penalized logistic regression (glmnet()) to prevent separation -