library("readxl")
library(tidyverse)
library("Hmisc")
library(corrplot)
library(car)
library(psych)
library(broom)
library(sandwich)
library(xtable)
library(lmtest)
library(stargazer)
library(xtable)
library(margins)
spark.1709 <- read_excel("/Users/nikolajdolgih/Desktop/Эконометрика/Проект/SPARK_1709.xlsx")
spark.1714 <- read_excel("/Users/nikolajdolgih/Desktop/Эконометрика/Проект/SPARK_1714.xlsx")
spark.1554 <- read_excel("/Users/nikolajdolgih/Desktop/Эконометрика/Проект/SPARK_1554.xlsx")
spark.1548 <- read_excel("/Users/nikolajdolgih/Desktop/Эконометрика/Проект/SPARK_1548.xlsx")
spark.1541 <- read_excel("/Users/nikolajdolgih/Desktop/Эконометрика/Проект/SPARK_1541.xlsx")
#
spark.1709 = spark.1709[2:3698,]
colnames(spark.1709) = as.character(as.vector(spark.1709[1,]))
spark.1709 = spark.1709[2:3697,]
#
spark.1714 = spark.1714[2:3698,]
colnames(spark.1714) = as.character(as.vector(spark.1714[1,]))
spark.1714 = spark.1714[2:3697,]
#
spark.1554 = spark.1554[2:3698,]
colnames(spark.1554) = as.character(as.vector(spark.1554[1,]))
spark.1554 = spark.1554[2:3697,]
#
spark.1548 = spark.1548[2:3698,]
colnames(spark.1548) = as.character(as.vector(spark.1548[1,]))
spark.1548 = spark.1548[2:3697,]
#
spark.1541 = spark.1541[2:3718,]
colnames(spark.1541) = as.character(as.vector(spark.1541[1,]))
spark.1541 = spark.1541[2:3717,]
#
colnames(spark.1714)[1:2] = c("a", "b")
colnames(spark.1714)[4:5] = c("c", "d")
spark.1714 = spark.1714 %>% select(-a, -b, -c, -d)
#
colnames(spark.1554)[1:2] = c("a", "b")
colnames(spark.1554)[4:5] = c("c", "d")
spark.1554 = spark.1554 %>% select(-a, -b, -c, -d)
#
colnames(spark.1548)[1:2] = c("a", "b")
colnames(spark.1548)[4:5] = c("c", "d")
spark.1548 = spark.1548 %>% select(-a, -b, -c, -d)
#
colnames(spark.1541)[1:2] = c("a", "b")
colnames(spark.1541)[5] = c("c")
colnames(spark.1541)[7] = c("d")
spark.1541 = spark.1541 %>% select(-a, -b, -c, -d)
#
Spark = inner_join(spark.1709, spark.1714, by="Регистрационный номер")
Spark = inner_join(Spark, spark.1554, by="Регистрационный номер")
Spark = inner_join(Spark, spark.1548, by="Регистрационный номер")
Spark = inner_join(Spark, spark.1541, by="Регистрационный номер")
Spark = Spark %>% select("2020, Рентабельность активов (ROA), %", "2020, Уставный капитал , RUB", "2020, Основные средства , RUB" , "Возраст компании, лет", "Размер компании", "2020, Среднесписочная численность работников", "2020, Коэффициент текущей ликвидности, %", "2020, Коэффициент соотношения заемных и собственных средств, %", "2020, Доля краткосрочной в общем объеме задолженности, %")
colnames(Spark) = c("ROA", "Capital", "Pr.means", "Age", "Size", "Avg.empl", "C.R", "KSIZ", "Short.debt")
Spark$ROA = as.numeric(Spark$ROA)
Spark$Capital = as.numeric(Spark$Capital)
Spark$Pr.means = as.numeric(Spark$Pr.means)
Spark$Age = as.numeric(Spark$Age)
Spark$Avg.empl[Spark$Avg.empl == "1 034"] = "1034"
Spark$Avg.empl[Spark$Avg.empl == "1 892"] = "1892"
Spark$Avg.empl = as.numeric(Spark$Avg.empl)
Spark$C.R = as.numeric(Spark$C.R)
Spark$KSIZ = as.numeric(Spark$KSIZ)
Spark$Short.debt = as.numeric(Spark$Short.debt)
Spark$Capital.log = log(Spark$Capital)
Spark$Pr.means.log = log(Spark$Pr.means)
Spark$Avg.empl.log = log(Spark$Avg.empl)
Number = Spark %>% group_by(Size) %>% summarise(number = n())
Number
## # A tibble: 4 × 2
## Size number
## <chr> <int>
## 1 Крупные предприятия 3
## 2 Малые предприятия 139
## 3 Микропредприятия 3546
## 4 Средние предприятия 8
Spark = Spark %>% filter(Size != "Крупные предприятия")
Spark$Size = as.factor(Spark$Size)
# Shapiro-Wilk normality test for ROA
shapiro.test(Spark$ROA) # => p < 2.2e-16
# Shapiro-Wilk normality test for Capital.log
shapiro.test(Spark$Capital.log) # => p < 2.2e-16
# Shapiro-Wilk normality test for Pr.means
shapiro.test(Spark$Pr.means.log) # => p = 0.005059
# Shapiro-Wilk normality test for Age
shapiro.test(Spark$Age) # => p = 3.494e-09
# Shapiro-Wilk normality test for Avg.empl
shapiro.test(Spark$Avg.empl.log) # => p < 2.2e-16
# Shapiro-Wilk normality test for C.R
shapiro.test(Spark$C.R) # => p < 2.2e-16
# Shapiro-Wilk normality test for KSIZ
shapiro.test(Spark$KSIZ) # => p < 2.2e-16
# Shapiro-Wilk normality test for Short.debt
shapiro.test(Spark$Short.debt) # => p < 2.2e-16
Развед анализ
SparkROA = Spark %>% filter(ROA<(quantile(Spark$ROA, 0.75)+1.5*(quantile(Spark$ROA, 0.75) - quantile(Spark$ROA, 0.25))))
ggplot(data = SparkROA, aes(x = Size, y = ROA, color = Size))+
scale_color_manual(values=c("#76D6FF", "#3A3BFF","#191970"), breaks=c("Микропредприятия", "Малые предприятия", "Средние предприятия"), labels=c("Микропредприятия", "Малые предприятия", "Средние предприятия"))+
geom_boxplot()+
labs(title = "Диаграмма распределения ROA для каждого Size")+
labs(color = "Размер")+
xlab("Размер фирмы") +
ylab("ROA") +
xlim("Микропредприятия", "Малые предприятия", "Средние предприятия")+
theme_minimal()+
theme(axis.text.x = element_text(angle = 30, hjust= 1))

