TRI & BR

Mục tiêu

Sau khi đã xác định được các biến cần dùng cho nghiên cứu Transition Risk (TRI) và Bankruptcy Risk (BR), bước tiếp theo là kiểm tra dữ liệu và mô tả cấu trúc mẫu nghiên cứu.

Mục tiêu của phần này là giúp sinh viên trả lời được các câu hỏi cơ bản:

  • Dữ liệu có bao nhiêu doanh nghiệp?
  • Có bao nhiêu quan sát firm-year?
  • Mẫu trải trên những năm nào?
  • Có bao nhiêu quốc gia?
  • Có bao nhiêu ngành?
  • Quốc gia nào có nhiều quan sát nhất?
  • Ngành nào chiếm tỷ trọng lớn nhất?
  • Có doanh nghiệp nào chỉ xuất hiện một năm không?
  • Biến TRI và BR có bao nhiêu quan sát hợp lệ?
  • Có missing values bất thường không?

Các bảng mô tả này rất quan trọng vì chúng giúp kiểm tra xem mẫu nghiên cứu có hợp lý trước khi chạy regression hay không.


1. Kiểm tra cấu trúc dữ liệu ban đầu

Trước tiên, mở dataset trong Stata và kiểm tra các biến chính.

Ví dụ:

describe

Sau đó kiểm tra các biến dùng để nhận diện doanh nghiệp, năm, quốc gia, ngành và các biến nghiên cứu chính.

Ví dụ:

describe Firm_ID Firm_ID_num FYEAR FIC GIND TRI BR

Trong đó:

  • Firm_ID: mã doanh nghiệp ẩn danh;
  • Firm_ID_num: mã numeric dùng cho panel;
  • FYEAR: năm tài chính;
  • FIC: mã quốc gia;
  • GIND: mã ngành;
  • TRI: Transition Risk;
  • BR: Bankruptcy Risk.

Tên biến thực tế có thể khác tùy dataset. Sinh viên phải kiểm tra đúng tên biến trong dữ liệu được cung cấp.


2. Kiểm tra dữ liệu panel

Mỗi doanh nghiệp trong một năm chỉ nên có một quan sát.

Kiểm tra:

isid Firm_ID_num FYEAR

Nếu Stata không báo lỗi thì mỗi cặp:

Firm_ID_num × FYEAR

là duy nhất.

Sau đó khai báo dữ liệu panel:

xtset Firm_ID_num FYEAR

Quan sát kết quả Stata trả về:

  • panel variable;
  • time variable;
  • số năm;
  • dữ liệu balanced hay unbalanced.

Phần lớn dữ liệu doanh nghiệp quốc tế là unbalanced panel, tức là không phải doanh nghiệp nào cũng có dữ liệu đầy đủ ở tất cả các năm.


3. Tổng số quan sát trong dữ liệu

Chạy:

count

Kết quả là tổng số firm-year observations.

Ví dụ:

82,450

có nghĩa dataset có 82,450 quan sát doanh nghiệp-năm.

Trong báo cáo có thể ghi:

The initial sample contains 82,450 firm-year observations.


4. Đếm số doanh nghiệp

Không được dùng count để kết luận số doanh nghiệp, vì một doanh nghiệp có thể xuất hiện nhiều năm.

Dùng:

egen tag_firm = tag(Firm_ID_num)

count if tag_firm == 1

Ví dụ Stata trả về:

5,420

thì mẫu có 5,420 doanh nghiệp duy nhất.

Sau đó xóa biến tạm:

drop tag_firm

5. Kiểm tra khoảng thời gian nghiên cứu

Chạy:

summarize FYEAR

Hoặc:

tabulate FYEAR

tabulate FYEAR cho biết số quan sát từng năm.

Ví dụ:

YearObservations
20102,850
20113,020
20123,190
……
20234,510

Sinh viên cần kiểm tra xem có năm nào:

  • số quan sát giảm mạnh;
  • chỉ có rất ít quan sát;
  • dữ liệu TRI hoặc BR bị thiếu gần như toàn bộ.

6. Kiểm tra số quốc gia

Nếu biến quốc gia là FIC, chạy:

tabulate FIC

Lệnh này cho biết số firm-year observations theo quốc gia.

Tuy nhiên, nếu muốn biết có bao nhiêu quốc gia duy nhất:

egen tag_country = tag(FIC)

count if tag_country == 1

drop tag_country

7. Lập bảng phân bố mẫu theo quốc gia

