Cieľ: vysvetliť, od čoho závisí čistý zisk firmy netIncome na základe cash-flow a súvisiacich položiek.
Ako vysvetľujúce premenné použijem:
• capitalExpenditures – kapitálové výdavky (investície),
• operatingCashflow – peňažné toky z operatívnej činnosti,
• cashflowFromFinancing – peňažné toky z financovania,
• depreciationDepletionAndAmortization – odpisy,
• changeInInventory – zmena zásob.
Tieto premenné majú jasný ekonomický vzťah k zisku a sú číselné.
# načítanie dát
firma <- read.csv("firmadata.csv", stringsAsFactors = TRUE)
# dátum ako Date a dummy premenná pre obdobie po roku 2020
firma$fiscalDateEnding <- as.Date(firma$fiscalDateEnding)
firma$DUM <- ifelse(firma$fiscalDateEnding >= as.Date("2020-01-01"), 1, 0)• Pracujeme s kvartálnymi údajmi jednej firmy (ticker A) v rokoch cca
2017–2025.
• Závislá premenná: čistý zisk netIncome.Zaujíma nás, či ho dokážeme
vysvetliť pomocou cash-flow a súvisiacich položiek.
• Dummy premenná DUM = 1 pre obdobie od roku 2020 (post-covid / novšie
obdobie), 0 predtým. Tú použijeme neskôr, keď budeme skúmať, či sa po
2020 mení úroveň zisku.
Špecifikujem základný model:
mod0 <- lm(
netIncome ~ capitalExpenditures +
operatingCashflow +
cashflowFromFinancing +
depreciationDepletionAndAmortization +
changeInInventory,
data = firma
)
summary(mod0)
Call:
lm(formula = netIncome ~ capitalExpenditures + operatingCashflow +
cashflowFromFinancing + depreciationDepletionAndAmortization +
changeInInventory, data = firma)
Residuals:
Min 1Q Median 3Q Max
-457714609 -32869436 9128641 40255393 346995528
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.153e+08 1.842e+08 -0.626 0.537
capitalExpenditures 1.052e+00 1.319e+00 0.798 0.433
operatingCashflow 1.575e-01 2.730e-01 0.577 0.569
cashflowFromFinancing -1.271e-01 1.248e-01 -1.018 0.319
depreciationDepletionAndAmortization 3.486e+00 2.726e+00 1.279 0.213
changeInInventory 5.009e-01 1.032e+00 0.486 0.632
Residual standard error: 1.43e+08 on 24 degrees of freedom
Multiple R-squared: 0.1993, Adjusted R-squared: 0.03244
F-statistic: 1.194 on 5 and 24 DF, p-value: 0.3415
Pri odhade :
• R² ≈ 0,20, upravené R² ≈ 0,03 → model vysvetľuje len asi 20 %
variability čistého zisku, čo je pomerne málo.
• Žiadny z koeficientov pri vysvetľujúcich premenných nie je štatisticky
významný na hladine 5 % (p-hodnoty sú > 0,2).
• Celkový F-test (test, či sú všetky β₁…β₅ = 0) má p-hodnotu okolo 0,34
→ nedokážeme štatisticky potvrdiť, že tieto premenné ako celok významne
vysvetľujú zisk. Ekonomicky: lineárny vzťah „zisk = lineárna kombinácia
cash-flow položiek“ nie je veľmi silný – zisk je pravdepodobne
ovplyvnený aj inými faktormi (tržby, marže, jednorazové položky,
makroprostredie…), ktoré v modeli chýbajú.
Teraz otestujeme, či je špecifikácia funkčnej formy rozumne zvolená, alebo či model trpí nesprávnou špecifikáciou (napr. chýbajúce mocniny, interakcie a pod.).
RESET test
data: mod0
RESET = 1.2951, df1 = 2, df2 = 22, p-value = 0.2939
• Ramsey RESET test porovnáva základný model s modelom, ktorý
obsahuje aj vyššie mocniny predikovaného netIncome (resp. fitted
values).
• Na tvojich dátach vychádza F-štatistika s p-hodnotou výrazne nad 0,05
(cca 0,7).
To znamená:
• Nenachádzame štatistický dôkaz, že by bola funkčná forma modelu
zásadne nesprávna.
• Z pohľadu RESET testu nemusíme nutne pridávať kvadratické či vyššie
mocniny vysvetľujúcich premenných – jednoduchá lineárna forma je
akceptovateľná.
Pri tom ale treba mať na pamäti, že aj keď RESET neodmieta model, R² je stále nízke → špecifikácia síce nie je „hrubo zle“, ale model jednoducho nie je veľmi informatívny.
Aj tak vyskúšame rozšíriť model o kvadratické členy vysvetľujúcich premenných a porovnáme ho so základným modelom.
mod_quad <- lm(
netIncome ~ capitalExpenditures + I(capitalExpenditures^2) +
operatingCashflow + I(operatingCashflow^2) +
cashflowFromFinancing + I(cashflowFromFinancing^2) +
depreciationDepletionAndAmortization +
I(depreciationDepletionAndAmortization^2) +
changeInInventory + I(changeInInventory^2),
data = firma
)
summary(mod_quad)
Call:
lm(formula = netIncome ~ capitalExpenditures + I(capitalExpenditures^2) +
operatingCashflow + I(operatingCashflow^2) + cashflowFromFinancing +
I(cashflowFromFinancing^2) + depreciationDepletionAndAmortization +
I(depreciationDepletionAndAmortization^2) + changeInInventory +
I(changeInInventory^2), data = firma)
Residuals:
Min 1Q Median 3Q Max
-430459553 -30917346 14806324 38925199 343825127
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.417e+09 2.163e+09 -0.655 0.520
capitalExpenditures 1.924e+00 1.072e+01 0.180 0.859
I(capitalExpenditures^2) -9.459e-09 8.630e-08 -0.110 0.914
operatingCashflow 2.592e-01 7.229e-01 0.359 0.724
I(operatingCashflow^2) -3.282e-10 1.320e-09 -0.249 0.806
cashflowFromFinancing -1.508e-01 1.655e-01 -0.911 0.374
I(cashflowFromFinancing^2) -6.187e-11 3.627e-10 -0.171 0.866
depreciationDepletionAndAmortization 4.306e+01 6.153e+01 0.700 0.492
I(depreciationDepletionAndAmortization^2) -2.943e-07 4.547e-07 -0.647 0.525
changeInInventory 7.338e-01 1.631e+00 0.450 0.658
I(changeInInventory^2) 4.992e-09 2.727e-08 0.183 0.857
Residual standard error: 158500000 on 19 degrees of freedom
Multiple R-squared: 0.2214, Adjusted R-squared: -0.1884
F-statistic: 0.5402 on 10 and 19 DF, p-value: 0.8406
Analysis of Variance Table
Model 1: netIncome ~ capitalExpenditures + operatingCashflow + cashflowFromFinancing +
depreciationDepletionAndAmortization + changeInInventory
Model 2: netIncome ~ capitalExpenditures + I(capitalExpenditures^2) +
operatingCashflow + I(operatingCashflow^2) + cashflowFromFinancing +
I(cashflowFromFinancing^2) + depreciationDepletionAndAmortization +
I(depreciationDepletionAndAmortization^2) + changeInInventory +
I(changeInInventory^2)
Res.Df RSS Df Sum of Sq F Pr(>F)
1 24 4.9061e+17
2 19 4.7706e+17 5 1.3552e+16 0.1079 0.9892
• R² sa zvýši len minimálne (okolo 0,20), upravené R² je dokonca
negatívne, pretože pridávame veľa parametrov pri malom počte pozorovaní
(30).
• Žiadny z nových kvadratických členov nie je významný.
• Porovnanie modelov pomocou anova(mod0, mod_quad) ukazuje, že pridanie
kvadratických členov štatisticky významne nezlepšuje fit (p-hodnota
>> 0,05).
Záver:
Hoci sme rozšírili model o kvadratické členy, model sa nevylepšil – na tvojich dátach neexistuje jasný dôkaz o nelineárnych vzťahoch tohto typu. Vzhľadom na malú vzorku je skôr vhodné zostať pri jednoduchšej špecifikácii.
Teraz skúsime model doplniť o dummy premennú DUM, ktorá odlišuje staršie obdobia (pred 2020) a novšie obdobia (od 2020). Cieľ: zistiť, či sa po 2020 úroveň zisku systematicky zmenila, keď kontrolujeme ostatné premenné.
mod_dum <- lm(
netIncome ~ capitalExpenditures +
operatingCashflow +
cashflowFromFinancing +
depreciationDepletionAndAmortization +
changeInInventory +
DUM,
data = firma
)
summary(mod_dum)
Call:
lm(formula = netIncome ~ capitalExpenditures + operatingCashflow +
cashflowFromFinancing + depreciationDepletionAndAmortization +
changeInInventory + DUM, data = firma)
Residuals:
Min 1Q Median 3Q Max
-457018250 -31567758 9649300 44175305 348425156
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.452e+07 3.164e+08 -0.172 0.865
capitalExpenditures 8.577e-01 1.572e+00 0.546 0.591
operatingCashflow 1.460e-01 2.827e-01 0.517 0.610
cashflowFromFinancing -1.189e-01 1.319e-01 -0.902 0.377
depreciationDepletionAndAmortization 2.531e+00 4.871e+00 0.520 0.608
changeInInventory 4.707e-01 1.060e+00 0.444 0.661
DUM 2.951e+07 1.236e+08 0.239 0.813
Residual standard error: 145900000 on 23 degrees of freedom
Multiple R-squared: 0.2012, Adjusted R-squared: -0.007138
F-statistic: 0.9657 on 6 and 23 DF, p-value: 0.4698
Analysis of Variance Table
Model 1: netIncome ~ capitalExpenditures + operatingCashflow + cashflowFromFinancing +
depreciationDepletionAndAmortization + changeInInventory
Model 2: netIncome ~ capitalExpenditures + operatingCashflow + cashflowFromFinancing +
depreciationDepletionAndAmortization + changeInInventory +
DUM
Res.Df RSS Df Sum of Sq F Pr(>F)
1 24 4.9061e+17
2 23 4.8940e+17 1 1.2124e+15 0.057 0.8135
• Koeficient pri DUM (rozdiel medzi obdobiami po 2020 a pred 2020)
nie je štatisticky významný (p-hodnota vysoko nad 0,05).
• R² sa takmer nezmení (≈ 0,20), AIC/BIC sú dokonca o niečo horšie ako
pri mod0.
• anova(mod0, mod_dum) nepotvrdzuje štatisticky významné zlepšenie
modelu.
Záver:
Nevieme preukázať, že by po roku 2020 došlo k systematickej zmene úrovne čistého zisku, po zohľadnení ostatných premenných v modeli. Dummy premenná je skôr zbytočná a základný model bez DUM je podľa informačných kritérií o niečo lepší.
netIncome obsahuje aj záporné hodnoty. Na použitie Box–Cox transformácie musíme spraviť posun tak, aby všetky hodnoty boli kladné:
library(MASS)
y_pos <- firma$netIncome - min(firma$netIncome) + 1
mod_pos <- lm(
y_pos ~ capitalExpenditures +
operatingCashflow +
cashflowFromFinancing +
depreciationDepletionAndAmortization +
changeInInventory,
data = firma
)
bc <- boxcox(mod_pos)[1] 0.8686869
Vychádza približne:
• λ ≈ 0,88, teda veľmi blízko k 1.
To znamená:
• Box–Cox navrhuje transformáciu veľmi podobnú identite → nie je silná
potreba transformovať y.
• Keby vyšlo λ blízko 0, použili by sme logaritmus, atď.
Pre úplnosť ešte odhadneme model s transformovanou premennou:
if (abs(lambda_opt) < 1e-6) {
firma$Y_lambda <- log(y_pos)
} else {
firma$Y_lambda <- (y_pos^lambda_opt - 1) / lambda_opt
}
mod_lambda <- lm(
Y_lambda ~ capitalExpenditures +
operatingCashflow +
cashflowFromFinancing +
depreciationDepletionAndAmortization +
changeInInventory,
data = firma
)
summary(mod_lambda)
Call:
lm(formula = Y_lambda ~ capitalExpenditures + operatingCashflow +
cashflowFromFinancing + depreciationDepletionAndAmortization +
changeInInventory, data = firma)
Residuals:
Min 1Q Median 3Q Max
-37009204 -2445431 1070144 3214991 24984509
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.766e+07 1.405e+07 1.256 0.221
capitalExpenditures 6.720e-02 1.006e-01 0.668 0.511
operatingCashflow 1.222e-02 2.083e-02 0.587 0.563
cashflowFromFinancing -1.027e-02 9.524e-03 -1.078 0.292
depreciationDepletionAndAmortization 2.857e-01 2.080e-01 1.373 0.182
changeInInventory 4.402e-02 7.871e-02 0.559 0.581
Residual standard error: 10910000 on 24 degrees of freedom
Multiple R-squared: 0.2008, Adjusted R-squared: 0.03426
F-statistic: 1.206 on 5 and 24 DF, p-value: 0.3365
RESET test
data: mod_lambda
RESET = 2.9495, df1 = 2, df2 = 22, p-value = 0.07331
• R² transformovaného modelu je veľmi podobné (~0,20), žiadna
premenná nie je výrazne významná.
• RESET test pre transformovaný model má p-hodnotu mierne pod 0,10, ale
nad 0,05 → ak použijeme 5 % hladinu významnosti, špecifikáciu stále
neodmietame; na 10 % je to už hraničné.
• Zmena závislej premennej pomocou Box–Cox zásadne nezlepšila model –
potvrdzuje to aj fakt, že λ bolo blízko 1.
Záver:
Z pohľadu Box–Cox analýzy nie je transformácia závislej premennej kľúčová. Model s transformovaným netIncome sa správa veľmi podobne ako pôvodný.
1. Vybrali sme si čistý zisk netIncome ako závislú premennú a špecifikovali sme lineárny model s cash-flow premennými.
2. Základný model má nízke R² (~0,20) a žiadna vysvetľujúca premenná nie je štatisticky významná → zisk je len slabo vysvetlený týmito položkami.
3. RESET test neodmietol model → nemáme dôkaz, že by lineárna funkčná forma bola vyslovene nesprávna.
4. Rozšírenie modelu o kvadratické členy nevedie k zlepšeniu (žiadne nové významné koeficienty, horšie informačné kritériá).
5. Pridanie dummy premennej DUM pre obdobie po roku 2020 takisto nezlepšuje model a dummy nie je významná → nepreukázali sme štrukturálnu zmenu v zisku po 2020.
6. Box–Cox transformácia navrhla λ ≈ 0,88 (blízko 1), model s transformovanou závislou premennou nebol lepší → transformácia zmysel nemá.