ggplot(data = SparkROA, aes(x = Capital.log, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Уставный капитал, руб. (логарифмическая шкала)") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROA$ROA, SparkROA$Capital.log, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROA$ROA and SparkROA$Capital.log
## z = -5.8942, p-value = 3.764e-09
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.1232796
ggplot(data = SparkROA, aes(x = Pr.means.log, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Основные средства, руб. (логарифмическая шкала)") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROA$ROA, SparkROA$Pr.means.log, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROA$ROA and SparkROA$Pr.means.log
## z = -11.874, p-value < 2.2e-16
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.1784444
ggplot(data = SparkROA, aes(x = Avg.empl.log, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Среднесписочная численность работников, чел. (логарифмическая шкала)") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROA$ROA, SparkROA$Avg.empl.log, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROA$ROA and SparkROA$Avg.empl.log
## z = -3.4778, p-value = 0.0005055
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.04398283
ggplot(data = SparkROA, aes(x = Age, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Возраст компании, лет.") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROA$ROA, SparkROA$Age, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROA$ROA and SparkROA$Age
## z = -12.689, p-value < 2.2e-16
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.1481319
SparkROAKSIZ = SparkROA %>% filter(KSIZ<(quantile(na.omit(Spark$KSIZ), 0.75)+1.5*(quantile(na.omit(Spark$KSIZ), 0.75) - quantile(na.omit(Spark$KSIZ), 0.25))))
ggplot(data = SparkROAKSIZ, aes(x = KSIZ, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Коэффициент соотношения заемных и собственных средств") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROAKSIZ$ROA, SparkROAKSIZ$KSIZ, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROAKSIZ$ROA and SparkROAKSIZ$KSIZ
## z = -2.0854, p-value = 0.03703
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## -0.02636141
SparkROAC.R = SparkROA %>% filter(C.R<(quantile(Spark$C.R, 0.75)+1.5*(quantile(Spark$C.R, 0.75) - quantile(Spark$C.R, 0.25))))
ggplot(data = SparkROAC.R, aes(x = C.R, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Коэффициент текущей ликвидности") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROAC.R$ROA, SparkROAC.R$C.R, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROAC.R$ROA and SparkROAC.R$C.R
## z = 12.472, p-value < 2.2e-16
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.1539384
SparkROAShort.debt = SparkROA %>% filter(Short.debt>=0 & Short.debt<=1)
ggplot(data = SparkROAShort.debt, aes(x = Short.debt, y = ROA))+
geom_point(color = "#191970")+
geom_smooth(method = "lm",color = "#76D6FF", formula = y ~ poly(x, degree = 1))+
xlab("Доля краткосрочной в объеме задолженности") +
ylab("ROA") +
theme_linedraw()

res <-cor.test(SparkROAShort.debt$ROA, SparkROAShort.debt$Short.debt, method = "kendall")
res
##
## Kendall's rank correlation tau
##
## data: SparkROAShort.debt$ROA and SparkROAShort.debt$Short.debt
## z = 6.7522, p-value = 1.457e-11
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.1343579
Spark = Spark %>% filter(
ROA<(quantile(Spark$ROA, 0.75)+1.5*(quantile(Spark$ROA, 0.75) - quantile(Spark$ROA, 0.25))) &
KSIZ<(quantile(na.omit(Spark$KSIZ), 0.75)+1.5*(quantile(na.omit(Spark$KSIZ), 0.75) - quantile(na.omit(Spark$KSIZ), 0.25))) &
C.R<(quantile(Spark$C.R, 0.75)+1.5*(quantile(Spark$C.R, 0.75) - quantile(Spark$C.R, 0.25))) &
Short.debt>=0 & Short.debt<=1)
Spark = Spark %>% na.omit()
res<-rcorr(as.matrix(Spark %>% select(-ROA, -Age, -Capital, -Pr.means, -Avg.empl, -Size)), type = "spearman")
diag(res$P)=0
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(res$r, method="color", col=col(200),
type="upper", order="hclust",
addCoef.col = "black", # Add coefficient of correlation
tl.col="black", tl.srt=45, #Text label color and rotation
# Combine with significance
p.mat = res$P, sig.level = 0.05,
# hide correlation coefficient on the principal diagonal
diag=FALSE
)

number <- function(x, na.rm = TRUE){return(sum(!is.na(x)))}
theme_set(theme_light(base_size = 12))
Spark_stat <- Spark %>%
select(-Size, -Capital, -Pr.means, -Avg.empl) %>%
summarise(across(everything(),
list(n = number, min = min, max = max, mean = mean, median = median, sd = sd),
na.rm = TRUE)) %>%
pivot_longer(everything(), names_to = "name", values_to = "value") %>%
separate(name, c("variable", "statistic"), sep = "_") %>%
pivot_wider(names_from = statistic, values_from = value) %>%
arrange(variable) %>%
select(variable, n, min, max, mean, median, sd)
Spark_stat$variable = c("Возраст (Age)", "Среднесписочная численность работников (Avg.empl.log)", "Коэффициент текущей ликвидности (C.R)", "Уставный капитал (Capital.log)","Коэффициент соотношения заемных и собственных средств (KSIZ)", "Основные средства (Pr.means.log)", "Рентабельность активов (ROA)", "Доля краткосрочной в объеме задолженности (Short.debt)")
colnames(Spark_stat) = c("Переменная", "Наблюдения", "Min", "Max","Среднее", "Медиана", "Стандартное отклонение")
Spark_stat %>% xtable()
## % latex table generated in R 4.0.3 by xtable 1.8-4 package
## % Wed Dec 8 04:19:56 2021
## \begin{table}[ht]
## \centering
## \begin{tabular}{rlrrrrrr}
## \hline
## & Переменная & Наблюдения & Min & Max & Среднее & Медиана & Стандартное отклонение \\
## \hline
## 1 & Возраст (Age) & 284.00 & 1.00 & 31.00 & 15.93 & 15.50 & 8.03 \\
## 2 & Среднесписочная численность работников (Avg.empl.log) & 284.00 & 0.00 & 7.55 & 2.83 & 2.94 & 1.39 \\
## 3 & Коэффициент текущей ликвидности (C.R) & 284.00 & 0.00 & 17.48 & 3.07 & 1.91 & 3.25 \\
## 4 & Уставный капитал (Capital.log) & 284.00 & 7.60 & 21.05 & 12.06 & 9.90 & 3.55 \\
## 5 & Коэффициент соотношения заемных и собственных средств (KSIZ) & 284.00 & 0.03 & 6.18 & 1.24 & 0.62 & 1.43 \\
## 6 & Основные средства (Pr.means.log) & 284.00 & 8.70 & 21.45 & 15.95 & 16.20 & 2.59 \\
## 7 & Рентабельность активов (ROA) & 284.00 & 0.00 & 0.89 & 0.14 & 0.07 & 0.17 \\
## 8 & Доля краткосрочной в объеме задолженности (Short.debt) & 284.00 & 0.00 & 1.00 & 0.70 & 1.00 & 0.39 \\
## \hline
## \end{tabular}
## \end{table}
Регрессионный анализ
# оценка МНК, функция lm()
M1 <- lm(ROA ~ 1 + Capital.log + Age + C.R + KSIZ + Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M1 <- vcovHC(M1, type = "HC0")
se_M1 <- sqrt(diag(cov_M1))
coeftest(M1, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.0694e-01 3.9306e-02 5.2647 1.404e-07 ***
## Capital.log -4.5231e-03 2.5328e-03 -1.7858 0.074134 .
## Age -3.3616e-03 1.2299e-03 -2.7334 0.006269 **
## C.R -7.1559e-05 3.2328e-03 -0.0221 0.982340
## KSIZ -5.4868e-03 6.0160e-03 -0.9120 0.361751
## Short.debt 6.1882e-02 2.3821e-02 2.5978 0.009383 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# оценка МНК, функция lm()
M2 <- lm(ROA ~ 1 + Pr.means.log + Age + C.R + KSIZ + Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M2 <- vcovHC(M2, type = "HC0")
se_M2 <- sqrt(diag(cov_M2))
coeftest(M2, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.4983628 0.0819435 6.0818 1.188e-09 ***
## Pr.means.log -0.0209016 0.0044799 -4.6656 3.077e-06 ***
## Age -0.0016805 0.0012170 -1.3808 0.1673
## C.R -0.0033733 0.0030693 -1.0990 0.2718
## KSIZ -0.0089943 0.0059455 -1.5128 0.1303
## Short.debt 0.0264481 0.0234220 1.1292 0.2588
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# оценка МНК, функция lm()
M3 <- lm(ROA ~ 1 + Avg.empl.log + Age + C.R + KSIZ + Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M3 <- vcovHC(M3, type = "HC0")
se_M3 <- sqrt(diag(cov_M3))
coeftest(M3, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.15274229 0.03445263 4.4334 9.276e-06 ***
## Avg.empl.log 0.00090198 0.00646269 0.1396 0.889002
## Age -0.00383495 0.00125700 -3.0509 0.002282 **
## C.R 0.00018341 0.00330040 0.0556 0.955684
## KSIZ -0.00441389 0.00625778 -0.7053 0.480596
## Short.debt 0.06544583 0.02421371 2.7028 0.006875 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# оценка МНК, функция lm()
M4 <- lm(ROA ~ 1 + Size + Age + C.R + KSIZ + Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M4 <- vcovHC(M4, type = "HC0")
se_M4 <- sqrt(diag(cov_M4))
coeftest(M4, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.15847413 0.03778160 4.1945 2.735e-05 ***
## SizeМикропредприятия -0.00328729 0.02447510 -0.1343 0.893156
## SizeСредние предприятия 0.03578362 0.03692421 0.9691 0.332490
## Age -0.00380106 0.00124824 -3.0451 0.002326 **
## C.R 0.00011616 0.00335552 0.0346 0.972386
## KSIZ -0.00480039 0.00625919 -0.7669 0.443120
## Short.debt 0.06472441 0.02453205 2.6384 0.008331 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
stargazer(M1, M2, M3, M4,
se = list(se_M1, se_M2, se_M3, se_M4),
title = "Regression results",
keep.stat = "n",
notes = "Robust standard errors in parentheses",
type = 'latex', keep = c("Capital.log", "Pr.means.log", "Avg.empl.log", "SizeМикропредприятия", "SizeСредние предприятия"))
##
## % Table created by stargazer v.5.2.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
## % Date and time: ср, дек 08, 2021 - 04:19:56
## \begin{table}[!htbp] \centering
## \caption{Regression results}
## \label{}
## \begin{tabular}{@{\extracolsep{5pt}}lcccc}
## \\[-1.8ex]\hline
## \hline \\[-1.8ex]
## & \multicolumn{4}{c}{\textit{Dependent variable:}} \\
## \cline{2-5}
## \\[-1.8ex] & \multicolumn{4}{c}{ROA} \\
## \\[-1.8ex] & (1) & (2) & (3) & (4)\\
## \hline \\[-1.8ex]
## Capital.log & $-$0.005$^{*}$ & & & \\
## & (0.003) & & & \\
## & & & & \\
## Pr.means.log & & $-$0.021$^{***}$ & & \\
## & & (0.004) & & \\
## & & & & \\
## Avg.empl.log & & & 0.001 & \\
## & & & (0.006) & \\
## & & & & \\
## SizeМикропредприятия & & & & $-$0.003 \\
## & & & & (0.024) \\
## & & & & \\
## SizeСредние предприятия & & & & 0.036 \\
## & & & & (0.037) \\
## & & & & \\
## \hline \\[-1.8ex]
## Observations & 284 & 284 & 284 & 284 \\
## \hline
## \hline \\[-1.8ex]
## \textit{Note:} & \multicolumn{4}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\
## & \multicolumn{4}{r}{Robust standard errors in parentheses} \\
## \end{tabular}
## \end{table}
t1 <- abs(coef(M1)["Capital.log"]/se_M1[2])
Pv1 <- 1-pnorm(t1) #односторонняя
cat("p-value:", Pv1)
## p-value: 0.03706721
t2 <- abs(coef(M2)["Pr.means.log"]/se_M2[2])
Pv2 <- 1-pnorm(t2) #односторонняя
cat("p-value:", Pv2)
## p-value: 1.53859e-06
t3 <- abs(coef(M3)["Avg.empl.log"]/se_M3[2])
Pv3 <- 1-pnorm(t3) #односторонняя
cat("p-value:", Pv3)
## p-value: 0.4445012
car::linearHypothesis(M4, c("SizeМикропредприятия = 0", "SizeСредние предприятия = 0"), test = "Chisq", white.adjust = "hc0")
## Linear hypothesis test
##
## Hypothesis:
## SizeМикропредприятия = 0
## SizeСредние предприятия = 0
##
## Model 1: restricted model
## Model 2: ROA ~ 1 + Size + Age + C.R + KSIZ + Short.debt
##
## Note: Coefficient covariance matrix supplied.
##
## Res.Df Df Chisq Pr(>Chisq)
## 1 279
## 2 277 2 1.6287 0.4429
# оценка МНК, функция lm()
M_1 <- lm(ROA ~ 1 + Capital.log + Size + Age + Capital.log*Age + Size*Age + KSIZ + Short.debt + KSIZ*Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M_1 <- vcovHC(M_1, type = "HC0")
se_M_1 <- sqrt(diag(cov_M_1))
coeftest(M_1, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.7959e-01 1.1315e-01 3.3547 0.0007944 ***
## Capital.log -1.9070e-02 6.1733e-03 -3.0891 0.0020077 **
## SizeМикропредприятия 1.4466e-02 6.1563e-02 0.2350 0.8142257
## SizeСредние предприятия 4.6670e-02 6.2177e-02 0.7506 0.4528887
## Age -1.1105e-02 5.8217e-03 -1.9075 0.0564547 .
## KSIZ -2.1154e-02 9.6876e-03 -2.1836 0.0289923 *
## Short.debt 3.7694e-02 3.6279e-02 1.0390 0.2988118
## Capital.log:Age 8.1312e-04 3.4034e-04 2.3891 0.0168887 *
## SizeМикропредприятия:Age -1.9380e-03 3.0439e-03 -0.6367 0.5243357
## SizeСредние предприятия:Age -5.6689e-05 4.1610e-03 -0.0136 0.9891301
## KSIZ:Short.debt 1.8278e-02 1.4625e-02 1.2498 0.2113657
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# оценка МНК, функция lm()
M_2 <- lm(ROA ~ 1 + Pr.means.log + Size + Age + Pr.means.log*Age + Size*Age + KSIZ + Short.debt + KSIZ*Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M_2 <- vcovHC(M_2, type = "HC0")
se_M_2 <- sqrt(diag(cov_M_2))
coeftest(M_2, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.71565988 0.17100561 4.1850 2.852e-05 ***
## Pr.means.log -0.03468622 0.00891277 -3.8917 9.953e-05 ***
## SizeМикропредприятия -0.00870701 0.05390388 -0.1615 0.87168
## SizeСредние предприятия 0.05799541 0.05477118 1.0589 0.28966
## Age -0.01278480 0.01045332 -1.2230 0.22132
## KSIZ -0.02068897 0.00901016 -2.2962 0.02167 *
## Short.debt 0.01455712 0.03439578 0.4232 0.67213
## Pr.means.log:Age 0.00084464 0.00055502 1.5218 0.12805
## SizeМикропредприятия:Age -0.00252774 0.00284689 -0.8879 0.37460
## SizeСредние предприятия:Age 0.00218576 0.00363640 0.6011 0.54779
## KSIZ:Short.debt 0.01559137 0.01319236 1.1818 0.23727
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# оценка МНК, функция lm()
M_3 <- lm(ROA ~ 1 + Avg.empl.log + Size + Age + Avg.empl.log*Age + Size*Age + KSIZ + Short.debt + KSIZ*Short.debt, data=Spark)
# оценка стандартных ошибок,
# робастная формула
cov_M_3 <- vcovHC(M_3, type = "HC0")
se_M_3 <- sqrt(diag(cov_M_3))
coeftest(M_3, df = Inf, vcov. = vcovHC, type = "HC0")
##
## z test of coefficients:
##
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.06687450 0.09743783 0.6863 0.49251
## Avg.empl.log 0.01325030 0.01839607 0.7203 0.47135
## SizeМикропредприятия 0.08464270 0.07265692 1.1650 0.24403
## SizeСредние предприятия -0.01219801 0.08039484 -0.1517 0.87940
## Age 0.00319760 0.00507173 0.6305 0.52838
## KSIZ -0.01942983 0.00964899 -2.0137 0.04404 *
## Short.debt 0.03683877 0.03715222 0.9916 0.32141
## Avg.empl.log:Age -0.00081267 0.00097208 -0.8360 0.40315
## SizeМикропредприятия:Age -0.00542919 0.00349182 -1.5548 0.11999
## SizeСредние предприятия:Age 0.00641840 0.00494213 1.2987 0.19404
## KSIZ:Short.debt 0.02152804 0.01493940 1.4410 0.14958
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
stargazer(M_1, M_2, M_3,
se = list(se_M_1, se_M_2, se_M_3),
title = "Regression results",
keep.stat = "n",
notes = "Robust standard errors in parentheses",
type = 'latex', keep = c("Capital.log","Capital.log:Age","Pr.means.log","Pr.means.log:Age", "Avg.empl.log", "Avg.empl.log:Age","SizeМикропредприятия", "SizeМикропредприятия:Age" ,"SizeСредние предприятия","SizeСредние предприятия:Age"))
##
## % Table created by stargazer v.5.2.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
## % Date and time: ср, дек 08, 2021 - 04:19:56
## \begin{table}[!htbp] \centering
## \caption{Regression results}
## \label{}
## \begin{tabular}{@{\extracolsep{5pt}}lccc}
## \\[-1.8ex]\hline
## \hline \\[-1.8ex]
## & \multicolumn{3}{c}{\textit{Dependent variable:}} \\
## \cline{2-4}
## \\[-1.8ex] & \multicolumn{3}{c}{ROA} \\
## \\[-1.8ex] & (1) & (2) & (3)\\
## \hline \\[-1.8ex]
## Capital.log & $-$0.019$^{***}$ & & \\
## & (0.006) & & \\
## & & & \\
## Pr.means.log & & $-$0.035$^{***}$ & \\
## & & (0.009) & \\
## & & & \\
## Avg.empl.log & & & 0.013 \\
## & & & (0.018) \\
## & & & \\
## SizeМикропредприятия & 0.014 & $-$0.009 & 0.085 \\
## & (0.062) & (0.054) & (0.073) \\
## & & & \\
## SizeСредние предприятия & 0.047 & 0.058 & $-$0.012 \\
## & (0.062) & (0.055) & (0.080) \\
## & & & \\
## Capital.log:Age & 0.001$^{**}$ & & \\
## & (0.0003) & & \\
## & & & \\
## Pr.means.log:Age & & 0.001 & \\
## & & (0.001) & \\
## & & & \\
## Avg.empl.log:Age & & & $-$0.001 \\
## & & & (0.001) \\
## & & & \\
## SizeМикропредприятия:Age & $-$0.002 & $-$0.003 & $-$0.005 \\
## & (0.003) & (0.003) & (0.003) \\
## & & & \\
## SizeСредние предприятия:Age & $-$0.0001 & 0.002 & 0.006 \\
## & (0.004) & (0.004) & (0.005) \\
## & & & \\
## \hline \\[-1.8ex]
## Observations & 284 & 284 & 284 \\
## \hline
## \hline \\[-1.8ex]
## \textit{Note:} & \multicolumn{3}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\
## & \multicolumn{3}{r}{Robust standard errors in parentheses} \\
## \end{tabular}
## \end{table}
me_M_1_capital <- summary(margins(M_1,
variables = "Capital.log",
at = list(Age = seq(1, 31, by = 0.5)),
vcov = vcovHC(M_1, type = "HC0")))
me_M_1_Size <- summary(margins(M_1,
variables = "Size",
at = list(Age = seq(1, 31, by = 0.5)),
vcov = vcovHC(M_1, type = "HC0")))
ggplot(me_M_1_capital) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект уставного капитала \n для каждого уровня возраста") +
theme_linedraw()

ggplot(me_M_1_Size %>% filter(factor == "SizeМикропредприятия")) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект уменьшения размера до микро \n для каждого уровня возраста") +
theme_linedraw()

ggplot(me_M_1_Size %>% filter(factor == "SizeСредние предприятия")) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект увеличения размера до среднего \n для каждого уровня возраста") +
theme_linedraw()

me_M_2_pr.means <- summary(margins(M_2,
variables = "Pr.means.log",
at = list(Age = seq(1, 31, by = 0.5)),
vcov = vcovHC(M_2, type = "HC0")))
me_M_2_Size <- summary(margins(M_2,
variables = "Size",
at = list(Age = seq(1, 31, by = 0.5)),
vcov = vcovHC(M_2, type = "HC0")))
ggplot(me_M_2_pr.means) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект основных средств \n для каждого уровня возраста") +
theme_linedraw()

ggplot(me_M_2_Size %>% filter(factor == "SizeМикропредприятия")) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект уменьшения размера до микро \n для каждого уровня возраста") +
theme_linedraw()

ggplot(me_M_2_Size %>% filter(factor == "SizeСредние предприятия")) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект увеличения размера до среднего \n для каждого уровня возраста") +
theme_linedraw()

me_M_3_avg.empl <- summary(margins(M_3,
variables = "Avg.empl.log",
at = list(Age = seq(1, 31, by = 0.5)),
vcov = vcovHC(M_3, type = "HC0")))
me_M_3_Size <- summary(margins(M_3,
variables = "Size",
at = list(Age = seq(1, 31, by = 0.5)),
vcov = vcovHC(M_3, type = "HC0")))
ggplot(me_M_3_avg.empl) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект среднесписочной численности работников \n для каждого уровня возраста") +
theme_linedraw()

ggplot(me_M_3_Size %>% filter(factor == "SizeМикропредприятия")) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект уменьшения размера до микро \n для каждого уровня возраста") +
theme_linedraw()

ggplot(me_M_3_Size %>% filter(factor == "SizeСредние предприятия")) +
geom_ribbon(aes(x = Age, ymin = lower, ymax = upper), fill = "grey70", alpha = 0.5) +
geom_line(aes(Age, AME),color = "#76D6FF") +
geom_hline(yintercept = 0, col = "#191970", linetype = "dashed")+
xlab("Возраст компании, лет.") +
ylab("Средний предельный эффект") +
labs(title = "Средний предельный эффект увеличения размера до среднего \n для каждого уровня возраста") +
theme_linedraw()
