Úvod
V tomto cvičení si precvičíme základné operácie s databázami v
prostredí R – tvorbu dátového rámca, manipuláciu s údajmi pomocou balíka
dplyr, vizualizáciu pomocou ggplot2, a nakoniec aj jednoduchú regresnú
analýzu. Údaje budú simulovať predaj produktov v troch regiónoch.
# Vytvorenie dátového rámca
Produkt <- c("A", "B", "C", "D", "E", "F")
Region <- c("Západ", "Východ", "Sever", "Západ", "Východ", "Sever")
Predaj <- c(120, 150, 130, 170, 160, 110)
Zisk <- c(45, 50, 47, 65, 55, 40)
udaje <- data.frame(Produkt, Region, Predaj, Zisk)
library(knitr)
kable(udaje, caption = "Prehľad údajov o produktoch")
Prehľad údajov o produktoch
A |
Západ |
120 |
45 |
B |
Východ |
150 |
50 |
C |
Sever |
130 |
47 |
D |
Západ |
170 |
65 |
E |
Východ |
160 |
55 |
F |
Sever |
110 |
40 |
Malé cvičenie
Vypočítajte priemerný predaj a priemerný zisk.
mean(udaje$Predaj)
## [1] 140
mean(udaje$Zisk)
## [1] 50.33333
Práca s dplyr
library(dplyr)
# Výber produktov s predajom nad 130
udaje %>%
filter(Predaj > 130) %>%
kable(caption = "Produkty s predajom nad 130") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))
Produkty s predajom nad 130
Produkt
|
Region
|
Predaj
|
Zisk
|
B
|
Východ
|
150
|
50
|
D
|
Západ
|
170
|
65
|
E
|
Východ
|
160
|
55
|
Malé cvičenie
Vyberte iba produkty z regiónu “Západ” a zoradte ich podľa zisku
zostupne.
udaje %>%
filter(Region == "Západ") %>%
arrange(desc(Zisk)) %>%
kable(
caption = "Produkty z regiónu Západ zoradené podľa zisku"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))
Produkty z regiónu Západ zoradené podľa zisku
Produkt
|
Region
|
Predaj
|
Zisk
|
D
|
Západ
|
170
|
65
|
A
|
Západ
|
120
|
45
|
Skupinová sumarizácia
library(kableExtra)
udaje %>%
group_by(Region) %>%
summarise(
PriemernyPredaj = mean(Predaj),
PriemernyZisk = mean(Zisk)
)%>%
kable(digits = 1, caption = "Priemerný predaj a zisk podľa regiónu") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))
Priemerný predaj a zisk podľa regiónu
Region
|
PriemernyPredaj
|
PriemernyZisk
|
Sever
|
120
|
43.5
|
Východ
|
155
|
52.5
|
Západ
|
145
|
55.0
|
Vizualizácia s ggplot2
library(ggplot2)
ggplot(udaje, aes(x = Produkt, y = Predaj, fill = Region)) +
geom_col() +
theme_minimal() +
labs(title = "Predaj produktov podľa regiónu",
x = "Produkt", y = "Predaj (v tisícoch)")
# Malé cvičenie ### Skúste vytvoriť scatter plot, kde na osi X bude
Predaj a na osi Y Zisk. Zvýraznite body farbou podľa regiónu.
ggplot(udaje, aes(x = Predaj, y = Zisk, color = Region)) +
geom_point(size = 3) +
theme_minimal() +
labs(title = "Vzťah medzi predajom a ziskom")
# T-test – porovnanie priemerov #### Predpokladajme, že región Západ a
Východ chceme porovnať z hľadiska predaja:
t.test(
udaje$Predaj[udaje$Region == "Západ"],
udaje$Predaj[udaje$Region == "Východ"]
)
##
## Welch Two Sample t-test
##
## data: udaje$Predaj[udaje$Region == "Západ"] and udaje$Predaj[udaje$Region == "Východ"]
## t = -0.39223, df = 1.0799, p-value = 0.7582
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -282.4661 262.4661
## sample estimates:
## mean of x mean of y
## 145 155
Jednoduchá lineárna regresia
model <- lm(Zisk ~ Predaj, data = udaje)
summary(model)
##
## Call:
## lm(formula = Zisk ~ Predaj, data = udaje)
##
## Residuals:
## 1 2 3 4 5 6
## 1.6667 -3.8333 0.1667 4.1667 -2.3333 0.1667
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.33333 8.50082 0.157 0.88296
## Predaj 0.35000 0.06001 5.832 0.00431 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.175 on 4 degrees of freedom
## Multiple R-squared: 0.8948, Adjusted R-squared: 0.8685
## F-statistic: 34.02 on 1 and 4 DF, p-value: 0.004306
Krajšia tabuľka výsledkov
library(broom)
library(kableExtra)
coef.tbl <- tidy(model, conf.int = TRUE)
coef.tbl %>%
kable(digits = 3, caption = "OLS model: Zisk ~ Predaj") %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))
OLS model: Zisk ~ Predaj
term
|
estimate
|
std.error
|
statistic
|
p.value
|
conf.low
|
conf.high
|
(Intercept)
|
1.333
|
8.501
|
0.157
|
0.883
|
-22.269
|
24.935
|
Predaj
|
0.350
|
0.060
|
5.832
|
0.004
|
0.183
|
0.517
|
Môj návrh použitia novinky
Ako novinku, použijem balík ggcorrplot na vizualizáciu korelačnej
matice medzi číselnými premennými. Tento spôsob graficky znázorňuje, ako
spolu jednotlivé premenné súvisia.
# install.packages("ggcorrplot")
library(ggcorrplot)
num_data <- udaje[, c("Predaj", "Zisk")]
cor_matrix <- cor(num_data)
ggcorrplot(cor_matrix,
lab = TRUE,
colors = c("tomato2", "white", "springgreen3"),
title = "Korelačná matica medzi číselnými premennými")