Chạy:

tabulate FIC, sort

Kết quả giúp xác định quốc gia nào chiếm nhiều dữ liệu nhất.

Ví dụ:

CountryFirm-year Obs.Share
USA25,60031.1%
Japan8,90010.8%
China7,8009.5%
UK4,3005.2%
………

Không chỉ nhìn số lượng. Sinh viên cần xem liệu mẫu có bị quá tập trung vào một hoặc hai quốc gia hay không.

Nếu một quốc gia chiếm tỷ trọng quá lớn, điều này cần được lưu ý khi diễn giải kết quả.


8. Đếm số doanh nghiệp theo quốc gia

tab FIC chỉ cho số quan sát, không phải số doanh nghiệp.

Để đếm số doanh nghiệp riêng biệt theo quốc gia:

bysort FIC Firm_ID_num: gen byte first_firm_country = (_n == 1)

tabulate FIC if first_firm_country == 1

drop first_firm_country

Kết quả này giúp lập bảng:

CountryNumber of Firms
USA1,850
Japan620
China580
UK310
……

9. Kiểm tra phân bố theo ngành

Nếu biến ngành là GIND, chạy:

tabulate GIND, sort

Nếu dataset có tên ngành, có thể dùng tên ngành thay cho mã.

Mục tiêu là kiểm tra:

  • Có bao nhiêu ngành;
  • Ngành nào có nhiều quan sát nhất;
  • Có ngành nào chỉ có rất ít doanh nghiệp;
  • Có ngành tài chính hoặc utilities cần loại bỏ hay không.

Ví dụ:

IndustryFirm-year Obs.
Industrials12,400
Consumer Discretionary10,800
Information Technology9,950
Materials8,300
……

10. Đếm số doanh nghiệp theo ngành

Để tránh nhầm giữa số quan sát và số doanh nghiệp:

bysort GIND Firm_ID_num: gen byte first_firm_ind = (_n == 1)

tabulate GIND if first_firm_ind == 1

drop first_firm_ind

Bảng này cho biết số doanh nghiệp thực tế trong từng ngành.


11. Kiểm tra ngành × quốc gia

Đối với nghiên cứu quốc tế, cần xem doanh nghiệp trong mỗi ngành phân bố như thế nào giữa các quốc gia.

Có thể chạy:

tabulate FIC GIND

Nếu bảng quá lớn, có thể kiểm tra từng quốc gia hoặc từng ngành riêng.

Mục tiêu là phát hiện trường hợp:

  • một ngành gần như chỉ tồn tại ở một quốc gia;
  • một quốc gia chỉ có một vài ngành;
  • một nhóm country-industry quá ít quan sát.

Điều này quan trọng nếu sau này sử dụng:

  • Industry Fixed Effects;
  • Country Fixed Effects;
  • Country × Year Fixed Effects;
  • Industry × Year Fixed Effects.

12. Kiểm tra số năm mỗi doanh nghiệp xuất hiện

Chạy:

bysort Firm_ID_num: gen n_years = _N

Sau đó:

summarize n_years, detail

Có thể kiểm tra:

tabulate n_years

Ví dụ:

Number of yearsNumber of firm-year observations
1…
2…
3…
……

Nếu muốn xác định doanh nghiệp chỉ có một năm dữ liệu:

egen tag_firm = tag(Firm_ID_num)

count if tag_firm == 1 & n_years == 1

Doanh nghiệp chỉ có một năm thường không đóng góp nhiều cho mô hình firm fixed effects.

Không tự động xóa nếu đề bài chưa yêu cầu. Trước tiên phải báo cáo và đánh giá.

Sau khi kiểm tra:

drop tag_firm n_years

13. Kiểm tra missing values của TRI và BR

Đây là bước rất quan trọng.

Chạy:

misstable summarize TRI BR

Hoặc:

count if missing(TRI)

count if missing(BR)

count if missing(TRI) | missing(BR)

Sau đó kiểm tra số quan sát thực sự có thể dùng cho baseline regression:

count if !missing(TRI, BR)

Ví dụ:

  • Dataset ban đầu: 82,450 observations;
  • TRI không missing: 60,300;
  • BR không missing: 72,100;
  • Có cả TRI và BR: 55,800.

Khi đó baseline sample tối đa chỉ khoảng 55,800 observations, trước khi thêm controls.


14. Kiểm tra missing của toàn bộ controls

