Home | KTL nâng cao | Lỗi r(451) khi khai báo dữ liệu bảng

Lỗi r(451) khi khai báo dữ liệu bảng

Điều đầu tiên trong việc khai thác dữ liệu bảng chính là khai báo dữ liệu bảng. Trên Stata, chúng ta có thể thực hiện việc khai báo dữ liệu bảng bằng lệnh tsset hoặc xtset. Tuy nhiên, khi chúng ta khai báo xtset id time, với id là các đơn vị bảng (doanh nghiệp, hộ gia đình, quốc gia…) và time là các đơn vị thời gian thì lại nhận được thông báo lỗi từ Stata như sau:

repeated time values within panel
r(451);

Vậy lỗi r(451) là lỗi gì và chúng ta khắc phục nó như thế nào?

Lỗi r(451): repeated time values within panel liên quan đến việc xác định các quan sát (phần tử) của bảng. Về nguyên tắc, mỗi quan sát trong bảng sẽ được xác định duy nhất thông qua 2 tham số là id và time. Trong một số trường hợp do sai sót khi nhập dữ liệu chúng ta có thể nhập cùng 1 id cho các đơn vị bảng, chẳng hạn như:

time id name y x
2009 13 BHS (*)
2010 13 BHS
2011 13 BHS
2012 13 BHS
2013 13 BHS
2009 13 BLF (*)
2010 14 BLF
2011 14 BLF
2012 14 BLF
2013 14 BLF

Lỗi repeated time values within panel

Dễ nhận thấy rằng 1 kết hợp time – id (2009 – 13) đại diện cho 2 quan sát của BHS và BLF trong năm 2009 (*). Như vậy, sự kết hợp này vi phạm tính duy nhất của mỗi quan sát trong dữ liệu bảng, khi đó Stata sẽ thông báo lỗi r(451) repeated time values within panel.

Nếu dữ liệu bảng của chúng ta có N nhỏ, T nhỏ thì chúng ta có thể dễ dàng kiểm tra các sự kết hợp này và sửa lại cho phù hợp. Tuy nhiên, phần lớn các dữ liệu bảng trong thực tế có rất nhiều quan sát, do vậy, việc kiểm tra thủ công như vậy sẽ mất nhiều thời gian và đôi khi không khắc phục hết vấn đề. Đoạn code bên dưới sẽ yêu cầu Stata kiểm tra giúp chúng ta:

Đầu tiên là xem qua và liệt kê các quan sát trùng lắp bằng câu lệnh duplicates

  • duplicates report id year
  • duplicates list id year

Tiếp đến là tạo một biến để kiểm soát các quan sát bị trùng này (isdup). Biến isdup sẽ nhận giá trị bằng 1 nếu quan sát đó bị trùng và ngược lại sẽ nhận giá trị bằng 0.

  • duplicates tag id year, gen(isdup)

Tiếp đến là liệt kê các quan sát bị trùng để chỉnh sửa bằng câu lệnh edit:

  • edit if isdup==1

Tại đây, chúng ta sẽ thay đổi các giá trị không phù hợp, chẳng hạn id = 14 của quan sát BLF trong năm 2009 (*). Sau đó là lưu lại dữ liệu và kiểm tra lại khai báo dữ liệu bảng

  • xtset id time

Nguồn: http://www.stata.com/support/faqs/data-management/repeated-time-values/