1 Choice 1. Teacher Readiness for Digital Transformation

1.1 Introduction

This report examines Vietnamese high school teachers’ readiness for digital transformation. The analysis focuses on three levels: descriptive characteristics of the sample, readiness patterns across domains and questionnaire items, and the predictive value of demographic and school-context variables for overall readiness.

Key outcome: The findings suggest that Vietnamese high school teachers generally demonstrate a relatively high level of readiness for digital transformation. However, this readiness is stronger in conceptual and attitudinal domains than in practical technological knowledge and actual implementation. Therefore, the most effective policy direction is not merely to promote awareness of digital transformation, but to strengthen teachers’ hands-on technological capacity and the school-level conditions that enable implementation. In particular, policies should prioritize practice-oriented professional development, stronger technical and institutional support within schools, and incentive mechanisms that encourage sustained classroom application. In this sense, improving readiness requires moving from policy advocacy to implementation support.

1.1.1 Data and methods

1.1.2 Data preparation

1.1.3 Data validation

## $missing_in_data
## character(0)
## 
## $coded_but_not_mapped
## character(0)
## 
## $mapped_but_not_in_codebook
## character(0)

1.2 Descriptive results

1.2.1 Sample characteristics

ft1 <- ft_table(sample_table, font_size = 9.5, fit_width = TRUE, page_width = 6.5) %>%
  flextable::set_header_labels(
    Characteristic = "Characteristic",
    Category = "Category",
    n = "n",
    Percent = "%"
  ) %>%
  flextable::merge_v(j = "Characteristic") %>%
  flextable::valign(j = "Characteristic", valign = "top", part = "body") %>%
  flextable::align(j = c("Characteristic", "Category"), align = "left", part = "body") %>%
  flextable::align(j = c("n", "Percent"), align = "center", part = "body") %>%
  flextable::width(j = "Characteristic", width = 1.45) %>%
  flextable::width(j = "Category", width = 3.10) %>%
  flextable::width(j = "n", width = 0.65) %>%
  flextable::width(j = "Percent", width = 0.60)

ft1

Characteristic

Category

n

%

Province

Bac Giang

1,772

15.5

Hung Yen

1,636

14.3

Nghe An

856

7.5

Can Tho

1,910

16.7

Ho Chi Minh City

5,274

46.1

School location

Urban area

6,629

57.9

Rural area

4,461

39.0

Remote/Island area

358

3.1

Gender

Male

3,668

32.0

Female

7,772

67.9

Other

8

0.1

Age

Under 35 years

2,306

20.1

35 to under 45 years

5,706

49.8

46 to under 55 years

3,032

26.5

55 years and above

404

3.5

Qualification

Bachelor's degree

8,023

70.1

Master's degree

3,407

29.8

Doctorate degree

18

0.2

Teaching years

Less than 5 years

1,064

9.3

5 to under 10 years

1,473

12.9

10 to under 20 years

5,025

43.9

20 years or more

3,886

33.9

1.2.1.1 Geographic distribution

knitr::include_graphics(province_map_file)

1.2.1.2 School location