Giả sử mô hình dự kiến có:

BR TRI SIZE LEV ROA CASH GDPG INFL

Chạy:

misstable summarize BR TRI SIZE LEV ROA CASH GDPG INFL

Sau đó:

count if !missing(BR, TRI, SIZE, LEV, ROA, CASH, GDPG, INFL)

Đây là số quan sát có thể dùng khi chạy mô hình đầy đủ.

Nếu số quan sát giảm rất mạnh sau khi thêm một biến, cần xác định biến nào gây mất mẫu.


15. Thống kê mô tả các biến nghiên cứu

Chạy:

summarize BR TRI SIZE LEV ROA CASH GDPG INFL

Để xem chi tiết hơn:

summarize BR TRI SIZE LEV ROA CASH GDPG INFL, detail

Cần chú ý:

  • Mean;
  • Standard deviation;
  • Minimum;
  • Median;
  • Maximum;
  • Percentiles.

Nếu thấy giá trị bất thường, ví dụ:

  • Leverage = 20;
  • ROA = -50;
  • TRI có giá trị cực lớn;
  • BR nằm ngoài phạm vi hợp lý;

thì phải kiểm tra dữ liệu trước khi regression.


16. Kiểm tra TRI theo quốc gia

Vì Transition Risk có thể khác đáng kể giữa các quốc gia, nên kiểm tra:

bysort FIC: summarize TRI

Có thể dùng:

table FIC, statistic(mean TRI) statistic(sd TRI) statistic(count TRI)

Mục tiêu là xem:

  • quốc gia nào có TRI cao;
  • quốc gia nào có TRI thấp;
  • quốc gia nào gần như không có variation.

Nếu TRI là biến cấp quốc gia-năm, sinh viên phải đặc biệt lưu ý rằng nhiều doanh nghiệp cùng quốc gia và cùng năm có thể nhận cùng một giá trị TRI.


17. Kiểm tra Bankruptcy Risk theo quốc gia

Tương tự:

table FIC, statistic(mean BR) statistic(sd BR) statistic(count BR)

Bảng này cho thấy mức Bankruptcy Risk trung bình giữa các quốc gia.

Không dùng bảng này để kết luận quan hệ nhân quả giữa TRI và BR. Đây chỉ là descriptive analysis.


18. Kiểm tra TRI và BR theo ngành

Có thể chạy:

table GIND, statistic(mean TRI) statistic(mean BR) statistic(count BR)

Mục tiêu là kiểm tra liệu một số ngành có:

  • Transition Risk cao hơn;
  • Bankruptcy Risk cao hơn;
  • số quan sát quá nhỏ.

Ví dụ các ngành carbon-intensive có thể có TRI cao hơn, nhưng cần dựa vào dữ liệu thực tế chứ không kết luận trước.


19. Kiểm tra theo năm

Chạy:

table FYEAR, statistic(mean TRI) statistic(mean BR) statistic(count BR)

Bảng này giúp xem:

  • TRI tăng hay giảm theo thời gian;
  • BR có thay đổi mạnh trong các giai đoạn khủng hoảng hay không;
  • có năm nào dữ liệu bất thường.

Có thể sử dụng bảng này để quyết định liệu Year Fixed Effects có cần thiết hay không.


20. Bảng tương quan

Sau khi kiểm tra dữ liệu cơ bản, chạy correlation matrix:

pwcorr BR TRI SIZE LEV ROA CASH GDPG INFL, sig star(0.05)

Mục tiêu:

  • xem dấu tương quan sơ bộ giữa TRI và BR;
  • phát hiện controls có tương quan quá cao với nhau;
  • kiểm tra nguy cơ multicollinearity sơ bộ.

Không được kết luận:

“TRI causes BR”

chỉ dựa vào correlation.

Correlation chỉ là mô tả ban đầu.


21. Các bảng tối thiểu cần chuẩn bị

Mỗi nhóm cần chuẩn bị ít nhất các bảng sau:

Table 1. Sample Distribution by Country

Bao gồm:

  • Country;
  • Number of firms;
  • Firm-year observations;
  • Percentage of total observations.

Table 2. Sample Distribution by Industry

Bao gồm:

  • Industry;
  • Number of firms;
  • Firm-year observations;
  • Percentage of total observations.

Table 3. Sample Distribution by Year

Bao gồm:

  • Year;
  • Number of firms;
  • Firm-year observations.

Table 4. Descriptive Statistics

