V tomto cvičení pracujeme s malou databázou 10 zamestnancov výrobnej firmy.
library(dplyr)
library(knitr)
library(kableExtra)
Zamestnanec <- c("Novák", "Kováčová", "Hrivnák", "Šimek", "Polák",
"Tóthová", "Urban", "Marek", "Klein", "Holubová")
Oddelenie <- c("Výroba", "Administratíva", "Výroba", "Výroba", "Údržba",
"Administratíva", "Údržba", "Výroba", "Administratíva", "Údržba")
DlzkaRoky <- c(6, 3, 8, 2, 10, 4, 5, 1, 2, 7)
TreningHod <- c(30, 20, 40, 15, 45, 25, 35, 10, 18, 38)
PlatEUR <- c(1600, 1300, 1800, 1200, 1900, 1350, 1700, 1150, 1250, 1750)
Vykonnost <- c(85, 74, 90, 68, 95, 77, 88, 65, 70, 91)
udaje <- data.frame(Zamestnanec, Oddelenie, DlzkaRoky, TreningHod, PlatEUR, Vykonnost)
kable(udaje, caption = "Základná databáza pracovníkov") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped","hover"))
Zamestnanec | Oddelenie | DlzkaRoky | TreningHod | PlatEUR | Vykonnost |
---|---|---|---|---|---|
Novák | Výroba | 6 | 30 | 1600 | 85 |
Kováčová | Administratíva | 3 | 20 | 1300 | 74 |
Hrivnák | Výroba | 8 | 40 | 1800 | 90 |
Šimek | Výroba | 2 | 15 | 1200 | 68 |
Polák | Údržba | 10 | 45 | 1900 | 95 |
Tóthová | Administratíva | 4 | 25 | 1350 | 77 |
Urban | Údržba | 5 | 35 | 1700 | 88 |
Marek | Výroba | 1 | 10 | 1150 | 65 |
Klein | Administratíva | 2 | 18 | 1250 | 70 |
Holubová | Údržba | 7 | 38 | 1750 | 91 |
udaje %>%
filter(Vykonnost > 80) %>%
arrange(desc(PlatEUR)) %>%
kable(caption = "Pracovníci s výkonnosťou nad 80, zoradení podľa platu") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped","hover"))
Zamestnanec | Oddelenie | DlzkaRoky | TreningHod | PlatEUR | Vykonnost |
---|---|---|---|---|---|
Polák | Údržba | 10 | 45 | 1900 | 95 |
Hrivnák | Výroba | 8 | 40 | 1800 | 90 |
Holubová | Údržba | 7 | 38 | 1750 | 91 |
Urban | Údržba | 5 | 35 | 1700 | 88 |
Novák | Výroba | 6 | 30 | 1600 | 85 |
udaje %>%
group_by(Oddelenie) %>%
summarise(
PriemerVykon = mean(Vykonnost),
PriemerPlat = mean(PlatEUR),
PriemerTrening = mean(TreningHod),
n = n(),
.groups = "drop"
) %>%
kable(digits = 1, caption = "Priemerné hodnoty podľa oddelení") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped","hover"))
Oddelenie | PriemerVykon | PriemerPlat | PriemerTrening | n |
---|---|---|---|---|
Administratíva | 73.7 | 1300.0 | 21.0 | 3 |
Výroba | 77.0 | 1437.5 | 23.8 | 4 |
Údržba | 91.3 | 1783.3 | 39.3 | 3 |
library(ggplot2)
# Stĺpcový graf
ggplot(udaje, aes(x = Zamestnanec, y = Vykonnost, fill = Oddelenie)) +
geom_col() +
theme_minimal() +
labs(title = "Výkonnosť zamestnancov podľa oddelenia",
x = "Zamestnanec", y = "Výkonnosť (0–100)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(udaje, aes(x = TreningHod, y = Vykonnost, color = Oddelenie)) +
geom_point(size = 3) +
geom_smooth(method = "lm", se = FALSE, linetype = "dashed") +
theme_minimal() +
labs(title = "Vzťah medzi tréningom a výkonnosťou",
x = "Tréningové hodiny", y = "Výkonnosť")
T-test – porovnanie oddelení
t.test(
udaje$Vykonnost[udaje$Oddelenie == "Výroba"],
udaje$Vykonnost[udaje$Oddelenie == "Administratíva"]
)
Welch Two Sample t-test
data: udaje$Vykonnost[udaje$Oddelenie == "Výroba"] and udaje$Vykonnost[udaje$Oddelenie == "Administratíva"]
t = 0.51265, df = 3.6181, p-value = 0.6379
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-15.49634 22.16301
sample estimates:
mean of x mean of y
77.00000 73.66667
Interpretácia: Ak p-hodnota < 0.05 → rozdiel medzi oddeleniami je štatisticky významný. -> nie je štat. významný (0.6379)
Call:
lm(formula = Vykonnost ~ DlzkaRoky + TreningHod, data = udaje)
Residuals:
Min 1Q Median 3Q Max
-1.6642 -0.9590 -0.1071 0.7449 2.6241
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 54.9321 1.9132 28.713 1.6e-08 ***
DlzkaRoky -0.1661 0.7372 -0.225 0.82814
TreningHod 0.9480 0.1836 5.162 0.00131 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.575 on 7 degrees of freedom
Multiple R-squared: 0.9834, Adjusted R-squared: 0.9787
F-statistic: 207.8 on 2 and 7 DF, p-value: 5.849e-07
Interpretácia:
Model ukázal, že tréningové hodiny majú silný a štatisticky významný vplyv na výkonnosť – s každou ďalšou hodinou tréningu sa výkon zvýši približne o 0,95 bodu. Premenná dĺžka zamestnania nemá významný efekt a asi by si mala vyradiť z modelu (+ máme malo ) pričom model ako celok vysvetľuje až 98 % variability výkonnosti pracovníkov.
library(broom)
coef.tbl <- tidy(model, conf.int = TRUE)
coef.tbl %>%
kable(digits = 3, caption = "OLS model: Výkonnosť ~ Dĺžka + Tréning") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped","hover"))
term | estimate | std.error | statistic | p.value | conf.low | conf.high |
---|---|---|---|---|---|---|
(Intercept) | 54.932 | 1.913 | 28.713 | 0.000 | 50.408 | 59.456 |
DlzkaRoky | -0.166 | 0.737 | -0.225 | 0.828 | -1.909 | 1.577 |
TreningHod | 0.948 | 0.184 | 5.162 | 0.001 | 0.514 | 1.382 |