p_school_loc <- ggplot2::ggplot(
  school_plot_dat,
  ggplot2::aes(x = n, y = School_located, fill = fill_col)
) +
  ggplot2::geom_col(width = 0.7, show.legend = FALSE) +
  ggplot2::geom_text(
    ggplot2::aes(label = label),
    nudge_x = 120,
    hjust = 0,
    size = 4,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::scale_fill_identity() +
  ggplot2::labs(
    title = "School location",
    x = "Number of teachers",
    y = NULL
  ) +
  ggplot2::expand_limits(x = max(school_plot_dat$n) * 1.18) +
  theme_vinuni(base_size = 12)

p_school_loc

save_plot(p_school_loc, "fig_school_location.png", width = 8.5, height = 4.8)
## [1] "vinuni_outputs/figures/fig_school_location.png"

1.2.1.3 Gender

p_gender <- ggplot2::ggplot(
  gender_plot_dat,
  ggplot2::aes(ymax = ymax, ymin = ymin, xmax = 4, xmin = 2, fill = fill_col)
) +
  ggplot2::geom_rect(colour = "white", linewidth = 0.6) +
  ggplot2::geom_text(
    ggplot2::aes(x = 3, y = label_pos, label = label),
    size = 4,
    colour = "white",
    fontface = "bold"
  ) +
  ggplot2::coord_polar(theta = "y") +
  ggplot2::xlim(0, 4.5) +
  ggplot2::scale_fill_identity() +
  ggplot2::labs(
    title = "Gender distribution"
  ) +
  ggplot2::theme_void() +
  ggplot2::theme(
    plot.title = ggplot2::element_text(
      hjust = 0.5, face = "bold", size = 16, colour = vinuni_cols["blue_dark"]
    ),
    legend.position = "none"
  )

p_gender

save_plot(p_gender, "fig_gender_donut.png", width = 6.2, height = 6.2)
## [1] "vinuni_outputs/figures/fig_gender_donut.png"

1.2.1.4 Age

p_age <- ggplot2::ggplot(age_plot_dat, ggplot2::aes(x = pct, y = Age)) +
  ggplot2::geom_segment(
    ggplot2::aes(x = 0, xend = pct, yend = Age),
    linewidth = 2.5,
    colour = vinuni_cols["blue_soft"]
  ) +
  ggplot2::geom_point(
    size = 5,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::geom_text(
    ggplot2::aes(label = label),
    nudge_x = 1.2,
    hjust = 0,
    size = 4,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::labs(
    title = "Age profile",
    x = "Percentage of sample",
    y = NULL
  ) +
  ggplot2::expand_limits(x = max(age_plot_dat$pct) * 1.18) +
  theme_vinuni(base_size = 12)

p_age

save_plot(p_age, "fig_age_lollipop.png", width = 8.5, height = 4.8)
## [1] "vinuni_outputs/figures/fig_age_lollipop.png"

1.2.1.5 Teaching years

p_teach <- ggplot2::ggplot(
  teach_plot_dat,
  ggplot2::aes(x = pct, y = Teaching_years, fill = fill_col)
) +
  ggplot2::geom_col(width = 0.68, show.legend = FALSE) +
  ggplot2::geom_text(
    ggplot2::aes(label = label),
    nudge_x = 1.1,
    hjust = 0,
    size = 4,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::scale_fill_identity() +
  ggplot2::labs(
    title = "Teaching experience",
    x = "Percentage of sample",
    y = NULL
  ) +
  ggplot2::expand_limits(x = max(teach_plot_dat$pct) * 1.18) +
  theme_vinuni(base_size = 12)

p_teach

save_plot(p_teach, "fig_teaching_years.png", width = 8.5, height = 5)
## [1] "vinuni_outputs/figures/fig_teaching_years.png"

1.2.1.6 Qualification

p_qual <- ggplot2::ggplot(
  qual_plot_dat,
  ggplot2::aes(x = Qualification, y = pct, fill = fill_col)
) +
  ggplot2::geom_col(width = 0.62, show.legend = FALSE) +
  ggplot2::geom_text(
    ggplot2::aes(label = label),
    vjust = -0.4,
    size = 4,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::scale_fill_identity() +
  ggplot2::labs(
    title = "Qualification",
    x = NULL,
    y = "Percentage of sample"
  ) +
  ggplot2::expand_limits(y = max(qual_plot_dat$pct) * 1.12) +
  theme_vinuni(base_size = 12)

p_qual

save_plot(p_qual, "fig_qualification.png", width = 7.5, height = 5)
## [1] "vinuni_outputs/figures/fig_qualification.png"

1.2.2 Domain-level summary

ft2 <- ft_table(domain_summary, font_size = 10, fit_width = TRUE, page_width = 6.5) %>%
  flextable::set_header_labels(
    Domain = "Domain",
    n_items = "No. of items",
    mean = "Mean",
    sd = "SD",
    median = "Median",
    min = "Minimum",
    max = "Maximum"
  ) %>%
  flextable::colformat_double(j = c("mean", "sd", "median", "min", "max"), digits = 2) %>%
  flextable::align(j = "Domain", align = "left", part = "body") %>%
  flextable::align(j = c("n_items", "mean", "sd", "median", "min", "max"), align = "center", part = "all") %>%
  flextable::width(j = "Domain", width = 3.20) %>%
  flextable::width(j = "n_items", width = 0.85)

ft2

Domain

No. of items

Mean

SD

Median

Minimum

Maximum

Content Knowledge (CK)

4

4.11

0.87

4.00

1.00

5.00

Technological Knowledge (TK)

8

3.79

0.88

4.00

1.00

5.00

Technological Pedagogical Knowledge (TPK)

7

3.93

0.84

4.00

1.00

5.00

Perceived Value (NKV)

8

4.07

0.88

4.00

1.00

5.00

Perceived Competence (NKL)

5

3.92

0.85

4.00

1.00

5.00

Attitudinal Support (AS)

4

4.01

0.85

4.00

1.00

5.00

Facilitating Conditions (DK)

5

3.89

0.87

4.00

1.00

5.00

Intention to Use (YD)

6

4.02

0.85

4.00

1.00

5.00

Actual Practice (HV)

6

3.81

0.86

4.00

1.00

5.00

Overall Readiness

53

3.94

0.79

4.00

1.00

5.00

p_domain_mean_only_clean

save_plot(p_domain_mean_only_clean, "fig_domain_mean_only_clean.png", width = 10, height = 6)
## [1] "vinuni_outputs/figures/fig_domain_mean_only_clean.png"

The domain-level results indicate a relatively high overall level of readiness. Content Knowledge achieved the highest mean score, while Technological Knowledge and Actual Practice were comparatively lower. This pattern suggests that teachers appear more confident in their subject-related and conceptual readiness than in their practical technological execution.

1.2.3 Key descriptive insights

ft_insight <- ft_table(insight_table, font_size = 10, fit_width = TRUE, page_width = 5.8) %>%
  flextable::align(j = c("Insight", "Value"), align = "left", part = "body")

ft_insight

Insight

Value

Sample size

11448

Highest-scoring domain

Content Knowledge (CK) (4.11)

Lowest-scoring domain

Technological Knowledge (TK) (3.79)

Overall readiness mean

3.94

Overall readiness median

4.00

1.2.4 Item-level patterns

p_ck  <- plot_item_domain_box("CK",  "Content Knowledge (CK)")
p_tk  <- plot_item_domain_box("TK",  "Technological Knowledge (TK)")
p_tpk <- plot_item_domain_box("TPK", "Technological Pedagogical Knowledge (TPK)")
p_nkv <- plot_item_domain_box("NKV", "Perceived Value (NKV)")
p_nkl <- plot_item_domain_violin("NKL", "Perceived Competence (NKL)")
p_as  <- plot_item_domain_violin("AS",  "Attitudinal Support (AS)")
p_dk  <- plot_item_domain_violin("DK",  "Facilitating Conditions (DK)")
p_yd  <- plot_item_domain_box("YD",  "Intention to Use (YD)")
p_hv  <- plot_item_domain_box("HV",  "Actual Practice (HV)")

p_ck

p_tk

p_tpk

p_nkv

p_nkl

p_as

p_dk

p_yd

p_hv

The item-level plots reinforce the domain-level findings. Knowledge and value-oriented items generally cluster at higher scores, while technological implementation and actual practice items exhibit slightly lower central tendency and more visible spread.

1.3 Predictive modeling

1.3.1 Modeling strategy

The primary predictive outcome was overall readiness. Predictors included province, school location, gender, age, qualification, teaching years, and subject. Four models were compared on a holdout set: a naive mean benchmark, multiple linear regression, Ridge, and Lasso.

ft_model <- ft_table(perf_tbl, font_size = 10, fit_width = TRUE, page_width = 6.2) %>%
  flextable::set_header_labels(
    Model = "Model",
    MAE = "MAE",
    RMSE = "RMSE",
    MAPE = "MAPE"
  ) %>%
  flextable::colformat_double(j = c("MAE", "RMSE", "MAPE"), digits = 4) %>%
  flextable::align(j = "Model", align = "left", part = "body") %>%
  flextable::align(j = c("MAE", "RMSE", "MAPE"), align = "center", part = "all")

ft_model

Model

MAE

RMSE

MAPE

Lasso

0.5074

0.7900

20.6255

Ridge

0.5077

0.7900

20.6309

Multiple Linear Regression

0.5091

0.7903

20.6625

Naive mean benchmark

0.5046

0.7939

20.5646

p_model_compare

save_plot(p_model_compare, "fig_model_comparison_rmse.png", width = 9, height = 5.5)
## [1] "vinuni_outputs/figures/fig_model_comparison_rmse.png"

The predictive results show that all models performed similarly, with Lasso producing the lowest holdout RMSE. However, the improvement over the naive benchmark was marginal, suggesting that the available demographic and school-context variables explained only a limited amount of variation in overall readiness.

1.4 Discussion

The findings indicate that teachers in this sample were generally positive and relatively ready for digital transformation. Higher scores in content-related and value-oriented domains imply that the motivation and conceptual foundation for digital transformation are already present. In contrast, lower performance in technological knowledge and actual practice suggests that practical implementation remains the main bottleneck.

The modeling results support the same interpretation. Although regularized models slightly outperformed the naive benchmark, the predictive gain was limited. This implies that overall readiness is not strongly differentiated by the currently available background variables alone. Future studies may benefit from including more proximal predictors, such as school infrastructure quality, frequency of training participation, prior EdTech experience, institutional digital support, and workload constraints.

1.5 Conclusion

High school teachers in this dataset demonstrated a relatively high level of digital transformation readiness overall. Content Knowledge was the strongest domain, while Technological Knowledge and Actual Practice were comparatively weaker. This suggests that readiness is already present at the attitudinal and conceptual levels, but practical digital implementation remains less developed.

From a predictive perspective, Lasso achieved the best holdout performance, but only marginally outperformed the naive mean benchmark. Therefore, the main contribution of this analysis lies more in uncovering meaningful descriptive and domain-level patterns than in building a highly accurate predictive model.

1.6 Appendix

1.6.1 Appendix A. Codebook review

Domain label

Code

No.

Full item label

Response scale

Content Knowledge (CK)

CK1

1

I have a firm grasp of the subject matter I teach to identify topics/lessons/content suitable for technology application (e.g., simulation, interaction, digitalization, gamification).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Content Knowledge (CK)

CK2

2

I can define/adjust lesson objectives and select appropriate teaching formats (online, individual, collaborative) with technological support.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Content Knowledge (CK)

CK3

3

I can analyze content characteristics (abstract, visual) and common student difficulties/misconceptions to select appropriate support technologies.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Content Knowledge (CK)

CK4

4

I can select appropriate technology to connect subject content with real-world contexts.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK1

1

I can use tools for designing and presenting digital lectures (e.g., PowerPoint, Canva, Prezi).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK2

2

I can use tools to create classroom interaction (e.g., Quizizz, Kahoot, Padlet, Mentimeter).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK3

3

I am proficient in using online teaching platforms (e.g., Zoom, Google Meet, MS Teams, LMS).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK4

4

I can use technology-based tools for student assessment (e.g., Google Forms, Testportal, Azota).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK5

5

I can use simulation software, virtual labs, visual illustrations, or design digital learning materials/video lectures for my subject.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK6

6

I know how to utilize classroom management support tools (e.g., Google Classroom, Azota, ClassDojo).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK7

7

I have a basic understanding of digital safety, information security, and ethical principles when using technology in teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Knowledge (TK)

TK8

8

I proactively learn about and can access and utilize new technologies (e.g., ChatGPT, Eduaide.ai, Canva AI) to support lesson planning, question generation, or assessment.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK1

1

I can select teaching technology that is appropriate for the lesson content, objectives, and learner characteristics.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK2

2

I can design technology-integrated learning activities to help students understand lessons, discover knowledge, practice, and develop competencies.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK3

3

I can flexibly select and apply various teaching formats (individual, group, flipped classroom, online, blended) with technological support.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK4

4

I know how to use technology to support differentiated instruction based on students' abilities and needs and to personalize learning paths.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK5

5

I can integrate technology into student assessment activities in diverse and effective ways and use technology to provide timely feedback to students.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK6

6

I can flexibly adjust my methods or have alternative solutions when technology encounters problems or does not perform as expected.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Technological Pedagogical Knowledge (TPK)

TPK7

7

I can apply technology-integrated teaching models (e.g., SAMR, TPACK, Blended Learning, Flipped Classroom) in my actual teaching practice.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV1

1

I recognize that technology plays an essential role in innovating teaching methods and environments today, and I support the education sector's digital transformation direction.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV2

2

I believe that technology brings many benefits to both students (increasing interest, interaction, self-study, digital competency) and teachers (saving time, supporting lesson design, innovating assessment).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV3

3

I think that technology helps teachers save time and improve the efficiency of lesson planning and student assessment.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV4

4

I see the application of technology as a professional requirement expected by society and parents; without it, it would be difficult to adapt to new demands and would reduce teaching effectiveness.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV5

5

I proactively accept and view the application of technology as a responsibility and a motivation for personal professional development.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV6

6

I expect that using technology will help improve teaching quality, enhance interaction, support differentiated instruction, and effectively innovate teaching methods.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV7

7

I expect technology to improve the efficiency of assessment, save time and effort, support classroom management, and help students make better academic progress.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Value (NKV)

NKV8

8

I feel that current educational technologies/software are generally user-friendly, accessible, and suitable for my abilities.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Competence (NKL)

NKL1

1

I feel I can easily access, familiarize myself with, and self-learn new educational technologies/software.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Competence (NKL)

NKL2

2

I believe I can operate technology-supported teaching tools and effectively design technology-integrated lessons.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Competence (NKL)

NKL3

3

I have sufficient skills and confidence to handle common technical issues that arise during technology-enhanced teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Competence (NKL)

NKL4

4

I feel my mastery of common digital tools in teaching is good and believe it will improve further with regular practice and support.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Perceived Competence (NKL)

NKL5

5

I am willing to explore and experiment with new technologies or software and am not overly anxious about applying them in my teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Attitudinal Support (AS)

AS1

1

I feel the expectation and requirement from the school board, professional groups, and education management levels to apply technology in teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Attitudinal Support (AS)

AS2

2

The use of technology by my colleagues, positive feedback from students, and expectations from parents influence my use of technology.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Attitudinal Support (AS)

AS3

3

Educational innovation trends involving technology and the spread of technology applications from online/social communities motivate me to apply technology in teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Attitudinal Support (AS)

AS4

4

The application of technology being part of the professional standards for modern teachers motivates me to use more technology in my teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Facilitating Conditions (DK)

DK1

1

The school is relatively well-equipped with teaching devices and technology infrastructure (computers, projectors, internet, software, interactive boards) and a classroom environment that supports technology application.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Facilitating Conditions (DK)

DK2

2

I receive timely technical support when I encounter problems and am provided with clear, accessible technology user guides/materials.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Facilitating Conditions (DK)

DK3

3

The school has a clear direction and policies that encourage and recognize teachers for applying technology in teaching.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Facilitating Conditions (DK)

DK4

4

I have enough time to prepare digital lectures and learning materials when implementing technology-enhanced teaching activities.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Facilitating Conditions (DK)

DK5

5

I have opportunities to participate in training courses on technology and have a community of colleagues to learn from and share experiences with.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Intention to Use (YD)

YD1

1

I intend to continue maintaining and increasing the level of technology use in my teaching, assessment, and classroom management activities.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Intention to Use (YD)

YD2

2

I have the desire and a plan to learn and train (through workshops or self-study) to enhance my technological competence.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Intention to Use (YD)

YD3

3

I am willing to experiment with new software and technology tools to improve my teaching effectiveness.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Intention to Use (YD)

YD4

4

I plan to proactively design more electronic lectures, digital learning materials, and video lectures with technology integration and use technology to support teaching method innovation.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Intention to Use (YD)

YD5

5

I am willing to share my experiences using technology with my colleagues.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Intention to Use (YD)

YD6

6

I proactively use technology for my professional needs (even without a mandatory requirement from the school).

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Actual Practice (HV)

HV1

1

I regularly use technology (PowerPoint, videos, simulations) in the process of designing lectures and teaching directly in the classroom.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Actual Practice (HV)

HV2

2

I regularly use platforms/applications (LMS, Google Classroom, Zalo, Teams) to assign tasks, manage the class, receive assignments, and provide feedback.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Actual Practice (HV)

HV3

3

I have experience using technology tools (Google Forms, Quizizz, Kahoot, Azota) to assess students and analyze learning outcomes.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Actual Practice (HV)

HV4

4

I have experience organizing online or blended learning when necessary, using platforms like Zoom, Meet, LMS, etc.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Actual Practice (HV)

HV5

5

I regularly guide students on how to use technology in their studies, create opportunities for them to create digital learning products, and provide counseling and support outside of regular school hours.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

Actual Practice (HV)

HV6

6

I contribute and share digital learning materials to the repository of my professional group or the school.

1. Strongly disagree; 2. Disagree; 3. Neutral; 4. Agree; 5. Strongly agree

1.6.2 Appendix B. Item-level summary

Domain

Code

Item

Mean

SD

Median

Content Knowledge (CK)

CK1

Identify subject content suitable for technology application

4.18

0.94

4.00

Content Knowledge (CK)

CK2

Adjust lesson objectives and formats with technology support

4.15

0.92

4.00

Content Knowledge (CK)

CK3

Analyze content and misconceptions to choose suitable technology

4.06

0.90

4.00

Content Knowledge (CK)

CK4

Select technology to connect content with real-world contexts

4.06

0.91

4.00

Technological Knowledge (TK)

TK1

Use digital lecture design and presentation tools

3.88

0.94

4.00

Technological Knowledge (TK)

TK2

Use classroom interaction tools

3.71

0.96

4.00

Technological Knowledge (TK)

TK3

Use online teaching platforms proficiently

3.89

0.94

4.00

Technological Knowledge (TK)

TK4

Use technology-based assessment tools

3.81

0.95

4.00

Technological Knowledge (TK)

TK5

Use simulations, virtual labs, and digital materials

3.62

0.97

4.00

Technological Knowledge (TK)

TK6

Use classroom management support tools

3.75

0.95

4.00

Technological Knowledge (TK)

TK7

Understand digital safety and ethics

3.80

0.95

4.00

Technological Knowledge (TK)

TK8

Learn and use new AI/digital tools proactively

3.83

0.95

4.00

Technological Pedagogical Knowledge (TPK)

TPK1

Select technology appropriate for lesson and learners

4.01

0.90

4.00

Technological Pedagogical Knowledge (TPK)

TPK2

Design technology-integrated learning activities

3.96

0.90

4.00

Technological Pedagogical Knowledge (TPK)

TPK3

Apply flexible teaching formats with technology support

3.96

0.89

4.00

Technological Pedagogical Knowledge (TPK)

TPK4

Use technology for differentiated instruction

3.93

0.89

4.00

Technological Pedagogical Knowledge (TPK)

TPK5

Integrate technology into assessment and feedback

3.93

0.90

4.00

Technological Pedagogical Knowledge (TPK)

TPK6

Adjust when technology fails or underperforms

3.94

0.89

4.00

Technological Pedagogical Knowledge (TPK)

TPK7

Apply technology-integrated teaching models

3.74

0.94

4.00

Perceived Value (NKV)

NKV1

Recognize technology as essential for educational innovation

4.07

0.92

4.00

Perceived Value (NKV)

NKV2

Believe technology benefits students and teachers

4.09

0.92

4.00

Perceived Value (NKV)

NKV3

Believe technology saves time and improves efficiency

4.09

0.93

4.00

Perceived Value (NKV)

NKV4

View technology as a professional requirement

4.08

0.92

4.00

Perceived Value (NKV)

NKV5

Accept technology use as responsibility and motivation

4.07

0.91

4.00

Perceived Value (NKV)

NKV6

Expect technology to improve teaching quality

4.08

0.91

4.00

Perceived Value (NKV)

NKV7

Expect technology to improve assessment and management

4.08

0.91

4.00

Perceived Value (NKV)

NKV8

Perceive current educational technologies as user-friendly

4.02

0.91

4.00

Perceived Competence (NKL)

NKL1

Can access and self-learn new technologies easily

3.92

0.89

4.00

Perceived Competence (NKL)

NKL2

Can operate tools and design tech-integrated lessons

3.95

0.88

4.00

Perceived Competence (NKL)

NKL3

Can handle common technical issues confidently

3.87

0.91

4.00

Perceived Competence (NKL)

NKL4

Have good mastery of common digital tools

3.92

0.89

4.00

Perceived Competence (NKL)

NKL5

Willing to explore new technologies without anxiety

3.97

0.89

4.00

Attitudinal Support (AS)

AS1

Feel institutional expectation to apply technology

4.01

0.88

4.00

Attitudinal Support (AS)

AS2

Colleagues, students, and parents influence technology use

3.99

0.88

4.00

Attitudinal Support (AS)

AS3

Innovation trends and online communities motivate use

4.01

0.88

4.00

Attitudinal Support (AS)

AS4

Professional standards motivate more technology use

4.02

0.88

4.00

Facilitating Conditions (DK)

DK1

School has supportive infrastructure and devices

3.90

0.94

4.00

Facilitating Conditions (DK)

DK2

Receive timely technical support and guidance

3.85

0.93

4.00

Facilitating Conditions (DK)

DK3

School has clear policies encouraging technology use

3.93

0.91

4.00

Facilitating Conditions (DK)

DK4

Have enough time to prepare digital lessons

3.85

0.93

4.00

Facilitating Conditions (DK)

DK5

Have training opportunities and peer learning community

3.90

0.91

4.00

Intention to Use (YD)

YD1

Intend to maintain and increase technology use

4.02

0.88

4.00

Intention to Use (YD)

YD2

Plan to learn and improve technological competence

4.02

0.89

4.00

Intention to Use (YD)

YD3

Willing to experiment with new software and tools

4.02

0.88

4.00

Intention to Use (YD)

YD4

Plan to design more digital materials and e-lessons

3.98

0.89

4.00

Intention to Use (YD)

YD5

Willing to share technology experiences with colleagues

4.05

0.88

4.00

Intention to Use (YD)

YD6

Use technology proactively even without requirement

4.03

0.89

4.00

Actual Practice (HV)

HV1

Regularly use technology in lesson design and classroom teaching

3.91

0.92

4.00

Actual Practice (HV)

HV2

Regularly use digital platforms for class management

3.83

0.92

4.00

Actual Practice (HV)

HV3

Use digital tools for assessment and learning analytics

3.78

0.93

4.00

Actual Practice (HV)

HV4

Have experience with online or blended learning

3.77

0.92

4.00

Actual Practice (HV)

HV5

Guide students and support digital learning beyond class

3.77

0.92

4.00

Actual Practice (HV)

HV6

Contribute digital learning materials to repository

3.80

0.92

4.00

2 Choice 2. Provincial Competitiveness and Business Environment Performance in Vietnam

2.1 Introduction

This section examines provincial competitiveness and business environment performance in Vietnam using PCI 2024 indicators. The analysis focuses on cross-provincial disparities, regional patterns, and the dimensions that most strongly differentiate provincial governance and business conditions.

2.2 Data and methods

2.2.1 Data preparation

##  [1] "Tổng hợp"                  "Gia nhập thị trường"      
##  [3] "Tiếp cận đất đai"          "Tính Minh bạch"           
##  [5] "Chi phí thời gian"         "Chi phí không chính thức" 
##  [7] "Cạnh tranh bình đẳng"      "Tính Năng động"           
##  [9] "Chính sách hỗ trợ DN"      "Đào tạo lao động"         
## [11] "Thiết chế pháp lý và ANTT"

2.2.2 Identify the main summary sheet

##  [1] "Tinh_Thanh_pho"                                     
##  [2] "Diem_so_PCI"                                        
##  [3] "CSTP_1_Gia_nhap_thi_truong"                         
##  [4] "CSTP_2_Tiep_can_dat_dai"                            
##  [5] "CSTP_3_Tinh_Minh_bach"                              
##  [6] "CSTP_4_Chi_phi_thoi_gian"                           
##  [7] "CSTP_5_Chi_phi_khong_chinh_thuc"                    
##  [8] "CSTP_6_Canh_tranh_binh_dang"                        
##  [9] "CSTP_7_Tinh_nang_dong_va_tien_phong_cua_chinh_quyen"
## [10] "CSTP_8_Chinh_sach_ho_tro_doanh_nghiep"              
## [11] "CSTP_9_Dao_tao_lao_dong"                            
## [12] "CSTP_10_Thiet_che_phap_ly_An_ninh_trat_tu"          
## [13] "Vung"                                               
## [14] "sheet_name"

2.2.3 Standardize province names and key fields

## [1] "Tinh_Thanh_pho"
## [1] "Vung"
## [1] "Diem_so_PCI"

2.2.4 Quick validation

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00   68.42   69.07   67.73   70.35   74.84      35

2.3 Descriptive results

2.3.1 Overview of PCI performance

ft_pci_summary <- ft_table(pci_summary_table, font_size = 10, fit_width = TRUE, page_width = 6.2) %>%
  flextable::colformat_double(j = c("mean_pci", "sd_pci", "median_pci", "min_pci", "max_pci"), digits = 2)

ft_pci_summary

n_provinces

mean_pci

sd_pci

median_pci

min_pci

max_pci

69

67.73

12.11

69.07

0.00

74.84

2.3.2 Map of overall PCI performance

knitr::include_graphics(pci_map_file)

### Top and bottom provinces

if (!require(patchwork)) install.packages("patchwork")
library(patchwork)

p_bottom <- ggplot2::ggplot(
  pci_bottom10,
  ggplot2::aes(x = PCI_Overall, y = Province)
) +
  ggplot2::geom_segment(
    ggplot2::aes(x = xmin_rank + 0.9, xend = PCI_Overall, yend = Province, colour = seg_col),
    linewidth = 3.6,
    lineend = "round",
    show.legend = FALSE
  ) +
  ggplot2::geom_point(
    ggplot2::aes(colour = point_col),
    size = 5.4,
    show.legend = FALSE
  ) +
  ggplot2::geom_label(
    ggplot2::aes(
      x = xmin_rank + 0.2,
      label = paste0("#", rank),
      fill = badge_col
    ),
    size = 3.5,
    label.size = 0,
    colour = "white",
    fontface = "bold",
    show.legend = FALSE
  ) +
  ggplot2::geom_text(
    ggplot2::aes(label = sprintf("%.2f", PCI_Overall)),
    nudge_x = 0.28,
    hjust = 0,
    size = 4.2,
    colour = vinuni_cols["blue_dark"],
    fontface = "bold"
  ) +
  ggplot2::scale_colour_identity() +
  ggplot2::scale_fill_identity() +
  ggplot2::scale_x_continuous(
    limits = c(xmin_rank, xmax_rank),
    expand = c(0, 0)
  ) +
  ggplot2::labs(
    title = "Bottom 10 provinces",
    x = NULL,
    y = NULL
  ) +
  theme_vinuni(base_size = 12) +
  ggplot2::theme(
    legend.position = "none",
    panel.grid.major.y = ggplot2::element_blank(),
    panel.grid.major.x = ggplot2::element_line(colour = "#EEF2F7", linewidth = 0.6),
    axis.text.x = ggplot2::element_text(size = 10, colour = "gray35"),
    axis.text.y = ggplot2::element_text(size = 11, face = "bold"),
    plot.title = ggplot2::element_text(face = "bold", size = 15, hjust = 0.5)
  )

p_top <- ggplot2::ggplot(
  pci_top10,
  ggplot2::aes(x = PCI_Overall, y = Province)
) +
  ggplot2::geom_segment(
    ggplot2::aes(x = xmin_rank + 0.9, xend = PCI_Overall, yend = Province, colour = seg_col),
    linewidth = 3.6,
    lineend = "round",
    show.legend = FALSE
  ) +
  ggplot2::geom_point(
    ggplot2::aes(colour = point_col),
    size = 5.4,
    show.legend = FALSE
  ) +
  ggplot2::geom_label(
    ggplot2::aes(
      x = xmin_rank + 0.2,
      label = paste0("#", rank),
      fill = badge_col
    ),
    size = 3.5,
    label.size = 0,
    colour = "white",
    fontface = "bold",
    show.legend = FALSE
  ) +
  ggplot2::geom_text(
    ggplot2::aes(label = sprintf("%.2f", PCI_Overall)),
    nudge_x = 0.28,
    hjust = 0,
    size = 4.2,
    colour = vinuni_cols["blue_dark"],
    fontface = "bold"
  ) +
  ggplot2::scale_colour_identity() +
  ggplot2::scale_fill_identity() +
  ggplot2::scale_x_continuous(
    limits = c(xmin_rank, xmax_rank),
    expand = c(0, 0)
  ) +
  ggplot2::labs(
    title = "Top 10 provinces",
    x = NULL,
    y = NULL
  ) +
  theme_vinuni(base_size = 12) +
  ggplot2::theme(
    legend.position = "none",
    panel.grid.major.y = ggplot2::element_blank(),
    panel.grid.major.x = ggplot2::element_line(colour = "#EEF2F7", linewidth = 0.6),
    axis.text.x = ggplot2::element_text(size = 10, colour = "gray35"),
    axis.text.y = ggplot2::element_text(size = 11, face = "bold"),
    plot.title = ggplot2::element_text(face = "bold", size = 15, hjust = 0.5)
  )

p_pci_top_bottom <- p_bottom + p_top +
  patchwork::plot_annotation(
    title = "Top and bottom provinces by PCI performance",
    subtitle = "VinUni blue highlights the lowest 3 provinces; VinUni red highlights the highest 3 provinces"
  )

pci_rank_file <- save_plot(
  p_pci_top_bottom,
  filename = "fig_pci_top_bottom_symmetric_strong.png",
  width = 13,
  height = 7.2,
  dpi = 1100
)
knitr::include_graphics(pci_rank_file)

2.3.3 PCI subindex heatmap for top and bottom performers

p_pci_heatmap <- ggplot2::ggplot(
  pci_heatmap_long,
  ggplot2::aes(x = subindex_label, y = Province_plot, fill = score)
) +
  ggplot2::geom_tile(colour = "white", linewidth = 0.45) +
  ggplot2::geom_text(
    ggplot2::aes(label = sprintf("%.2f", score)),
    size = 2.9,
    colour = "white",
    fontface = "bold"
  ) +
  ggplot2::facet_grid(
    rows = ggplot2::vars(Group),
    scales = "free_y",
    space = "free_y",
    switch = "y"
  ) +
  ggplot2::scale_fill_gradientn(
    colours = c(
      vinuni_cols["blue_dark"],
      vinuni_cols["blue2"],
      vinuni_cols["gold"],
      vinuni_cols["red"]
    ),
    values = scales::rescale(c(4.5, 5.8, 6.8, 8.5)),
    name = "Score"
  ) +
  ggplot2::labs(
    title = "PCI subindex heatmap for top and bottom provinces",
    subtitle = "The heatmap reveals which governance dimensions separate stronger and weaker provincial performers",
    x = NULL,
    y = NULL
  ) +
  theme_vinuni(base_size = 11) +
  ggplot2::theme(
    strip.text.y.left = ggplot2::element_text(angle = 0, face = "bold", size = 12),
    strip.placement = "outside",
    axis.text.x = ggplot2::element_text(size = 10, angle = 20, hjust = 1, face = "bold"),
    axis.text.y = ggplot2::element_text(size = 9.2, face = "bold"),
    panel.grid = ggplot2::element_blank(),
    plot.margin = ggplot2::margin(15, 20, 15, 15)
  )

pci_heatmap_file <- save_plot(
  p_pci_heatmap,
  filename = "fig_pci_subindex_heatmap_top_bottom15.png",
  width = 13.5,
  height = 11.5,
  dpi = 1100
)
knitr::include_graphics(pci_heatmap_file)

2.3.4 Regional mean profile across PCI subindices

p_pci_region_heatmap <- ggplot2::ggplot(
  pci_region_heatmap,
  ggplot2::aes(x = subindex_label, y = Region, fill = score)
) +
  ggplot2::geom_tile(colour = "white", linewidth = 0.5) +
  ggplot2::geom_text(
    ggplot2::aes(label = sprintf("%.2f", score)),
    size = 3.2,
    colour = "white",
    fontface = "bold"
  ) +
  ggplot2::scale_fill_gradientn(
    colours = c(
      vinuni_cols["blue_dark"],
      vinuni_cols["blue2"],
      vinuni_cols["gold"],
      vinuni_cols["red"]
    ),
    values = scales::rescale(c(4.5, 5.8, 6.8, 8.5)),
    name = "Mean\nscore"
  ) +
  ggplot2::labs(
    title = "Regional profile of PCI subindices",
    subtitle = "This heatmap highlights how different regions perform across the ten PCI dimensions",
    x = NULL,
    y = NULL
  ) +
  theme_vinuni(base_size = 11.5) +
  ggplot2::theme(
    axis.text.x = ggplot2::element_text(size = 10, angle = 20, hjust = 1, face = "bold"),
    axis.text.y = ggplot2::element_text(size = 10.5, face = "bold"),
    panel.grid = ggplot2::element_blank(),
    plot.margin = ggplot2::margin(15, 20, 15, 15)
  )

pci_region_heatmap_file <- save_plot(
  p_pci_region_heatmap,
  filename = "fig_pci_region_heatmap.png",
  width = 12,
  height = 6.8,
  dpi = 1100
)
knitr::include_graphics(pci_region_heatmap_file)

The heatmap provides a more diagnostic view of provincial competitiveness than the overall PCI score alone. The top-performing provinces tend to maintain consistently stronger scores across multiple dimensions, rather than relying on only one or two exceptional indicators. In contrast, weaker-performing provinces often show broader weaknesses across several governance and business-environment domains. This pattern implies that policy improvement should focus on coordinated institutional upgrading rather than isolated reforms in a single PCI component.

2.3.5 PCI performance by region

set.seed(123)

region_palette <- c(
  "#35426E",
  "#4E78A0",
  "#6C9DC0",
  "#8BB7D0",
  "#A7C4D2"
)

x_right <- max(pci_region_plot_dat$PCI_Overall, na.rm = TRUE) + 0.55

p_pci_region <- ggplot2::ggplot(
  pci_region_plot_dat,
  ggplot2::aes(y = Region, x = PCI_Overall, fill = Region)
) +
  ggplot2::geom_violin(
    alpha = 0.82,
    colour = NA,
    trim = FALSE,
    scale = "width"
  ) +
  ggplot2::geom_jitter(
    width = 0,
    height = 0.08,
    size = 1.4,
    alpha = 0.20,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::geom_point(
    data = pci_region_summary,
    ggplot2::aes(x = mean_pci, y = Region),
    inherit.aes = FALSE,
    size = 4.0,
    colour = vinuni_cols["red"]
  ) +
  ggplot2::geom_text(
    data = pci_region_summary,
    ggplot2::aes(
      x = x_right,
      y = Region,
      label = sprintf("%.2f", mean_pci)
    ),
    inherit.aes = FALSE,
    hjust = 1,
    size = 4.0,
    colour = vinuni_cols["blue_dark"],
    fontface = "bold"
  ) +
  ggplot2::scale_fill_manual(values = region_palette) +
  ggplot2::scale_x_continuous(
    limits = c(
      min(pci_region_plot_dat$PCI_Overall, na.rm = TRUE) - 0.4,
      max(pci_region_plot_dat$PCI_Overall, na.rm = TRUE) + 0.8
    )
  ) +
  ggplot2::labs(
    title = "Distribution of PCI scores by region",
    subtitle = "Each dot represents one province; red dot marks the regional mean",
    x = "PCI score",
    y = NULL
  ) +
  theme_vinuni(base_size = 12.5) +
  ggplot2::theme(
    legend.position = "none",
    panel.grid.major.y = ggplot2::element_blank(),
    panel.grid.major.x = ggplot2::element_line(colour = "#E8EDF4", linewidth = 0.8),
    axis.text.y = ggplot2::element_text(size = 11.5, face = "bold"),
    axis.text.x = ggplot2::element_text(size = 10.5),
    plot.margin = ggplot2::margin(16, 28, 16, 16)
  )

pci_region_file <- save_plot(
  p_pci_region,
  filename = "fig_pci_region_violin_clean.png",
  width = 11.2,
  height = 6.1,
  dpi = 1200
)
knitr::include_graphics(pci_region_file)

2.3.6 PCI score distribution by region using ridgeline density

set.seed(123)
x_mean_label <- max(pci_region_ridge_dat$PCI_Overall, na.rm = TRUE) + 0.65
p_pci_ridgeline <- ggplot2::ggplot(
  pci_region_ridge_dat,
  ggplot2::aes(x = PCI_Overall, y = Region, fill = after_stat(x))
) +
  ggridges::geom_density_ridges_gradient(
    scale = 1.8,
    rel_min_height = 0.01,
    alpha = 0.95,
    colour = "white",
    linewidth = 0.35
  ) +
  ggplot2::geom_jitter(
    data = pci_region_ridge_dat,
    ggplot2::aes(x = PCI_Overall, y = Region),
    inherit.aes = FALSE,
    width = 0,
    height = 0.10,
    size = 1.2,
    alpha = 0.22,
    colour = vinuni_cols["blue_dark"]
  ) +
  ggplot2::geom_point(
    data = pci_region_ridge_summary,
    ggplot2::aes(x = mean_pci, y = Region),
    inherit.aes = FALSE,
    size = 3.6,
    colour = vinuni_cols["red"]
  ) +
  ggplot2::geom_text(
  data = pci_region_ridge_summary,
  ggplot2::aes(
    x = x_mean_label,
    y = Region,
    label = sprintf("%.2f", mean_pci)
  ),
  inherit.aes = FALSE,
  hjust = 1,
  size = 4.0,
  colour = vinuni_cols["blue_dark"],
  fontface = "bold"
) +
  ggplot2::scale_fill_gradientn(
    colours = c(
      vinuni_cols["blue_soft"],
      vinuni_cols["blue2"],
      vinuni_cols["blue_main"],
      vinuni_cols["blue_dark"]
    ),
    guide = "none"
  ) +
  ggplot2::scale_x_continuous(
  limits = c(
    min(pci_region_ridge_dat$PCI_Overall, na.rm = TRUE) - 0.4,
    max(pci_region_ridge_dat$PCI_Overall, na.rm = TRUE) + 0.9
  )
) +
  ggplot2::labs(
    title = "Ridgeline distribution of PCI scores by region",
    subtitle = "Each dot represents one province; red dot marks the regional mean",
    x = "PCI score",
    y = NULL
  ) +
  theme_vinuni(base_size = 12.5) +
  ggplot2::theme(
    legend.position = "none",
    panel.grid.major.y = ggplot2::element_blank(),
    panel.grid.major.x = ggplot2::element_line(colour = "#E8EDF4", linewidth = 0.8),
    axis.text.y = ggplot2::element_text(size = 11.5, face = "bold"),
    axis.text.x = ggplot2::element_text(size = 10.5),
    plot.margin = ggplot2::margin(16, 28, 16, 16)
  )

pci_ridgeline_file <- save_plot(
  p_pci_ridgeline,
  filename = "fig_pci_region_ridgeline.png",
  width = 11.5,
  height = 6.6,
  dpi = 1200
)
knitr::include_graphics(pci_ridgeline_file)

Overall, provincial PCI differences appear to be driven by multidimensional governance quality rather than by isolated strengths in one subindex. Top-performing provinces tend to maintain stronger and more consistent scores across several PCI dimensions, especially market entry, time costs, business support policy, and legal institutions and security. In contrast, weaker-performing provinces more often exhibit broader weaknesses in transparency, fair competition, government proactivity, and labor training. These findings suggest that improving provincial competitiveness requires coordinated institutional upgrading across multiple governance dimensions, rather than focusing on a single PCI component.

2.3.7 Interpretation of regional PCI distribution

The regional ridgeline plot suggests that differences in PCI performance are present, but not extreme enough to imply a simple dichotomy between “strong” and “weak” regions. Instead, the distributions overlap considerably, which indicates that provincial competitiveness is shaped by both regional context and substantial within-region variation. In other words, some regions show slightly higher average PCI levels, but differences across provinces within the same region remain important.

This pattern supports the use of a continuous predictive framework rather than a simple high-versus-low classification approach. Because PCI overall score is a numeric outcome, a multiple linear regression framework is more appropriate for estimating and comparing how regional and institutional factors are associated with variation in provincial competitiveness. In line with predictive modeling principles, model performance should be evaluated on unseen data using holdout-based error measures such as MAE, RMSE, and MAPE, and compared against a naive benchmark that predicts the average PCI score for all provinces. Regularized linear models such as Ridge and Lasso may also be useful when multiple subindices or correlated predictors are included.

2.4 Predictive modeling of PCI performance

2.4.1 Modeling strategy

Following a predictive rather than explanatory approach, the objective here is to assess how well PCI overall performance can be estimated from available structured predictors. Since PCI overall score is continuous, multiple linear regression provides an appropriate baseline model. To improve robustness in the presence of correlated predictors, Ridge and Lasso regression are also included as regularized alternatives. Model performance is evaluated on a holdout set using MAE, RMSE, MAPE, and mean error, and compared against a naive benchmark that predicts the sample mean for every province.

##    Province            Region           PCI_Overall   
##  Length:30          Length:30          Min.   :67.87  
##  Class :character   Class :character   1st Qu.:68.58  
##  Mode  :character   Mode  :character   Median :69.12  
##                                        Mean   :69.70  
##                                        3rd Qu.:70.35  
##                                        Max.   :74.84  
##  CSTP_1_Gia_nhap_thi_truong CSTP_2_Tiep_can_dat_dai CSTP_3_Tinh_Minh_bach
##  Min.   :6.636              Min.   :5.735           Min.   :5.237        
##  1st Qu.:7.439              1st Qu.:6.543           1st Qu.:6.324        
##  Median :7.771              Median :6.788           Median :6.669        
##  Mean   :7.765              Mean   :6.788           Mean   :6.587        
##  3rd Qu.:8.123              3rd Qu.:6.966           3rd Qu.:6.891        
##  Max.   :8.779              Max.   :7.858           Max.   :7.389        
##  CSTP_4_Chi_phi_thoi_gian CSTP_5_Chi_phi_khong_chinh_thuc
##  Min.   :6.186            Min.   :6.368                  
##  1st Qu.:7.251            1st Qu.:6.816                  
##  Median :7.628            Median :7.081                  
##  Mean   :7.649            Mean   :7.047                  
##  3rd Qu.:8.090            3rd Qu.:7.261                  
##  Max.   :8.793            Max.   :7.670                  
##  CSTP_6_Canh_tranh_binh_dang
##  Min.   :4.771              
##  1st Qu.:5.614              
##  Median :6.133              
##  Mean   :6.159              
##  3rd Qu.:6.549              
##  Max.   :7.368              
##  CSTP_7_Tinh_nang_dong_va_tien_phong_cua_chinh_quyen
##  Min.   :5.655                                      
##  1st Qu.:6.342                                      
##  Median :6.545                                      
##  Mean   :6.539                                      
##  3rd Qu.:6.745                                      
##  Max.   :7.406                                      
##  CSTP_8_Chinh_sach_ho_tro_doanh_nghiep CSTP_9_Dao_tao_lao_dong
##  Min.   :6.000                         Min.   :5.263          
##  1st Qu.:7.039                         1st Qu.:6.253          
##  Median :7.304                         Median :6.754          
##  Mean   :7.341                         Mean   :6.700          
##  3rd Qu.:7.670                         3rd Qu.:7.141          
##  Max.   :8.102                         Max.   :7.858          
##  CSTP_10_Thiet_che_phap_ly_An_ninh_trat_tu
##  Min.   :6.903                            
##  1st Qu.:7.403                            
##  Median :7.641                            
##  Mean   :7.663                            
##  3rd Qu.:8.005                            
##  Max.   :8.443
ft_pci_model <- ft_table(pci_perf_tbl, font_size = 10, fit_width = TRUE, page_width = 6.6) %>%
  flextable::set_header_labels(
    Model = "Model",
    MAE = "MAE",
    RMSE = "RMSE",
    MAPE = "MAPE",
    ME = "ME"
  ) %>%
  flextable::colformat_double(j = c("MAE", "RMSE", "MAPE", "ME"), digits = 4) %>%
  flextable::align(j = "Model", align = "left", part = "body") %>%
  flextable::align(j = c("MAE", "RMSE", "MAPE", "ME"), align = "center", part = "all")

ft_pci_model

Model

MAE

RMSE

MAPE

ME

Multiple Linear Regression

0.0000

0.0000

0.0000

-0.0000

Lasso

0.0798

0.0938

0.1142

0.0084

Ridge

0.1789

0.1887

0.2555

0.0085

Naive mean benchmark

1.2286

1.6092

1.7343

0.4587

knitr::include_graphics(pci_model_compare_file)

Overall, the analysis suggests that provincial competitiveness in Vietnam is not driven by isolated strengths, but by broader patterns of institutional performance across multiple PCI dimensions. Stronger-performing provinces tend to maintain consistently better scores across several governance-related subindices, whereas weaker-performing provinces more often exhibit simultaneous weaknesses across multiple areas. The predictive modeling results further confirm that overall PCI is closely and systematically tied to its component dimensions, indicating strong internal consistency within the PCI framework. Therefore, the main implication of this analysis is that provincial competitiveness should be understood as a multidimensional governance outcome. Policy efforts aimed at improving PCI should focus on coordinated institutional reform across several key subindices rather than narrow attempts to improve overall rankings alone.