Bao gồm tối thiểu:

  • Variable;
  • N;
  • Mean;
  • Standard deviation;
  • Min;
  • Median;
  • Max.

Table 5. Correlation Matrix

Bao gồm:

  • BR;
  • TRI;
  • toàn bộ các control variables dự kiến sử dụng.

22. Nội dung cần báo cáo sau khi chạy dữ liệu

Sau khi hoàn thành, sinh viên phải có khả năng mô tả mẫu bằng một đoạn ngắn, ví dụ:

The final sample covers firms from XX countries and XX industries over the period 20XX–20XX. The dataset contains XX unique firms and XX firm-year observations. The largest number of observations comes from Country A, followed by Country B. Industry X represents the largest share of the sample. After requiring non-missing values for Bankruptcy Risk, Transition Risk, and the main control variables, the baseline regression sample contains XX observations.

Không sao chép đoạn ví dụ này và thay số một cách máy móc. Các con số phải được lấy trực tiếp từ dữ liệu đã chạy.


23. Yêu cầu quan trọng

Trước khi chạy bất kỳ regression nào, phải đảm bảo đã biết rõ:

1. Có bao nhiêu doanh nghiệp?

2. Có bao nhiêu quốc gia và ngành?

3. Khoảng thời gian nghiên cứu là bao nhiêu?

4. TRI và BR có missing nhiều không?

5. Controls nào làm giảm mạnh sample?

6. Có outliers hoặc giá trị bất hợp lý không?

7. Mẫu có bị tập trung quá mức vào một quốc gia/ngành hay không?

8. TRI có variation theo firm, country và year như thế nào?

Chỉ sau khi hiểu được cấu trúc dữ liệu mới chuyển sang bước tiếp theo:

Data cleaning → Variable construction → Descriptive statistics → Correlation → Baseline regression → Robustness tests.

XUẤT BẢNG MÔ TẢ DỮ LIỆU BẰNG ASDOC

1. Cài đặt ASDOC

Chỉ cần cài một lần trên máy:

ssc install asdoc, replace

Kiểm tra:

which asdoc

Sau khi cài thành công, có thể dùng asdoc để xuất kết quả Stata trực tiếp sang Word.


2. Tạo thư mục lưu kết quả

Nên tạo riêng một thư mục chứa các bảng kết quả.

Ví dụ:

global OUTPUT "C:\TRI_BR\OUTPUT"

Sinh viên phải thay đường dẫn trên bằng thư mục thực tế trên máy.

File kết quả chính:

global TABLES "$OUTPUT\TRI_BR_Descriptive_Tables.doc"

Như vậy tất cả bảng sẽ được đưa vào cùng một file Word.


3. Table 1 – Sample Distribution by Country

Nếu biến quốc gia là FIC:

asdoc tab FIC, ///
    save("$TABLES") ///
    replace ///
    title(Table 1. Sample Distribution by Country)

Kết quả sẽ có:

CountryFrequencyPercentCumulative Percent
USA………
CHN………
GBR………

Lưu ý: Frequency trong bảng này là số firm-year observations, KHÔNG phải số doanh nghiệp.


4. Table 2 – Sample Distribution by Industry

Nếu biến ngành là GIND:

asdoc tab GIND, ///
    save("$TABLES") ///
    append ///
    title(Table 2. Sample Distribution by Industry)

append rất quan trọng.

Table 1 dùng:

replace

Các bảng tiếp theo dùng:

append

Nếu tiếp tục dùng replace, bảng trước sẽ bị xóa.


5. Table 3 – Sample Distribution by Year

Chạy:

asdoc tab FYEAR, ///
    save("$TABLES") ///
    append ///
    title(Table 3. Sample Distribution by Year)

Bảng này cho biết số firm-year observations của từng năm.

Sinh viên cần kiểm tra xem có năm nào số quan sát giảm bất thường hay không.


6. Table 4 – Descriptive Statistics

Giả sử mô hình có:

  • BR = Bankruptcy Risk;
  • TRI = Transition Risk;
  • SIZE = Firm Size;
  • LEV = Leverage;
  • ROA = Profitability;
  • CASH = Cash Holdings;
  • GDPG = GDP Growth;
  • INFL = Inflation.

Chạy:

asdoc tabstat BR TRI SIZE LEV ROA CASH GDPG INFL, ///
    stat(N mean sd min p50 max) ///
    columns(statistics) ///
    save("$TABLES") ///
    append ///
    dec(3) ///
    title(Table 4. Descriptive Statistics)

