Príprava databázy a pamäte (Workspace)
Na začiatku si načítame knižnice. Oproti minulému cvičeniu pridávame knižnice dplyr pre úpravu tabuliek, tseries pre test normality a car pre test odľahlých hodnôt.
library (broom)
library (knitr)
library (kableExtra)
library (ggplot2)
library (dplyr)
library (tseries)
library (car)
udaje <- read.csv ("Dataset ESG and Firm Performance.csv" , sep = ";" , dec = "." ,
na.strings = c ("" , "NA" ), check.names = FALSE , stringsAsFactors = FALSE )
names (udaje) <- make.names (trimws (names (udaje)), unique = TRUE )
udaje.2021 <- udaje[! is.na (udaje$ YEARS) & udaje$ YEARS == 2021 ,
c ("COMPANIES" , "RETURN.ON.ASSETS" , "ESG.INDEX" , "FIRM.SIZE" , "DEBT.TO.ASSET" )]
premenne_num <- c ("RETURN.ON.ASSETS" , "ESG.INDEX" , "FIRM.SIZE" , "DEBT.TO.ASSET" )
udaje.2021 [premenne_num] <- lapply (udaje.2021 [premenne_num], as.numeric)
udaje.2021 <- na.omit (udaje.2021 )
save.image ("pamat_esg.Rdata" )
pomocna_premenna <- "text"
rm (pomocna_premenna)
# Takto by sme mohli načítať uloženú pamäť v budúcnosti:
# load("pamat_esg.Rdata")
model <- lm (RETURN.ON.ASSETS ~ ESG.INDEX + FIRM.SIZE + DEBT.TO.ASSET, data = udaje.2021 )
tidy (model) |>
mutate (
Significance = case_when (
p.value < 0.001 ~ "***" ,
p.value < 0.01 ~ "**" ,
p.value < 0.05 ~ "*" ,
p.value < 0.10 ~ "." ,
TRUE ~ ""
)
) |>
kable (
digits = 4 ,
col.names = c ("Premenná" , "Odhad (Estimate)" , "Štand. chyba" , "t-hodnota" , "p-hodnota" , "Významnosť" ),
caption = "Regresné koeficienty a ich štatistická významnosť" ,
escape = TRUE
) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
Regresné koeficienty a ich štatistická významnosť
(Intercept)
-148.1738
147.5418
-1.0043
0.3186
ESG.INDEX
73.4415
108.2526
0.6784
0.4997
FIRM.SIZE
17.2677
21.2007
0.8145
0.4181
DEBT.TO.ASSET
-0.3173
0.3712
-0.8549
0.3954
glance (model) |>
select (- deviance) |>
kable (
digits = 4 ,
col.names = c ("R-kvadrát" , "Upravený R²" , "Sigma" , "F-štatistika" , "p-hodnota (F)" , "df" , "logLik" , "AIC" , "BIC" , "df.residual" , "N" ),
caption = "Súhrnné charakteristiky kvality modelu"
) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
Súhrnné charakteristiky kvality modelu
0.0502
0.0106
148.1717
1.2685
0.2917
3
-485.661
981.3221
992.9758
72
76
par (mfrow = c (2 , 2 ))
plot (model)
res <- residuals (model)
jb_test <- jarque.bera.test (res)
tidy (jb_test) |>
select (statistic, p.value, method) |>
kable (digits = 4 , col.names = c ("JB štatistika" , "p-hodnota" , "Názov testu" ), caption = "Test normality rezíduí" ) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
Test normality rezíduí
4377.745
0
Jarque Bera Test
outlier_test <- outlierTest (model)
if (is.null (outlier_test)) {
cat ("Nenašli sa žiadne odľahlé hodnoty." )
} else {
outlier_table <- data.frame (
Pozorovanie = names (outlier_test$ rstud),
Student_reziduum = unname (outlier_test$ rstud),
Bonferroni_p_hodnota = unname (outlier_test$ bonf.p)
)
outlier_table |>
kable (digits = 4 , col.names = c ("Číslo firmy (riadok)" , "Študentizované rezíduum" , "Bonferroni p-hodnota" ),
caption = "Identifikácia odľahlých hodnôt" ) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
}
Identifikácia odľahlých hodnôt
429
-13.5433
0
model2 <- lm (RETURN.ON.ASSETS ~ ESG.INDEX + log (FIRM.SIZE) + DEBT.TO.ASSET, data = udaje.2021 )
tidy (model2) |>
kable (digits = 4 , col.names = c ("Premenná" , "Odhad" , "Štand. chyba" , "t-hodnota" , "p-hodnota" ),
caption = "Výsledky upraveného (logaritmického) modelu" ) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
Výsledky upraveného (logaritmického) modelu
(Intercept)
-251.5197
285.5787
-0.8807
0.3814
ESG.INDEX
77.4955
107.1972
0.7229
0.4721
log(FIRM.SIZE)
115.1423
149.3354
0.7710
0.4432
DEBT.TO.ASSET
-0.3154
0.3719
-0.8480
0.3992
glance (model2) |>
select (- deviance) |>
kable (
digits = 4 ,
col.names = c ("R-kvadrát" , "Upravený R²" , "Sigma" , "F-štatistika" , "p-hodnota (F)" , "df" , "logLik" , "AIC" , "BIC" , "df.residual" , "N" ),
caption = "Súhrnné charakteristiky upraveného modelu (Model 2)"
) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
Súhrnné charakteristiky upraveného modelu (Model 2)
0.0493
0.0097
148.242
1.2446
0.3
3
-485.6971
981.3942
993.0479
72
76
par (mfrow = c (2 , 2 ))
plot (model2)
jb_test2 <- jarque.bera.test (residuals (model2))
tidy (jb_test2) |>
select (statistic, p.value, method) |>
kable (digits = 4 , col.names = c ("JB štatistika" , "p-hodnota" , "Názov testu" ), caption = "Test normality rezíduí (upravený model)" ) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
Test normality rezíduí (upravený model)
4376.343
0
Jarque Bera Test
outlier_test2 <- car:: outlierTest (model2)
if (is.null (outlier_test2)) {
cat ("Nenašli sa žiadne odľahlé hodnoty v upravenom modeli." )
} else {
outlier_table2 <- data.frame (
Pozorovanie = names (outlier_test2$ rstud),
Student_reziduum = unname (outlier_test2$ rstud),
Bonferroni_p_hodnota = unname (outlier_test2$ bonf.p)
)
outlier_table2 |>
kable (digits = 4 , col.names = c ("Číslo firmy (riadok)" , "Študentizované rezíduum" , "Bonferroni p-hodnota" ),
caption = "Identifikácia odľahlých hodnôt (upravený model)" ) |>
kable_styling (bootstrap_options = c ("striped" , "hover" ), full_width = FALSE )
}
Identifikácia odľahlých hodnôt (upravený model)
429
-13.5621
0
save.image ("pamat_esg.Rdata" )
rm (list = ls ())