A bank.csv táblázat beolvasása bankAdat néven
Argumentumok
bankAdat <- read.csv("bank.csv", header = TRUE, stringsAsFactors = TRUE, encoding = 'UTF-8')
Mik a mezőneveink?
names(bankAdat)
## [1] "Azonosító" "KezdőFizetésUSD" "Nem"
## [4] "Életkor" "JelenlegiFizetésUSD" "IskolázottságÉv"
## [7] "Beosztás"
Rövid összefoglalás az adattábláról
summary(bankAdat)
## Azonosító KezdőFizetésUSD Nem Életkor
## Min. : 626.0 Min. : 3600 férfi:258 20-29:172
## 1st Qu.: 748.2 1st Qu.: 4995 nő :216 30-39:146
## Median : 877.5 Median : 6000 40-49: 62
## Mean : 876.6 Mean : 6806 50-59: 64
## 3rd Qu.:1002.8 3rd Qu.: 6996 60-69: 30
## Max. :1129.0 Max. :31992
## JelenlegiFizetésUSD IskolázottságÉv Beosztás
## Min. : 6300 Min. : 8.00 alkalmazott :427
## 1st Qu.: 9600 1st Qu.:12.00 alsó vezető : 33
## Median :11550 Median :12.00 közép és felső vezető: 14
## Mean :13768 Mean :13.49
## 3rd Qu.:14775 3rd Qu.:15.00
## Max. :54000 Max. :21.00
A jelenlegi fizetéseket tartalmazó oszlopot mentsük el JelFiz néven
JelFiz <- bankAdat$JelenlegiFizetésUSD
A leggyakrabban használt leíró statisztikai funkciók ismertetése
A módusz meghatározásához definiáljunk egy függvényt:
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
Hogyan működik a függvény?
Lépésről lépésre:
uJelFiz <- unique(JelFiz)
head(uJelFiz, 20)
## [1] 10680 8940 16080 11640 41400 8580 21960 19200 13320 28350 7860
## [12] 27250 10500 9900 11340 10620 11220 8700 8760 6960
head(cbind(JelFiz, uJelFiz),20)
## Warning in cbind(JelFiz, uJelFiz): number of rows of result is not a
## multiple of vector length (arg 2)
## JelFiz uJelFiz
## [1,] 10680 10680
## [2,] 8940 8940
## [3,] 16080 16080
## [4,] 11640 11640
## [5,] 41400 41400
## [6,] 8580 8580
## [7,] 21960 21960
## [8,] 19200 19200
## [9,] 13320 13320
## [10,] 28350 28350
## [11,] 7860 7860
## [12,] 27250 27250
## [13,] 10500 10500
## [14,] 9900 9900
## [15,] 11340 11340
## [16,] 16080 10620
## [17,] 10620 11220
## [18,] 11220 8700
## [19,] 7860 8760
## [20,] 8700 6960
match(JelFiz, uJelFiz)
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 16
## [18] 17 11 18 19 20 21 22 23 24 25 26 18 27 28 29 30 25
## [35] 31 32 33 34 6 2 35 36 37 38 39 40 41 40 42 25 35
## [52] 43 44 45 44 6 46 47 48 49 50 51 52 53 16 14 54 55
## [69] 56 57 58 27 59 17 28 16 12 60 35 61 62 9 62 63 4
## [86] 64 65 28 49 66 24 2 21 67 68 16 69 22 35 56 21 70
## [103] 71 72 65 73 74 75 76 25 77 19 68 78 49 79 72 80 81
## [120] 20 82 83 67 84 85 67 86 3 87 88 89 25 70 4 90 91
## [137] 92 70 66 32 15 68 3 91 93 2 94 95 96 97 34 98 99
## [154] 11 48 100 16 24 101 102 58 1 103 67 83 67 104 11 13 2
## [171] 105 106 31 75 71 107 35 49 108 109 110 111 110 17 112 49 67
## [188] 19 113 114 115 25 110 116 117 118 119 38 41 4 120 121 122 38
## [205] 103 63 106 109 44 123 124 125 126 71 27 62 127 71 128 129 36
## [222] 130 131 41 132 133 101 97 85 134 130 135 136 137 138 68 19 78
## [239] 36 139 24 25 35 140 141 45 1 31 124 142 143 129 14 144 32
## [256] 70 78 32 145 146 109 147 129 13 148 149 89 150 151 1 4 15
## [273] 152 32 143 153 154 155 156 11 157 25 42 158 40 159 160 161 101
## [290] 105 155 102 162 163 58 118 39 164 105 19 40 1 165 132 166 167
## [307] 110 126 43 31 52 168 22 13 169 170 82 70 171 144 2 172 85
## [324] 124 130 25 173 13 39 147 174 175 176 139 40 177 21 38 143 74
## [341] 84 49 156 178 45 179 180 181 182 183 184 25 18 185 33 186 62
## [358] 187 58 147 63 188 49 62 22 1 178 1 65 146 189 186 98 190
## [375] 64 25 59 46 52 65 191 32 192 50 193 49 194 195 43 196 197
## [392] 198 199 32 149 13 200 103 63 72 70 201 67 143 14 79 202 203
## [409] 58 9 204 113 205 206 103 39 84 207 208 209 25 210 181 35 84
## [426] 25 75 211 212 213 197 48 63 111 214 215 79 43 72 33 75 11
## [443] 216 179 21 127 13 205 203 147 152 217 52 218 194 219 71 57 50
## [460] 48 101 161 32 216 156 220 84 65 63 188 44 155 221 130
tabulate(match(JelFiz, uJelFiz))
## [1] 7 6 4 5 1 3 1 1 3 1 6 2 7 4 3 5 3 3 5 2 5 4 1
## [24] 4 13 1 3 3 1 1 4 8 3 2 7 3 1 4 4 5 3 2 4 4 3 2
## [47] 1 4 8 3 1 4 1 1 1 2 2 5 2 1 1 5 6 2 5 2 7 4 1
## [70] 6 5 4 1 2 4 1 1 3 3 1 1 2 2 5 3 1 1 1 2 1 2 1
## [93] 1 1 1 1 2 2 1 1 4 2 4 1 3 2 1 1 3 4 2 1 2 1 1
## [116] 1 1 2 1 1 1 1 1 3 1 2 2 1 3 4 1 2 1 1 1 1 1 1
## [139] 2 1 1 1 4 2 1 2 4 1 2 1 1 2 1 1 3 3 1 1 1 1 2
## [162] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 2 1 1 1
## [185] 1 2 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 2 1 1
## [208] 1 1 1 1 1 1 1 1 2 1 1 1 1 1
index <- which.max(tabulate(match(JelFiz, uJelFiz)))
index
## [1] 25
uJelFiz[index]
## [1] 12300
Mode(JelFiz)
## [1] 12300
A medián kiszámítása a median() függvénnyel történik
median(JelFiz)
## [1] 11550
Az átlag vagy számtani közép kiszámítása a mean() függvénnyel
mean(JelFiz)
## [1] 13767.83
A standard szórás kiszámítására rendelkezésre áll az sd() függvény
sd(JelFiz)
## [1] 6830.265
Kiszámíthatjuk sd() és sqrt(length()) függvények hányadosaként
sd(JelFiz) / sqrt(length(JelFiz))
## [1] 313.7244
Vagy használhatjuk a plotrix csomag std.error() függvényét
install.packages("plotrix")
## Installing package into '/home/bea/R/x86_64-pc-linux-gnu-library/3.4'
## (as 'lib' is unspecified)
library(plotrix)
std.error(JelFiz)
## [1] 313.7244
(sd(JelFiz) / sqrt(length(JelFiz)) ) == std.error(JelFiz)
## [1] TRUE
A moments csomagban található kurtosis függvénnyel lehetséges
install.packages("moments")
## Installing package into '/home/bea/R/x86_64-pc-linux-gnu-library/3.4'
## (as 'lib' is unspecified)
library(moments)
kurtosis(JelFiz)
## [1] 8.30863
Szintén a moments csomag függvényét, a skewness()-t használjuk
skewness(JelFiz)
## [1] 2.117877
A range() függvény a vektor legnagyobb és legkisebb elemét tartalmazza
A diff() adja ezek különbségét
range(JelFiz)
## [1] 6300 54000
diff(range(JelFiz))
## [1] 47700
min() és max() (vagy a range() függvény)
min(JelFiz)
## [1] 6300
max(JelFiz)
## [1] 54000
min(JelFiz) == range(JelFiz)[1]
## [1] TRUE
max(JelFiz) == range(JelFiz)[2]
## [1] TRUE
Az összes ismérvérték összegét a sum() függvény adja
sum(JelFiz)
## [1] 6525950
A vektor hosszaként értelmezzük, amit a length() függvény ad meg
length(JelFiz)
## [1] 474
par(mar=c(5,5,1,1)) # A margók beállítása
myPlot = hist(JelFiz, # Az ábrázolni kívánt adathalmaz
xlab="Jelenlegi fizetés (USD)", # Az x tengely felirata
ylab="Gyakoriság (db)", # Az y tengely felirata
main = "1. hisztogram", # A diagram címe
sub = "Forrás: Saját szerkesztés", # Forrás
xlim=c(0,60000), # Az x tengelyen ábrázolt intervallum
ylim=c(0, 225) ) # Az y tengelyen ábrázolt intervallum
A 2. hisztogramhoz a ggplot2 csomag telepítése szükséges
install.packages("ggplot2")
## Installing package into '/home/bea/R/x86_64-pc-linux-gnu-library/3.4'
## (as 'lib' is unspecified)
## also installing the dependencies 'colorspace', 'dichromat', 'munsell', 'labeling', 'gtable', 'plyr', 'reshape2', 'scales'
library(ggplot2)
Az ábrázolás elött határozzuk meg az alkalmazott színeket
szinek <- c("goldenrod2", "darkolivegreen4", "sandybrown")
A következöképpen hozzuk létre az ábrát
ggplot(bankAdat, aes(x=bankAdat$Életkor, fill=bankAdat$Beosztás)) + # Az ábrázolni kívánt adatok
geom_bar(alpha=.5, position="identity", colours=szinek ) + # A plot típusa, és további opciók; alpha: az oszlopok színének telítettsége, position: pontok igazítása átfedés esetén, "identity": a gyakoriságok ugyanazon nullponttól történő ábrázolása
theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) + # címek középre igazítása
labs(title = "2. hisztogram", # Az ábra címe
subtitle = "A jelenlegi fizetések gyakorisági eloszlása beosztás szerinti bontásban", # Alcím
x = "Életkor (Év)", # Az x tengely felirata
y = "Gyakoriság (db)", # Az y tengely felirata
caption = "Forrás: saját szerkesztés") + # Forrás
scale_fill_manual("Beosztás", values = szinek) # A jelmagyarázat felirata és a kitöltöszínek meghatározása
## Warning: Ignoring unknown parameters: colours
Változtassuk meg a használt színeket
szinek <- c("darkolivegreen4", "sandybrown")
ggplot(bankAdat, aes(x=bankAdat$Életkor, fill=bankAdat$Nem)) +
ggtitle("3. hisztogram") +
geom_bar(position="dodge")+ # A plot típusa, és további opciók: position = "dodge" - az oszlopok egymás mellett helyezkednek el
theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) + # címek középre igazítása
labs(title = "3. hisztogram", # Az ábra címe
subtitle = "A jelenlegi fizetések gyakorisági eloszlása nem szerinti bontásban", # Alcím
x = "Életkor (Év)", # Az x tengely felirata
y = "Gyakoriság (db)", # Az y tengely felirata
caption = "Forrás: saját szerkesztés") + # Forrás
scale_fill_manual("Nem", values = szinek) # A jelmagyarázat felirata és a kitöltöszínek meghatározása
ggplot(bankAdat, aes(x=bankAdat$JelenlegiFizetésUSD, fill=bankAdat$Nem)) +
geom_histogram(aes(y = (..count..)/sum(..count..))) + # A plot típusa; y tengely: relatív gyakoriság
theme(plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5)) + # címek középre igazítása
labs(title = "4. hisztogram", # Az ábra címe
subtitle = "A jelenlegi fizetések relatív gyakorisága nem szerinti bontásban", # Alcím
x = "Jelenlegi fizetés (USD)", # Az x tengely felirata
y = "Relatív gyakoriság (%)", # Az y tengely felirata
caption = "Forrás: saját szerkesztés") + # Forrás
scale_fill_manual("Nem", values = szinek) + # A jelmagyarázat felirata és a kitöltöszínek meghatározása
scale_y_continuous(labels=function(x)x*100) # Az y tengely beosztásának %-ra történö módosítása
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.