Bảng mong muốn:

VariableNMeanSDMinMedianMax
BR………………
TRI………………
SIZE………………
LEV………………

Đây là bảng descriptive statistics chính dùng trong nghiên cứu.


7. Table 5 – Correlation Matrix

Chạy:

asdoc pwcorr BR TRI SIZE LEV ROA CASH GDPG INFL, ///
    sig ///
    star(0.05) ///
    save("$TABLES") ///
    append ///
    dec(3) ///
    title(Table 5. Correlation Matrix)

Bảng này giúp kiểm tra sơ bộ:

  • TRI tương quan dương hay âm với BR;
  • các controls có tương quan quá cao với nhau hay không.

Không được kết luận quan hệ nhân quả dựa trên correlation matrix.


8. Bảng số doanh nghiệp theo quốc gia

tab FIC chỉ cho biết số observations.

Nếu muốn biết số doanh nghiệp trong từng quốc gia, trước tiên tạo biến đánh dấu mỗi doanh nghiệp một lần:

bysort FIC Firm_ID_num: ///
    gen byte tag_firm_country = (_n == 1)

Sau đó:

asdoc tab FIC if tag_firm_country == 1, ///
    save("$TABLES") ///
    append ///
    title(Table 6. Number of Firms by Country)

Cuối cùng:

drop tag_firm_country

Bây giờ Frequency mới là số doanh nghiệp, không phải số firm-year observations.


9. Bảng số doanh nghiệp theo ngành

Tương tự:

bysort GIND Firm_ID_num: ///
    gen byte tag_firm_industry = (_n == 1)

Xuất bảng:

asdoc tab GIND if tag_firm_industry == 1, ///
    save("$TABLES") ///
    append ///
    title(Table 7. Number of Firms by Industry)

Sau đó:

drop tag_firm_industry

10. Quy tắc trình bày

Tất cả các bảng nên:

  • Có Table number;
  • Có title rõ ràng;
  • Dùng cùng số chữ số thập phân;
  • Không xuất quá nhiều thông tin không cần thiết;
  • Tên biến phải nhất quán với Variable Definition Table;
  • Phân biệt rõ Number of Firms và Firm-year Observations.

Đối với biến liên tục, sử dụng 3 chữ số thập phân:

dec(3)

Không nên để Stata xuất quá nhiều chữ số như:

0.057392817

Mà nên trình bày:

0.057

11. Bộ code tối thiểu cần chạy

Nếu chỉ cần các bảng chính để nộp, có thể chạy:

*============================================================*
* TABLE 1. COUNTRY DISTRIBUTION
*============================================================*

asdoc tab FIC, ///
    save("$TABLES") ///
    replace ///
    title(Table 1. Sample Distribution by Country)


*============================================================*
* TABLE 2. INDUSTRY DISTRIBUTION
*============================================================*

asdoc tab GIND, ///
    save("$TABLES") ///
    append ///
    title(Table 2. Sample Distribution by Industry)


*============================================================*
* TABLE 3. YEAR DISTRIBUTION
*============================================================*

asdoc tab FYEAR, ///
    save("$TABLES") ///
    append ///
    title(Table 3. Sample Distribution by Year)


*============================================================*
* TABLE 4. DESCRIPTIVE STATISTICS
*============================================================*

asdoc tabstat BR TRI SIZE LEV ROA CASH GDPG INFL, ///
    stat(N mean sd min p50 max) ///
    columns(statistics) ///
    save("$TABLES") ///
    append ///
    dec(3) ///
    title(Table 4. Descriptive Statistics)


*============================================================*
* TABLE 5. CORRELATION MATRIX
*============================================================*

asdoc pwcorr BR TRI SIZE LEV ROA CASH GDPG INFL, ///
    sig ///
    star(0.05) ///
    save("$TABLES") ///
    append ///
    dec(3) ///
    title(Table 5. Correlation Matrix)

Sau khi chạy xong, mở:

TRI_BR_Descriptive_Tables.doc

Trong đó sẽ có lần lượt Table 1 → Table 5.

Yêu cầu khi nộp

Sinh viên nộp:

1. File Word chứa các bảng được xuất từ Stata.

2. File .do chứa toàn bộ code đã sử dụng.

Không chụp màn hình Stata để nộp thay bảng.

Các con số trong phần mô tả mẫu phải khớp với các bảng được xuất từ Stata.