Một ví dụ nữa là sử dụng dữ liệu từ Google Scholar, chúng ta có thể hình ảnh hóa Data Visualization về thị phần của R từ năm 1995 đến 2011 dựa trên các truy vấn tìm kiếm như sau: Dữ liệu
Trang 1Kinh Tế Lượng Ứng Dụng Với
(Phiên bản ngày 15/07/2017)
Trang 3Lời Nói Đầu Tại sao dùng R?
Với nhiều công cụ cho tích dữ liệu mà bạn có thể lựa chọn như Eviews, Stata, SPSS – AMOS, Excel,
S-PLUS, MATLAB thì rõ ràng câu hỏi đầu tiên là tại sao phải dùng R? Có ít nhất năm lí do để bạn lựa
chọn R
Thứ nhất, với tư cách là một công cụ cho nghiên cứu thống kê – kinh tế lượng, năng lực phân tích
của R là không thua kém bất kì phần mềm thống kê nào hiện có, thậm chí trong nhiều tình huống
còn làm tốt hơn Chẳng hạn, nếu phân tích dữ liệu mảng (Panel Data) thì chúng ta sẽ cân nhắc giữa
Stata và Eviews vì Stata có năng lực phân tích đa dạng và linh động hơn so với Eviews Còn nếu bạn
thực hiện các phân tích thống kê đa biến như phân tích EFA, CFA thì bạn sẽ có xu hướng chọn Stata
hoặc SPSS – AMOS do chúng linh hoạt và tiện lợi hơn Tuy nhiên, nếu dùng R thì bạn chẳng cần phải
đắn đo về vấn đề này: nó có thể thực hiện tất cả những phân tích mà các phần mềm thống kê thương
mại trên có thể làm và làm tốt hơn
Thứ hai, R còn là một ngôn ngữ lập trình hoàn thiện định hướng cho tính toán thống kê, phân tích
dữ liệu Nó cho phép bạn xây dựng những hàm, những câu lệnh chỉ để giải quyết một nhóm các
nhiệm vụ phân tích đặc thù nào đó và chia sẻ chúng trên mạng Chẳng hạn, nếu có một kiểm định
mới, một mô hình mới về phương diện lý thuyết và được đăng trên một tạp chí chuyên nghành nào
đó, bạn hoàn toàn có thể viết một chương trình nhằm biến kiểm định mới, những mô hình mới chỉ ở
dạng lý thuyết kia thành một hàm cụ thể trong R Nếu được kiểm tra bởi cộng đồng những người sử
dụng rằng đúng và không có lỗi, hàm mà bạn viết sẽ được thừa nhận và sử dụng rộng rãi
Thứ ba, với tư cách là một công cụ phân tích dữ liệu nói chung, R còn là một công cụ cho Data
Mining, Big Data, Data Visualization và Machine Learning Tôi lấy một ví dụ của Data Visualization
bằng hình ảnh ấn tượng dưới đây:
Hình ảnh này được vẽ trong R dựa trên các số liệu thu thập được về các chuyến bay của 7 hãng hàng
không lớn nhất thế giới Dựa vào hình ảnh này các bạn có thể thấy trung tâm của cái mạng nhện này
là ở Bắc Mĩ và Châu Âu – những đầu mối nhộn nhịp nhất của vận tải hàng không Nếu căn cứ vào
màu sắc (mỗi hãng hàng không một màu) thì bạn cũng thấy rõ ngay các thị trường chính của những
hàng không này Suy rộng ra là, với tư cách là một nhà nghiên cứu thị trường, các xu hướng xã hội,
Trang 4hay buộc dữ liệu phải lên tiếng, phải cung cấp cho ta một thông tin đáng giá nào đó thì R hoàn toàn
là một công cụ thích hợp cho bạn lựa chọn
Một ví dụ nữa là sử dụng dữ liệu từ Google Scholar, chúng ta có thể hình ảnh hóa (Data
Visualization) về thị phần của R từ năm 1995 đến 2011 dựa trên các truy vấn tìm kiếm như sau:
Dữ liệu cần thiết đễ vẽ đồ thị trên tôi cũng gửi kèm với tài liệu này
Thứ tư, sử dụng R trong nghiên cứu và phân tích dữ liệu là một xu hướng và ngày càng phổ biến, ít
nhất là trong nghiên cứu thống kê – kinh tế lượng Hiện R được giảng dạy và sử dụng như một công
cụ phân tích dữ liệu ở nhiều trường đại học lớn, có uy tín trong lĩnh vực này ở Mĩ và Châu Âu Đây
cũng là lý đo xứng đáng để bạn chọn R
Cuối cùng, các trường đại học sớm hay muộn thì cũng không thể dùng phần mềm chùa như hiện nay
và sẽ sớm chuyển sang sử dụng các phần mềm miễn phí Hiện nay đã có một số trường đại học sử
dụng R cho việc giảng dạy thống kê và kinh tế lượng
Đối tượng bạn đọc của tài liệu này là ai?
Đây chắc chắn là câu hỏi mà tôi phải trả lời trước ki viết tài liệu này Đối tượng bạn đọc mà tôi
hướng đến trước hết là các bạn học khối nghành kinh tế nói chung có nhu cầu sử dụng R như là một
công cụ nghiên cứu – thực hành thống kê cũng như kinh tế lượng Tất nhiên bạn đọc không thuộc
khối kinh tế cũng có thể thu được nhiều lợi ích khi sử dụng tài liệu này
Ngoài ra, nếu bạn là người phóng khoáng, ưa thích cái đẹp và sự chính xác thì chắc chắn R sẽ trở
thành người bạn đồng hành lâu dài của bạn ngay cả khi bạn chọn cho mình một nghề nghiệp mà
buộc dữ liệu phải nói điều gì đó có ích Ví dụ, không giống như một số phần mềm thương mại khô
cứng khác (và bạn chẳng biến nó tính toán ra sao) khi thực hiện hồi quy OLS bạn cứ làm mãi mỗi
một thao tác R thì không như vậy, cũng là hồi quy OLS nhưng bạn có thể có hàng chục cách thức
khác nhau Về sự chính xác, theo tôi được biết thì cho đến tận phiên bản mới nhất của Stata mà tôi
đang dùng (Version 14) thì khi tính R2 với dữ liệu mảng, Stata vẫn báo kết quả sai Với R thì điều này
không có Vì bạn biết từng bước trong tính toán nếu muốn bằng cách xem trực tiếp những dòng mã
lệnh
Trang 5Bạn cần có gì để sử R với tài liệu này?
Trước hết cần nói rằng đây không phải là một tài liệu về kinh tế lượng Nó là một cuốn hướng dẫn
sử dụng R với các áp dụng cho kinh tế lượng, do vậy sẽ không đề cập nhiều đến lý thuyết (mặc dù có
một số tình huống tôi cũng có nhắc lại lý thuyết) Tôi mặc định là các bạn đã có kiến thức nền tảng
về thống kê và kinh tế lượng Ngoài ra tôi cũng khuyến cáo bạn nên sử dụng tài liệu này kèm với
cuốn Giáo Trình Kinh Tế Lượng in năm 2012 của tác giả Nguyễn Quang Dong và Nguyễn Thị Minh
của Đại Học Kinh Tế Quốc Dân (NEU) hoặc cuốn Kinh tế lượng của tác giả Nguyễn Thành Cả và
Nguyễn Thị Ngọc Miên thuộc đại học Kinh Tế Thành Phố Hồ Chí Minh (UEH)
Ngoài ra, từ chương 8 trở đi của cuốn giáo trình của NEU sử dụng nhiều dữ liệu từ cuốn sách
Introductory Econometrics: A Modern Approach của Wooldridge (2013) nên tôi cũng gửi kèm các
bạn cuốn sách này để tham khảo và đối chiếu
Sử dụng R có khó không?
Tôi chỉ nói ngắn gọn thế này: không Và tôi tin chắc là nếu bạn thành thạo R ở mức tối thiểu, bạn có
xu hướng không sử dụng các phần mềm thống kê thương mại khác Vì sao? Vì bạn hiểu bạn đang
làm gì Tuy nhiên là một người tự học nên tôi có một lời khuyên: R không phải là một kiểu “mì ăn
liền” như Eviews, SPSS, hay Stata – những phần mềm mà các bạn chủ yếu là kích chuột, kích chuột là
có kết quả R có chút khắt khe hơn khi nó yêu cầu bạn hai thứ: (1) sự thận trọng trong việc gõ các
câu lệnh, và (2) tuần tự từng bước Theo kinh nghiệm của tôi cũng như nhiều người khác, là một
người mới sử dụng R, bạn không thể nào học theo lối nhảy cóc được
Là một tài liệu định hướng thực hành nên khía cạnh lý thuyết (nhất là các công thức, các chứng
minh) sẽ không phải là trọng tâm của tài liệu này Trong tình huống cần tham chiếu lại lý thuyết một
cách rõ ràng tôi sẽ chỉ rõ tại số trang bao nhiêu, của cuốn sách hay nghiên cứu nào Tất nhiên, nếu là
sách trong nước thì tôi sẽ chỉ sử để cập đến hai cuốn giáo trình kinh tế lượng của đại học Kinh Tế
Quốc Dân và Kinh Tế Thành Phố Hồ Chí Minh Ngoài ra tôi mặc định rằng người sử dụng đã có
những kiến thức cơ bản về kinh tế lượng cũng như thống kê
Kết cấu của tài liệu này
Dự kiến tôi sẽ viết tài liệu này thành hai tập Tập một tương ứng với học phần kinh tế lượng 1 được
giảng ở NEU cũng như UEH Tuy nhiên phần này có thêm một số nội dung mà chương trình học của
EUH không có là hồi quy phân vị, Logistic, Probit, Poisson, các mô hình có biến kiểm duyệt, mô hình
hồi quy với biến công cụ, phân tích dữ liệu bảng (hay dữ liệu tổng hợp) Tập hai tương ứng với nội
dung phân tích chuỗi dữ liệu thời gian cũng một số mô hình quen thuộc như ARCH, GARCH, VAR,
BVAR
Dữ liệu sử dụng cho tài liệu
Một trong những nguyên tắc chủ đạo của tôi khi viết tài liệu này là sử dụng data có nguồn gốc rõ
ràng và đáng tin cậy Điều này đảm bảo rằng các bạn có thể kiểm tra, đối chiếu các kết quả phân tích
thu được nếu cần Một lí do nữa tôi tin rằng không thể học tốt kinh tế lượng nếu như không am hiểu
ở mức độ tối thiểu về dữ liệu mà mình đang sử dụng Tất cả số liệu được sử dụng trong tài liệu
Trang 6này các bạn có thể dễ dàng lấy trên Internet Tuy nhiên để thuận tiện tôi gửi toàn bộ chúng cùng
tài liệu này Cụ thể, các số liệu được sử dụng trong tài liệu này đến từ 7 nguồn chủ yếu dưới đây:
1 Các số liệu từ cuốn Giáo Trình Kinh Tế Lượng của tác giả Nguyễn Quang Dong và Nguyễn
Thị Minh của NEU ở dạng file Eviews (gửi kèm tài liệu này)
2 Các số liệu từ cuốn sách Kinh tế lượng của tác giả Nguyễn Thành Cả và Nguyễn Thị Ngọc
Miên của UEH được cung cấp tại: https://sites.google.com/site/kinhteluongttkueh/home
3 Bộ số liệu CPS 1988 đi kèm với gói AER Bộ số liệu engel đi kèm gói quantreg Ngoài ra còn
có một số bộ dữ liệu khác được sử dụng và được tích hợp (có sẵn) trong một số gói phân
tích của R
4 Một số bộ số liệu (file Stata) lấy từ cuốn Econometrics by Example in năm 2011 của
Gujarati
5 Bộ số liệu panel1.dta (file Stata) sử dụng ở chương 10 cho phân tích dữ liệu mảng lấy từ
cuốn Econometric Analysis of Panel Data in năm 2005 của Baltagi
6 Một số bộ dữ liệu lấy từ một số giáo trình điển hình khác về kinh tế lượng như cuốn
Introductory Econometrics: A Modern Approach ấn bản năm 2013 của Wooldridge, cuốn
Applied Logistic Regression ấn bản năm 2013 của Hosmer và Lemeshow và một số sách
khác Các dữ liệu này ở dạng file Stata
7 Một số bộ dữ liệu từng được sử dụng trong một số nghiên cứu của nước ngoài và được sử
dụng lại bởi nhiều cuốn giáo trình kinh tế lượng trên thế giới
Về văn phong của tài liệu này
Trước khi công bố tài liệu này tôi cũng gửi cho nhiều bạn đọc thẩm định trước Ý kiến phản hồi về
tài liệu chủ yếu là ở hai khía cạnh sau
Một là, văn phong bình dân với bằng chứng từ việc sử dụng nhiều đại từ “chúng ta”, “các bạn” Việc
này tôi cũng có cân nhắc trước khi viết Sự thực là thay vì viết “Chúng ta có thể tính kiểm định F trực
tiếp như sau ” bằng “Tính trực tiếp kiểm định F như sau ” là việc tôi có thể làm được Nhưng tôi
thấy viết kiểu đó tài liệu trở nên “kém thân thiện” Tôi hoàn toàn có thể viết tài liệu theo xung
hướng trang trọng điển hình của các sách giáo trình Tuy nhiên, tôi thích kiểu “thân thiện” hơn nên
sẽ vẫn để nguyên phong cách ngôn ngữ như vậy Có lẽ tôi bị ảnh hưởng từ A Field – một trong số
các tác giả yêu thích Chẳng hạn, một trong các cuốn sách thống kê của tác giả này có tên
Discovering statistics using SPSS: (and sex and drugs and rock 'n' roll) – dịch ra là : Khám phá
thống kê sử dụng SPSS: (và tình dục, ma túy, nhạc Rock – Roll)
Hai là, giải thích chi tiết quá Về điểm này tôi cần giải thích như sau Đối tượng bạn đọc của tài liệu
này có thể có mức độ học và hiểu thống kê – kinh tế lượng ở các mức độ khác nhau: từ những người
được đào tạo bài bản về thống kê – kinh tế lượng như ở khoa Toán của đại học Kinh Tế Quốc Dân
cho đến những bạn đọc không chuyên về thống kê như tôi Nên viết chi tiết, nhất là ở khía cạnh thực
hành, là điều tôi muốn hướng tới Điều này còn dựa trên kinh nghiệm của chính bản thân tôi khi học
cách sử dụng R: một lỗi rất nhỏ trong thao tác có thể làm cho một câu lệnh hay toàn bộ một chương
trình không vận hành Mà có thể tìm mãi cũng không ra Bạn đọc có thể thấy điều này về cuốn sách
về R vừa được tái bản ở Việt Nam của T.S Nguyễn Văn Tuấn (in cuối năm 2015) Rõ ràng ông có thể
viết cuốn sách ngắn cô đọng hơn Nhưng ông không làm thế
Trang 7Các sai sót
Dù đã rất cẩn thận và cố gắng, tôi tin chắc tài liệu này còn có thiếu sót Do vậy tôi rất mong nhận
được bất kì phản hồi nào của các bạn về tài liệu Dựa trên những phản hồi ấy tôi sẽ hiệu chỉnh và
hoàn thiện hơn tài liệu cho những lần đánh máy sau
Trợ giúp từ người viết tài liệu này
Trong tình huống các bạn gặp trục trặc (như thiếu data chẳng hạn) hay có bất kì phê phán nào đối
với tài liệu, các bạn có thể nhận được hỗ trợ và phản hồi một cách nhanh chóng nhất có thể từ tôi
qua ba cách thức sau (theo thứ tự ưu tiên và cập nhật giảm dần):
1 Website gồm các bài viết về phân tích dữ liệu nói chung và kinh tế lượng nói riêng tại:
http://rpubs.com/chidungkt Các bài viết ở mục này sẽ có nhãn KTLR và các bạn có thể
phản hồi ngay lập tức Tôi sẽ cố gắng cập nhật, trả lời phản hồi nhanh nhất có thể
2 Gửi câu hỏi đến địa chỉ: https://phantichdinhluong.wordpress.com/ Đây là Blog của tôi
được thành lập để chúng ta trao đổi mọi thắc mắc về R Do tôi chưa có kinh nghiệm dùng
Blog nên giao diện của nó còn chưa tiện dụng và xấu Tuy nhiên cái đó không quan trọng vì
chắc chắn nó sẽ được cải thiện Cách này được khuyến khích
3 Tài liệu này luôn được làm mới và cập nhật cứ 2 tháng mỗi lần tại:
http://www.mediafire.com/download/3lg8bsfbu6csq8d/KinhTeLuongUngDungVoiR.rar
Lời cảm ơn
Tất nhiên, mọi thứ không thể được xây dựng từ chân không Người viết tài liệu này được hưởng lợi
từ sự động viên, định hướng, công sức và sự nhiệt tình của nhiều người và do vậy tôi muốn nói lời
cảm ơn chân thành tới họ Trước hết, đó là Thầy Lê Đức Hoàng (Viện Ngân Hàng – Tài Chính, đại
học Kinh Tế Quốc Dân) – người đã giúp đỡ tôi nhiều mặt (và cũng là một người bạn) Thầy đã tạo
cho tôi sự chú ý đối với R thông qua cuốn sách tuyệt vời Analysis of Financial Time Series của Ruey
S Tsay
Ngoài ra, tôi cũng gián tiếp được hưởng lợi từ: (1) T.S Nguyễn Văn Tuấn ở viện nghiên cứu Garvan
(Australia) – người nhiệt thành cổ vũ cho việc sử dụng R trong các nghiên cứu và phân tích bằng
việc công bố tài liệu tiếng Việt đầu tiên về R qua Blog của mình vào những năm 2004, (2) T.S Daniel
Zelterman (Yale University) – người đã gửi cho tôi rất nhiều dữ liệu từ các nghiên cứu của ông cũng
như cho cuốn Applied Multivariate Statistics with R, (3) T.S Hadley Wickham (Rice University) –
người đã hào phóng gửi cho tôi bản mềm cuốn sách ggplot2 - Elegant Graphics for Data Analysis còn
đang trong quá trình in ấn của mình mà không suy nghĩ gì về vấn đề bản quyền Nhiều kiến thức thu
được về sử dụng gói ggplot2 từ cuốn sách này được sử dụng để viết một phần chương 3 của tài liệu
Tôi cũng muốn nói lời cảm ơn đến bố - mẹ, những bạn bè thân hữu đã cũng tạo điều kiện và giúp đỡ
tôi hoàn thành tài liệu này mặc dù họ có thể không ý thức được điều đó
Cuối cùng, tôi cũng muốn nói lời cảm ơn đến tất cả các bạn – những người quan tâm và sử dụng tập
tài liệu này
Trang 9Mục Lục
Chương 1: R với tư cách một công cụ nghiên cứu kinh tế lượng 18
1.1 Tổng quan về R 18
1.2 Cài đặt R, Rstudio và các Packages cần thiết 19
1.2.1 Cài đặt R cho cho Windows 19
1.2.2 Cài đặt Rstudio 20
1.2.3 Cài đặt các packages 21
1.2.4 Yêu cầu một Package cụ thể trình diện 22
1.2.5 Sử dụng Rmarkdown để trao đổi, công bố kết quả trên Internet với Rpub 23
1.2.6 Cập nhật các phiên bản mới hơn của R 26
1.3 Trợ giúp từ R 26
1.4 Xem danh sách các gói đã cài đặt cũng như số lượng các gói của R 29
1.5 Các quy ước khi sử R cho phân tích 29
1.6 Tổng kết chương mở đầu 30
Chương 2: Môi trường làm việc trong R 31
2.1 Nhập dữ liệu trực tiếp vào R 31
2.2 Hiệu chỉnh dữ liệu 32
2.3 Đọc dữ liệu từ file sẵn có ở các định dạng khác nhau, từ các nguồn bên ngoài vào R 32
2.3.1 Đọc dữ liệu từ file Eviews 33
2.3.2 Đọc dữ liệu từ Stata 34
2.3.3 Đọc dữ liệu từ SPSS 35
2.3.4 Đọc dữ liệu từ Matlab và SAS 37
2.3.5 Đọc dữ liệu từ Excel 37
2.3.6 Đọc dữ liệu định dạng txt 38
2.3.7 Đọc dữ liệu định dạng csv 38
2.3.8 Đọc nhiều file dữ liệu cùng một lúc 38
2.3.9 Đọc dữ liệu được cung cấp bởi World Bank với gói WDI 40
2.3.9.1 Giới thiệu về các số liệu được cung cấp bởi WB 40
2.3.9.2 Lấy các dữ liệu cung cấp bởi WB vào R với gói WDI 41
2.3.10 Đọc dữ liệu tài chính từ Internet với gói quantmod 47
2.3.11 Đọc dữ liệu kích thước lớn 52
2.3.12 Đọc dữ sẵn có thuộc một gói của R 54
Trang 102.4 Quản lý dữ liệu, đổi tên, hiệu chỉnh dữ liệu bằng các hàm của gói base 55
2.4.1 Tạo một data frame 56
2.4.2 Dán lại nhãn cho các quan sát thuộc bộ số liệu từ dạng số thành ki tự hoặc factor 57
2.4.3 Dán lại nhãn cho các quan sát từ dạng kí tự thành dạng số 59
2.4.4 Ghép dữ liệu vào một data frame sẵn có 59
2.4.5 Trích dữ liệu từ một data frame có sẵn với dấu [] 61
2.4.5.1 Trích xuất dữ liệu theo cột 61
2.4.5.2 Trích xuất dữ liệu theo hàng 61
2.4.5.3 Trích xuất dữ liệu đồng thời theo hàng và cột 62
2.4.6 Trích dữ liệu từ một data frame có sẵn bằng lệnh subset() 62
2.4.7 Lấy mẫu ngẫu nhiên 62
2.5 Quản lý dữ liệu, hiệu chỉnh dữ liệu bằng các hàm của gói tidyverse 63
2.5.1 Tổ chức dữ liệu ở dạng tibble 64
2.5.2 Lọc dữ liệu với lệnh filter 67
2.5.3 Chọn cột biến với lệnh select 67
2.5.4 Đổi tên biến với lệnh rename 68
2.5.5 Sắp xếp lại theo giá trị tăng dần hay giảm dần với lệnh arrange 68
2.5.6 Tạo biến mới với lệnh mutate và transmute 68
2.5.7 Lấy ra ngẫu nhiên một số quan sát với lệnh sample_n và sample_frac 69
2.5.8 Lấy ra không ngẫu nhiên một số quan sát với lệnh slice 69
2.5.9 Loại các dòng trùng nhau bằng lệnh distinct 69
2.5.10 Hợp nhất dữ liệu bằng lệnh bind_rows và bind_cols 70
2.5.11 Dán lại nhãn cho các quan sát với hàm recode() hoặc recode_factor() 71
2.5.12 Dán lại nhãn cho các quan sát với hàm if_else hoặc case_when 73
2.5.13 Chuyển từ dạng wide sang long cho các nghiên cứu dữ liệu bảng với lệnh gather 74 2.5.14 Hợp nhất có điều kiện theo cột cho các bộ dữ liệu 76
2.6 Toán tử tẩu thuốc pipe (%>%) 79
2.7 Tính các thống kê cơ bản với bộ số liệu PISA sử dụng gói dplyr 81
2.8 Lưu các dữ liệu đã có trong R thành file Excel, Stata 85
2.9 Lưu các kết quả, các lệnh đã thực hiện cũng như các Objects để sử dụng cho lần sau 86
2.10 Thực hiện các tính toán thông thường, đại số tuyến tính 87
2.11 Mô phỏng dữ liệu 93
2.12 Viết và trình bày R code đúng cách 95
Trang 112.13 Lưu ý về sử dụng dấu = thay cho <- và lệnh attach 97
2.14 Lưu ý khi gặp tình huống cùng một tên hàm tồn tại ở hai hay nhiều gói 98
Chương 3: Các thống kê mô tả và hình hóa dữ liệu với R 100
3.1 Thực hiện các thống kê mô tả trong R 100
3.1.1 Thống kê mô tả với các hàm sẵn có trong R 100
3.1.2 Thống kê mô tả chi tiết với gói pastecs 102
3.1.3 Thống kê mô tả chi tiết với gói stargazer 103
3.1.4 Thống kê mô tả chi tiết với gói fBasics 104
3.2 Tìm các giá trị thống kê và mức xác suất của phân phối N, t, F,và χ2 105
3.2.1 Phân phối chuẩn N 105
3.2.2 Phân phối Student t 107
3.2.3 Phân phối F 109
3.2.4 Phân phối χ2 110
3.3 Vẽ các Graph và đồ thị trong R 111
3.3.1 Các Graphs với gói mặc định graphics của R 111
3.3.1.1 Vẽ Scatter Plot 111
3.3.1.2 Histogram 113
3.3.1.3 Hàm mật độ xác suất Density 115
3.3.1.4 Boxplots 116
3.3.1.5 Biểu đồ cột 121
3.3.1.6 Pie Chart 123
3.3.1.7 Biểu đồ đường 125
3.3.1.8 Trình bày nhiều Graphs trên cùng một cửa sổ hiển thị trong R 126
3.3.2 Các Graphs với gói ggplot2 126
3.3.2.1 Vẽ Scatter Plot 127
3.3.2.2 Vẽ đường hồi quy 128
3.3.2.3 Vẽ Histogram 130
3.3.3.4 Boxplots 132
3.3.2.5 Biểu đồ cột 133
3.3.2.6 Vẽ các đường cong hồi quy bặc hai 139
3.3.2.7 Hàm mật độ xác suất Density 141
3.3.2.8 Biểu đồ đường 143
3.3.2.9 Pie Chart 145
Trang 123.3.3 Hình ảnh hóa dữ liệu (Data Visualiztion) nâng cao 146
3.3.3.1 Trình bày nhiều Graphs trên cùng một cửa sổ hiển thị trong R với gói grid 146
3.3.3.2 Vẽ thêm Histogram cho đường hồi quy với gói ggExtra 147
3.3.3.3 Vẽ thêm hàm mật độ xác suất cho đường hồi quy với gói gridExtra 148
3.3.3.4 Vẽ thêm Boxplot cho đường hồi quy với gói gridExtra 149
3.3.3.5 Vẽ đồ thị thị phần của R giai đoạn 1995 - 2011 150
3.3.3.6 Sử dụng gói plotly tạo ra các hình ảnh tương tác 150
3.3.3.7 Sử dụng gói googleVis tạo ra các hình ảnh tương tác 155
3.4 Môt số nguyên tắc của hình ảnh hóa dữ liệu của Edward Tufte 159
3.5 Lưu các Graphs 161
3.6 Mini Projects: Hình ảnh hóa dữ liệu trong thực tế 162
Chương 4: Mô hình hồi quy tuyến tính hai biến số 171
4.1 Một số thống kê cơ bản về bộ dữ liệu 171
4.2 Thực hiện hồi quy và một số kiểm định thường gặp 173
4.2.1 Hồi quy đơn, khoảng tin cậy cho các hệ số và bảng ANOVA 173
4.2.2 Tìm các quan sát bất thường và chẩn đoán lỗi mô hình bằng hình ảnh 177
4.2.3 Thực hiện một số kiểm định thường gặp cho mô hình hồi quy 178
4.2.3.1 Kiểm định tính phân phối chuẩn của phần dư 178
4.2.3.2 Kiểm định Durbin - Watson 181
4.2.3.3 Kiểm định Wald về một giá trị cụ thể của một hệ số hồi quy 182
4.2.3.4 Kiểm định Wald đồng thời cho nhiều hệ số hồi quy 182
4.3 Mô phỏng Monte Carlo kiểm tra các giả thuyết CLMR 183
4.4 Sử dụng kết quả hồi quy cho ước lượng 186
4.5 Một số tiêu chí thường sử dụng để đánh giá chất lượng mô hình 189
4.5.1 Tiêu chí R 2 và tương quan giữa Y và Ŷ 189
4.5.2 Các tiêu chí đánh giá theo phần dư 189
4.5.3 Các tiêu chuẩn thông tin AIC, SIC, và Cp của Mallow 190
4.5.4 Tỉ lệ sai sót huấn luyện, sai sót kiểm định và hiện tượng quá khớp 191
4.6 Đánh giá chất lượng của mô hình bằng các phương pháp tái chọn mẫu 195
4.6.1 Phương pháp Bootstrap 196
4.6.2 Phương pháp kiểm tra chéo 202
4.6.2.1 Kiểm tra chéo LOOCV 202
4.6.2.2 Kiểm tra chéo k lớp 204
Trang 134.6.2.3 Sự đánh đổi Bias – Variance 205
4.6.3 Giới thiệu về các phương pháp tái chọn mẫu bằng gói caret 206
4.7 Dữ liệu thiếu và xử lý dữ liệu thiếu trong phân tích kinh tế lượng 212
Chương 5: Mở rộng mô hình hồi quy hai biến số 218
5.1 Hồi quy qua gốc tọa độ - mô hình CAPM 218
5.2 Vấn đề thay đổi đơn vị của biến 221
5.3 Hồi quy chuẩn hóa 223
5.4 Dạng hàm của mô hình hồi quy 224
5.4.1 Mô hình logarit tuyến tính 224
5.4.2 Mô hình bán logarit 227
5.4.3 Mô hình xu hướng tuyến tính 230
5.4.4 Mô hình tuyến tính – logarit 231
5.4.5 Mô hình nghịch đảo 233
5.4.6 Mô hình đa thức 234
Chương 6: Mô hình hồi quy bội 236
6.1 Thực hiện hồi quy bội trong R và khoảng tin cậy cho các hệ số 236
6.2 Khoảng tin cậy cho một biểu thức của hệ số hồi quy 237
6.3 Kiểm định Wald về sự ràng buộc của các hệ số hồi quy 238
6.4 Kiểm định F về việc đồng thời bằng không của nhiều hệ số hồi quy 239
6.5 Mối liên hệ hình chữ U ngược giữa giáo dục và mức lương 241
6.6 hồi quy chuẩn hóa và vấn đề so sánh tác động của các biến độc lập 242
6.7 Kiểm định LM, LR trong trường hợp kích cỡ mẫu là lớn 243
6.8 Gợi ý trả lời một sô bài tập chương 2 thuộc cuốn giáo trình của NEU 246
Chương 7: Các mô hình hồi quy biến giả 254
7.1 Bản chất của biến giả và các mô hình hồi quy ANOVA 254
7.1.1 mô hình ANOVA với chỉ một biến giải thích là biến giả duy nhất 254
7.1.2 mô hình ANOVA với hai biến giả trở lên 256
7.1.3 mô hình ANOVA có sự tương tác của các biến giả 258
7.2 Mô hình có chứa cả biến giả lẫn biến định lượng – mô hình ANCOVA 259
7.2.1 Mô hình ANCOVA không có sự tương tác giữa các biến 259
7.2.2 Mô hình ANCOVA có sự tương tác giữa các biến 259
7.2.3 Vai trò của biến định tính và kiểm định Chow 260
7.2.4 Sử dụng biến định tính thay thế cho kiểm định Chow 261
7.3 Biến định tính có nhiều phạm trù 264
Trang 147.4 Hồi quy riêng lẻ cho từng nhóm 266
7.5 Vấn đề gán giá trị cho biến giả 269
7.6 Sử dụng biến định tính cho hồi quy từng khúc và phân tích mùa vụ 271
7.2.1 Hồi quy từng khúc 271
6.7.1 Tính chất mùa vụ trong phân tích kinh tế sử dụng biến định tính 273
Chương 8: Hiện tượng đa cộng tuyến và cách xử lý đa cộng tuyến 276
8.1 Hiện tượng đa cộng tuyến 276
8.2 Một ví dụ minh họa hiện tượng đa cộng tuyến 278
8.3 Xử lý hiện tượng đa cộng tuyến bằng bỏ biến số căn cứ vào tiêu chí Cp của Mallows 284
8.4 Xử lý hiện tượng đa cộng tuyến bằng phân tích thành phần chính PCA 290
8.5 Lựa chọn số lượng biến căn cứ vào các tiêu chuẩn thông tin BIC 293
Chương 9: Phương sai sai số thay đổi trong mô hình hồi quy 297
9.1 Phương sai sai số thay đổi và hậu quả 297
9.2 Chẩn đoán phương sai sai số thay đổi 298
9.2.1 Các phương pháp không chính thức 298
9.2.1.1 Căn cứ vào bản chất của các biến số kinh tế 298
9.2.1.2 Căn cứ vào đồ thị phần dư 298
9.2.2 Căn cứ vào các bằng chứng thống kê chính thức 299
9.2.2.1 Kiểm định Park 299
9.2.2.2 Kiểm định Glejser 302
9.2.2.3 Kiểm định Goldfeld - Quandt 303
9.2.2.4 Kiểm định do Breusch – Pagan đề xuất dựa trên kiểm định F 304
9.2.2.5 Kiểm định White 307
9.2.2.6 Kiểm định Koenker - Basett 308
9.3 Một số cách khác phục phương sai sai số thay đổi 309
9.3.1 Phương pháp bình phương nhỏ nhất có trọng số và đổi biến số 309
9.3.2 Sử dụng biến đổi Box – Cox và Yeo-Johnson 312
Chương 10: Lỗi định dạng và lựa chọn mô hình 316
10.1 Các tiêu chuẩn lựa chọn mô hình 316
10.2 Các loại lỗi mô hình 316
10.3 Bỏ sót biến quan trọng 317
10.3.1 Các hậu quả của việc bỏ sót biến quan trọng 317
10.3.2 Kiểm định Wald 317
10.3.3 Kiểm định F 320
Trang 1510.3.4 Kiểm định Ramsey RESET 320
10.3.5 Kiểm định Lagrange Multiplier 322
10.4 Thêm biến không cần thiết 324
10.4.1 Các hậu quả của thêm biến không cần thiết 324
10.4.2 Các kiểm định 324
10.5 Dạng hàm sai 324
10.5.1 Kiểm định Koop 324
10.5.2 Ramsey Test 326
10.5.3 Davidson – MacKinnon Test 328
10.6 Lỗi đo lường 330
10.7 Lỗi do các quan sát bất thường, đòn bẩy cao, quan sát gây ảnh hưởng 330
Chương 11: Hồi quy với biến công cụ và hồi quy hai giai đoạn 2SLS 336
11.1 Nguyên nhân của việc sử dụng biến công cụ cho mô hình hồi quy 336
11.2 Sử dụng đồng thời nhiều biến công cụ cho một biến số 339
11.3 Kiểm định biến công cụ yếu, kiểm định Wu-Hausman và Sargan 340
11.4 Hậu quả của việc sử dụng biến công cụ yếu 341
11.5 Ước lượng bình phương nhỏ nhất hai giai đoạn 2SLS 343
Chương 12: Phân tích dữ liệu bảng (Panel Data) 346
12.1 Giới thiệu về dữ liệu bảng 346
12.2 Giới thiệu bộ số liệu sử dụng và package cần thiết cho phân tích 347
12.3 Phân tích dữ liệu mảng cho mô hình nghiên cứu 349
12.3.1 Hồi quy gộp (Pooled OLS) 350
12.3.2 Mô hình tác động cố định biến giả SLDV và kiểm định gộp 351
12.3.3 Mô hình tác động cố định không có biến giả 355
12.3.4 Mô hình tác động ngẫu nhiên một chiều 357
10.3.5 Mô hình tác động ngẫu nhiên hai chiều 361
12.4 Một số kiểm định lựa chọn và chẩn đoán lỗi của mô hình 362
12.4.1 Kiểm định lựa chọn giữa FEM , Pooled OLS và REM 362
12.4.2 Kiểm định Breusch-Pagan cho lựa chọn giữa REM và Pooled OLS 364
12.4.3 Một số kiểm định khác chẩn đoán lỗi mô hình sử dụng dữ liệu mảng 365
12.4.3.1 Kiểm định tương quan phần dư giữa các cá thể 365
12.4.3.2 Kiểm định tương quan chuỗi cho FEM, REM 365
12.4.3.3 Kiểm định phương sai sai số thay đổi cho FEM 366
12.5 Một số phân tích hình ảnh – đồ thị cho dữ liệu bảng 367
Trang 1612.6 Một số lưu ý về định dạng dữ liệu và công thức cho mô hình 369
12.7 Một số mô hình nâng cao cho phân tích dữ liệu mảng 371
12.7.1 Sử dụng biến công cụ 371
12.7.2 Ước lượng Hausman – Taylor 376
12.7.3 Phương pháp moment tổng quát GMM 378
12.7.4 Ước lượng FGLS 379
12.8 Vài kết luận cuối cùng về phân tích dữ liệu mảng 380
Chương 13: Các mô hình với biến phụ thuộc là rời rạc 381
13.1 Mô hình xác suất tuyến tính LPM 381
13.2 Mô hình Logistic và một số tiêu chí đánh giá 382
13.2.1 Mô hình Logistic 382
13.2.2 Một số tiêu chí đánh giá chất lượng của mô hình Logistic 394
13.2.2.1 Kiểm định Hosmer-Lemeshow 394
13.2.2.2 Các tiêu chí khác đo lường khả năng phân loại của mô hình 395
13.3 Mô hình Logistic đa cấp độ 399
13.4 Mô hình Probit 403
13.5 So sánh Probit và Logistic theo tiêu chí AUC 406
13.6 Một vài nhận xét về chương 10 sách giáo trình 408
13.7 Ứng dụng trong nghiên cứu của mô hình Logit và Probit và một số mô hình phân loại khác cho xếp hạng tín dụng 410
13.8 Lựa chọn mô hình phù hợp cho bài toán phân loại – xếp hạng hồ sơ tín dụng 418
13.9 Mô hình cây phân loại và so sánh với mô hình Logistic 420
13.9.1 Giới thiệu về mô hình cây phân loại 420
13.9.2 So sánh mô hình cây phân loại và Logistic dựa trên hậu quả kinh tế của việc sử dụng 423
Chương 14: Mô hình có biến bị kiểm duyệt: Tobit và hồi quy Poisson 432
14.1 Mô hình Tobit 432
14.2 Hồi quy Poisson 434
Chương 15: Phân tích nhân tố khám phá EFA 436
15.1 Mô tả số liệu và các gói cần thiết cho phân tích 436
15.2 Các phân tích sơ bộ cần thiết 437
15.2.1 Phân tích tương quan 437
15.2.2 Phân tích một số chỉ tiêu thống kê về các câu hỏi 438
15.3 Kiểm định KMO và Bartlett 439
Trang 1715.3.1 Kiểm định KMO 439
15.3.2 Kiểm định Bartlett 440
15.4 Số lượng các nhân tố chính rút ra 440
15.5 Các biến cấu thành nhân tố, đặt tên cho nhân tố và kiểm định Cronbach Alpha 442
15.6 Mini Project: Hình ảnh hóa dữ liệu sử dụng thang đo Likert 446
15.7 Về xu hướng sử dụng phân tích EFA trong nghiên cứu hiện nay 454
Trang 18Chương 1: R với tư cách một công cụ nghiên cứu kinh tế lượng
Chương này chúng ta sẽ tìm hiểu về R với tư cách là một phần mềm tính toán thống kê – kinh tế lượng
kiêm ngôn ngữ lập trình cũng như cách cài đặt R và một số Packages (gói) cần thiết cho nghiên cứu
thống kê – kinh tế lượng
1.1 Tổng quan về R
Động lực ra đời của R khá đơn giản Vào khoảng năm 1993 Ross Ihaka và Robert Gentleman ở
University of Auckland (New Zealand) nhận thấy rằng các phần mềm thống kê thương mại sử dụng
cho các tính toán thống kê vào thời điểm ấy là còn đắt đỏ và quan trọng hơn là không phù hợp và
chưa linh hoạt cho cả mục đích giảng dạy thống kê cũng như một số tình huống công việc Hai ông
đã quyết định lựa chọn ngôn ngữ S được phát triển bởi Bell Laboratories với nỗ lực viết một phần
mềm thống kê mới Lí do lựa chọn S có lẽ là do sự thành công của S-PLUS – một phần mềm thống kê
cũng dựa trên ngôn ngữ S được phát triển những năm 80 và đến thời điểm đó đã được sử dụng phổ
biến Tuy nhiên người nhìn thấy tiềm năng và sức mạnh của R nếu như mã nguồn (R code) của nó
được công khai với tư cách là một phần mềm miễn phí chính là Martin Maechler Được thuyết phục
bởi Maechler, Ross Ihaka và Robert Gentleman đã quyết định rằng R là miễn phí cho tất cả người sử
dụng vào năm 1995 Kể từ thời điểm đó, R được đón nhận và ngày càng trở nên mạnh mẽ vì nó
được phát triển bởi một cộng đồng rộng lớn những chuyên gia về phân tích dữ liệu mà trước tiên là
các nhà thống kê và kinh tế lượng Đến thời điểm hiện tại thì R đã là một công cụ phân tích dữ liệu
đa năng không chỉ sử dụng cho thống kê mà còn là công cụ của Data Mining, Machine Learning, và
Big Data Với tư cách là một công cụ cho nghiên cứu thống kê – kinh tế lượng, R ngày càng trở nên
phổ biến và được giảng dạy ở hầu hết các trường đại học lớn Princeton, Yale, University of
California at Berkeley, University of California at Los Angeles, Stanford, Havard, MIT ở Hoa Kì và
Cambridge ở Anh
Khoảng năm 2004, TS Nguyễn Văn Tuấn có lẽ là người Việt Nam đầu tiên viết về R khi giới thiệu tập
tài liệu về R (hồi đó là hơn 100 trang) qua blog của mình Hiện tài liệu này đã trở thành một cuốn
sách dày hơn 500 trang được in bởi nhà xuất bản thành phố Hồ Chính Minh (cuối năm 2015) Tuy
nhiên, tác giả là một nhà nghiên cứu Y Học nên cuốn sách này là thuộc Biostatistics (thống kê Y –
Sinh) nên có thể chưa phù hợp lắm nhu cầu của người học và nghiên cứu các vấn đề kinh tế
Với mục đích nghiên cứu thống kê – kinh tế lượng, R có thể thực hiện được tất cả các phân tích mà
các phần mềm thống kê thương mại như Eviews, SPSS – AMOS, STATA, SAS có thể làm Và trong
nhiều tình huống còn làm tốt hơn Chẳng hạn, nếu phân tích dữ liệu mảng thì Eviews có khả năng
hạn chế và kém hơn so với Stata Nhưng nếu là nghiên cứu dùng đến thống kê đa biến, thống kê
nhiều chiều như phân tích nhân tố khám phá EFA, CFA, phân tích đường dẫn (Path Analysis)… thì
bạn có xu hướng dùng SPSS – AMOS hay Stata vì nó phù hợp hơn Nhưng với R bạn chẳng cần lựa
chọn gì cả Nó thực hiện được tất cả các phân tích đó, kể các các phân tích phức tạp cho dữ liệu chéo,
dữ liệu mảng, đến dữ liệu chuỗi thời gian và dữ liệu tần số cao (High Frequency Data) vốn phổ biến
trong nghiên cứu tài chính
Trang 19Ngoài ra, với tư cách là một ngôn ngữ lập trình hoàn thiện, R cho phép bạn xử lý những phân tích
một cách linh hoạt hoặc thiết kê những hàm, những chương trình cho phép bạn xử lí một vấn đề
phân tích cụ thể nào đó và có thể chia sẻ với người khác
Việc học và làm chủ được một công cụ phân tích số liệu mạnh như R cho thống kê – kinh tế lượng là
một công việc không hề khó Điều này tôi có thể khẳng định chắc chắn Thứ bạn cần là sự đều đặn
trong thực hành (thường không quá 1 tháng với mỗi ngày học 60 phút) Một khi đã thành thao R ở
một mức độ tối thiểu nào đó chắc chắn bạn chỉ muốn học thêm nhiều về R
1.2 Cài đặt R, Rstudio và các Packages cần thiết
Phần này giới thiệu cách thức cài đặt R, Rstudio cho Windown, Mac cũng như một số khía cạnh liên
quan khác
1.2.1 Cài đặt R cho cho Windows
Để sử dụng R cho các máy dùng hệ điều hành Windows, trước hết các bạn cần cài đặt nó Tôi kiến
nghị rằng các bạn nên cài đặt phiên bản mới nhất R 3.3.2 (biệt danh của nó là Sincere Pumpkin
Patch) từ địa chỉ sau:
https://cran.r-project.org/bin/windows/base/R-3.3.2-win.exe
Sau khi cài đặt (cả cài và download chưa đến 10 phút), R có giao diện như sau (trích một phần):
Nếu dùng Mac bạn cần cài đặt R cho phiên bản Mac ở mục Download R for (Mac) OS X tại:
https://cran.r-project.org/
Đến đây chúng ta có thể sử dụng trực tiếp R Chẳng hạn chúng ta thực hiện phép tính 2+2 rồi enter
kết quả là (trích một phần):
Trang 20Tuy nhiên cách thực thực hiện các phân tích, tính toán trực tiếp trong R như trên là không khuyến
khích Thay vì sử dụng R trực tiếp chúng ta sẽ sử dụng R thông qua Rstudio – một giao diện thân
thiện và có nhiều hỗ trợ hơn Chúng ta tìm hiểu vấn đề này ở mục ngay sau đây
1.2.2 Cài đặt Rstudio
Nếu bạn nào từng sử dụng các phần mềm thống kê có môi trường làm việc dạng giao diện cửa sổ
(SPSS là một điển hình) thì khi làm việc với R bạn sẽ cảm thấy khá khó chịu Thay vì di chuyển và
kích chuột bạn cần phải nhớ các dòng lệnh khi làm việc với R Chưa hết, nếu bạn gõ sai R cũng không
báo cho bạn biết Rstudio được ra đời với nhiều mục đích trợ giúp (hay chí ít là làm cho R “gần hơn”
với giao diện cửa sổ - vốn rất dễ sử dụng) khi làm việc với R Hiện nay Hadley Wickham là Chief
Scientist của Rstudio
Rstudio có hai phiên bản, trong đó có một phiên bản miễn phí dành cho các máy tính cá nhân Tuy
thuộc vào dòng máy (dùng Windows hay máy Mac) mà bạn cần cài Rstudio tại:
https://www.rstudio.com/products/rstudio/download/
Khi kích vào link trên bạn nhớ chọn cho mình phiên bản Rstudio phù hợp dưới đây:
Sau khi load và cài đặt (tầm 5 phút) khởi động Rstudio chúng ta có giao diện như sau:
Trang 21Giao diện của nó được chia thành 4 phần và phần dưới cùng bên trái chính là nơi chúng ta sẽ gõ các
dòng lệnh Đến đây bạn có thể trải nghiệm những khả năng của Rstudio Lúc này các dòng lệnh sẽ là
màu xanh và kết quả hiện lên có chữ màu đen Hình ảnh (nếu có) sẽ được hiện ở khu vực phía dưới
bên phải của màn hình Chẳng hạn để tính 2+2 tại cửa sổ lệnh của Rstudio (bên dưới góc trái màn
hình) các bạn gõ 2+2 rồi enter
Tất nhiên các bạn gõ lệnh trong R và Rstudio thì kết quả luôn luôn như nhau Nhớ rằng Rstudio là
thư hỗ trợ chúng ta sử dụng R thuận tiện hơn Ngoài ra Rstudio còn có thể “biến” các phân tích của
bạn thành một bài trên web site Ví dụ:
http://rpubs.com/chidungkt/185954
Như đã nói, Rstudio là một kiểu môi trường, một kiểu giao diện giúp chúng ta thuận tiện hơn trong
việc sử dụng R Do vậy, tất cả các phân tích mà chúng ta thực hiện trong tài liệu này sẽ được thực
hiện trong Rstudio Tất nhiên nếu bạn muốn, bạn có thể sử dụng trực tiếp R Các bạn cũng cần chú ý
rằng trong tài liệu này, cụm từ “tại cửa sổ lệnh của R” thì hoàn toàn tương đương với cụm từ “tại
cửa sổ lệnh của Rstudio”
1.2.3 Cài đặt các packages
Ban đầu được phát triển như là một công cụ cho tính toán Thống Kê - Kinh Tế Lượng nhưng theo
thời gian R đã trở thành một công cụ phân tích dữ liệu đa năng Từ đào mỏ dữ liệu (Data Mining),
dữ liệu lớn (Big Data) trong nhiều lĩnh vực khác nhau (Marketing, Kinh Tế, Tài Chính, Thống kê Y -
Sinh, nghiên cứu Ngôn Ngữ Học) đến cả vẽ bản đồ Điều này ngụ ý rằng chúng ta không cần đến mọi
chức năng phân tích của nó Mỗi khi cài đặt R thì chỉ có một số hàm, chẳng hạn hàm mean() để tính
trung bình, là luôn thường trực để chúng ta sử dụng Tuy nhiên nếu chúng ta cần một phân tích đặc
biệt nào đó như phân tích dữ liệu bảng thì chúng ta cần phải cài đặt một hoặc một số gói (Packages)
cần thiết tương ứng
Cho đến thời điểm tài liệu này được viết đã có hơn 9000 gói được viết cho R bởi một cộng đồng
rộng lớn thuộc giới phân tích dữ liệu – bao gồm cả các nhà thống kê, kinh tế lượng và giới phân tích
dữ liệu chuyên nghiệp Chúng ta tạm hiểu một Package của R là một tập hợp các chương trình, hàm
được viết sẵn để xử lý một nhóm các phân tích hay một nhóm các bài toán nào đó Trong nhiều
trường hợp, các Packages này có thể bao gồm cả dữ liệu đi kèm Ví dụ gói AER – một gói trong số các
gói mà chúng sử dụng trong tập tài liệu này có chứa bộ dữ liệu CPS1988 – một bộ dữ liệu tương tự
như VHLSS của Việt Nam
Đối với nghiên cứu thống kê – kinh tế lượng, dưới đây là một số gói quan trọng mà chúng ta cần
đến:
Tên gói Công dụng
xlsx Đọc data đuôi xlsx (file Excel) gdata Đọc data đuôi xls (file Excel) foreign Đọc data đuôi sav (file SPSS), dta (file Stata) hexView Đọc data đuôi wf1 và WF1(file Eviews)
Trang 22AER Gói thực hiện nhiều phân tích kinh tế lượng cơ bản ggplot2 Vẽ Graph với chất lượng hình ảnh cao
Để cài đặt một gói nào đó, ví dụ gói gdata chẳng hạn, các bạn làm như sau Tại cửa sổ lệnh của R các
bạn gõ:
install.packages("gdata")
Tuy nhiên cách cài đặt như các bạn vừa thực hiện ở trên là không khuyến khích Nguyên nhân là
một số gói của R để sử dụng được còn phụ thuộc vào một hoặc một số gói khác Do vậy an toàn nhất
là cài đặt với lựa chọn dependencies = TRUE với hàm ý rằng chúng ta sẽ cài đặt luôn tất cả các gói
phụ thuộc:
install.packages("gdata", dependencies = TRUE)
Kể từ đây, khi cài đặt bất kì gói nào chúng ta đều nên có lựa chọn thêm là dependencies = TRUE dù
rằng có thể có gói nào đó không phụ thuộc vào bất kì gói nào Nghĩa là chúng ta đang thực hiện một
chiến thuật kiểu “Giết nhầm còn hơn bỏ sót”
Khi nó rằng “một số gói quan trọng” nghĩa là vẫn còn một số gói “râu ria” nữa Đương nhiên sau một
thời gian thực hành các bạn sẽ thành thạo việc xác định gói nào cần và tự biết cách tự cài đặt cũng
như sử dụng chúng Trước mắt, các bạn nên cài đặt tất cả các gói mà tôi liệt kê ở trên
Cách thức cài đặt một gói như trên chỉ áp dụng cho những gói có trên CRAN – tạm hiểu là một “kho
chứa” các gói của R và được lưu ở một máy chủ nào đó Có một số gói đang được phát triển hoặc đã
viết xong rồi nhưng tác giả chưa “công bố” chính thức trên CRAN mà lại lưu tại tài khoản của cá
nhân họ trên github (một loại tài khoản lưu trữ tài liệu và chương trình) thì cách cài đặt sẽ khác
bằng lệnh install_github() như ở mục 8.4 mà chúng ta sẽ nghiên cứu cách cài đặt sau
1.2.4 Yêu cầu một Package cụ thể trình diện
Yêu cầu một gói trình diện để sử dụng trong R quan trọng đến mức tôi phải để riêng một mục riêng
Nếu có một công việc nào đó bạn yêu cầu R thực hiện lệnh ggplot() nhưng bạn quên không gọi
package tương ứng để thực hiện công việc ấy thì R sẽ báo lỗi kiểu như sau:
Lí do là vì ggplot là một hàm (lệnh) thuộc gói ggplot2 – một gói mà bạn đã cài đặt nhưng bạn quên
yêu cầu gói này trình diện Để gọi gói này trình diện, bạn thực hiện theo câu lệnh sau:
library(ggplot2)
Các bạn thực hiện theo cú pháp này: tên gói bạn muốn gọi luôn để trong dấu ( ) của câu lệnh trên
Điều này áp dụng cho mọi gói trong R Do vậy khi yêu cầu một gói trình diện theo cú pháp trên mà
gặp thông báo kiểu như sau:
Error in library(XXX) : there is no package called ‘XXX’
Trang 23Thì có nghĩa là bạn chưa cài đặt gói XXX này Lúc đó, quay trở lại mục 1.2.3 để xem lại cách cài đặt
gói có tên XXX
1.2.5 Sử dụng Rmarkdown để trao đổi, công bố kết quả trên Internet với Rpub
Rstudio hỗ trợ chúng ta công bố các phân tích trên mạng Internet Đây là một ví dụ của việc công bố
các phân tích trên mạng: http://rpubs.com/chidungkt/215596
Việc công bố trên mạng như trên sẽ tạo thuận lợi cho việc trao đổi học hỏi lẫn nhau Để sử dụng
chức năng này chúng ta sử dụng một ứng dụng của Rstudio thường gọi là Rmarkdown Rmarkdown
là một hỗ trợ rất mạnh của R Nó cho phép chúng ta xuất kết quả phân tích, code hoặc cả hai ra ít
nhất 4 định dạng: (1) website để công bố trên mạng Internet, (2) định dạng word, (3) định dạng pdf,
và (4) mẫu trình bày (template) của hầu hết các tạp chí có trên ScienceDirect
Để sử dụng Rstudio chúng ta cài đặt hai gói là rmarkdown và knitr:
install.packages("rmarkdown", dependencies = TRUE)
install.packages("knitr", dependencies = TRUE)
Đây là hai gói đặc biệt vì khi cần sử dụng nó không cần phải gõ lệnh library() như thường thấy Sau
khi cài đặt xong, để công bố code cũng như kết quả phân tích ta làm theo các bước sau:
Sau khi chọn R Markdown (khoanh vùng viền đỏ) chúng ta có giao diện kiểu như sau (chú ý rằng
giao diện của bạn có thể không hoàn toàn giống như vậy ở một số chi tiết phụ):
Trang 24Đây là mẫu cơ bản Chúng ta có thể hiệu chỉnh mẫu theo ý muốn của chúng ta dựa trên mẫu cơ bản
này Chẳng hạn xóa hoàn toàn khu vực có chữ tiếng Anh và thay bằng câu “Rmarkdown là một ứng
dụng cho phép công bố phân tích trên mạng.” Hãy quan sát thật kĩ sự khác biệt giữa mẫu cơ bản và
hiệu chỉnh (do chúng ta xóa một số lệnh cũng như tùy chỉnh, gõ mới một số lệnh) dưới đây:
Trang 25Ở đây khu vực A là khu vực bạn có thể chính sửa Khu vực B không chỉnh sửa Các khu vực C và D gọi
là code chunk – nơi chúng ta gõ các lệnh của R Cụ thể ở code chunk C chúng ta đã gõ hai lệnh và
data(iris) và summary(iris) còn code chunk D chỉ có một lệnh là hist(iris$Sepal.Length)
Như vậy phân tích của bạn chỉ có 3 câu lệnh mà thôi Để xuất kết quả của ba câu lệnh này lên mạng
chúng ta kích vào Knit HTML ↦ Knit to HTML như dưới đây:
Đến bước này R sẽ hỏi lưu một cái gì đó Bạn cứ lưu đi Lưu và ấn OK được sản phẩm trung gian như
sau:
Đến đây bạn muốn công bố kết quả phân tích lên mạng Internet thì kích vào cửa sổ Publish ở góc
trên bên phải Rstudio có thể yêu cầu bạn đăng kí một tài khoản ở bước cuối cùng này Nếu bạn làm
đúng (có thể cần một chút thời gian thử - sai ) thì bạn sẽ có sản phẩm tương tự như sau:
Trang 26http://rpubs.com/chidungkt/228157
Thay vì kích Knit to HTML, nếu bạn muốn xuất ra file word thì kích vào Knit to Word Thực tế tài
liệu này được viết gần như hoàn toàn trong Rmarkdown
1.2.6 Cập nhật các phiên bản mới hơn của R
R thường cập nhật và cải tiến nhanh chóng (khoảng 1 quý hay nửa năm một lần) Ví dụ những phân
tích trong tài liệu này là sử dụng R 3.3.2 Muốn cài đặt những phiên bản mới hơn của R, trước hết
chúng ta cài đặt gói installr bằng lệnh install.packages(“installr”) Kế tiếp tại cửa sổ lệnh của
Rstudio thực hiện các lệnh sau để cài đặt các phiên bản mới nhất (nếu có) của R:
library(installr)
setInternet2(TRUE) # Câu lệnh này dành cho mục đích cài các biên bản thấp hơn
3.3.0 của R.Cao hơn thì không cần
installr::updateR() # Cập nhật (cài đặt) phiên bản mới nhất của R
Trước khi cài đặt (cập nhật) mới các bạn cũng nên xem R bạn đang sử dụng thuộc phiên bản gì bằng
cách gõ version tại cửa sổ của Rstudio Cá nhân tôi không hứng thú việc cập nhật mới vì nguyên
nhân sau: có nhiều gói vốn sử dụng được ở phiên bản cũ nhưng sẽ không tương thích với phiên bản
mới và do đó bạn cần cài đặt lại – một việc rất tốn thời gian còn hơn cả cài đặt R
1.3 Trợ giúp từ R
Mục này bạn nên biết để tự trả lời một số tình huống chưa hiểu, thậm chí là khó khăn nếu có khi sử
dụng R với sự trợ giúp của Google dịch (nếu bạn đọc tiếng Anh chưa thạo) Giả sử bạn đã cài đạt gói
lmtest và muốn biết sơ bộ các hàm, lệnh (và mọi thứ cơ bản khác) thuộc một gói này, trong R bạn
gõ đồng thời hai lệnh:
library(lmtest)
help(package = lmtest)
Lúc này chúng ta nhận được các mô tả về các hàm của gói này (trích) xuất hiện góc phải phía dưới
giao diện của Rstudio :
Các gói thường luôn đi kèm với một số bộ dữ liệu nào đó để minh họa các lệnh (hay các hàm của
gói) Để xác định một gói cụ thể, chẳng hạn lmtest, có đi kèm với những bộ số liệu nào các bạn gõ:
Trang 27data(package = "lmtest")
Sau khi thực hiện câu lệnh này các bạn sẽ thấy góc trái phía trên của Rstudio báo cáo như sau (trích
một phần):
Với vốn tiếng Anh cơ bản các bạn có thể đoán bộ dữ liệu có tên bondyield (thứ 4 từ trên xuống) có
thể là lãi suất của trái phiếu Để biết nhiều thông tin hơn nữa về bộ dữ liệu này các bạn gõ:
help("bondyield", package = lmtest)
Lúc này góc phải phía dưới của Rstudio hiển thị các thông tin về bộ dữ liệu này như sau (trích một
phần):
Các bạn có thể thấy đây là một chuỗi thời gian đa biến (nhiều biến số) từ quý 1 năm 1961 tới quý 4
năm 1975 Mô tả chi tiết về các biến cũng đi kèm
Trở lại báo lỗi của R ở mục 1.2.3:
Bất kể khi nào bạn gặp thông báo như trên thì có nghĩa là hầu hết các bạn quên gọi một gói tương
ứng để thực hiện một lệnh (hàm) nào đó Nếu chúng ta biết rằng lệnh ggplot này thuộc gói ggplot2
thì đến đây bạn có thể xử một số trở ngại điển hình (chỉ dành cho người học R giai đoạn đầu)
thường gặp bằng cách cài đặt gói ggplot2 như sau (nếu bạn chưa cài đặt):
library(ggplot2)
Trang 28Khi sử dụng một lệnh nếu chúng ta chưa hiểu rõ lệnh đó có tác dụng gì và áp dụng ra sao, ví dụ với
lệnh tính trung bình cộng (lệnh mean()) chúng ta làm như sau:
?mean()
Lúc này chúng ta sẽ biết rất nhiều thông tin về hàm này kể cả cách sử dụng cũng như ví dụ:
Trong tình huống chúng ta không nhớ cụ thể một hàm nào đó và chỉ biết rằng, chẳng hạn, hàm đó có
cụm kí tự test Lúc này chúng ta có thể liệt kê tất cả các hàm có cụm kí tự này (trích một phần):
Lúc này bạn sẽ có thông báo kiểu như sau:
Lúc này bạn có thể: (1) xem mã nguồn của nó, (2) tải bản PDF về sử dụng lệnh này – cụ thể là hướng
dẫn vẽ biểu đồ Venn, hoặc (3) vào một số link trên Internet có bài viết về sử dụng lệnh này
Một tình huống khác bạn hay gặp (thường là các sách dày cả ngàn trang về R): bạn gõ chính xác tất
cả các câu lệnh nhưng R lại không cho ra kết quả như kì vọng Trong tình huống này bạn nên rà soát
xem có gói nào bạn chưa cài đặt và yêu cầu R sử dụng hay không
Trang 291.4 Xem danh sách các gói đã cài đặt cũng như số lượng các gói của R
Trong nhiều tình huống số lượng các gói mà chúng ta cài đặt là rất nhiều Lệnh dưới đây cho biết
những gói nào được chúng ta cài đặt (user-installed R packages) – tức là không tính các gói mặc
định được cài đặt kèm khi cài đặt R lần đầu Trong R chúng ta gõ các lệnh sau (với chú ý chữ viết sau
dấu # là lời giải thích cho lệnh được gõ vào) :
trang <- as.data.frame(installed.packages()[, c 1, 3 4)])
rownames(trang) <- NULL
trang <- trang[is.na(trang$Priority), 1 2, drop = FALSE]
dim(trang) # Lệnh này cho biết tại thời điểm tôi viết tài liệu này, có 261
gói được cài đặt
head(trang) # Liệt kê tên cùng phiên bản của 6 gói đầu tiên
Để biết hiện có bao nhiêu gói mà chúng ta có thể cài đặt trực tiếp từ CRAN:
trangyeu <- available.packages()
dim(trangyeu) # Cho biết số gói Tại thời điểm tôi viết tài liệu này là có
9334 gói – một con số khổng lồ
head(trangyeu[, c 1, 2)]) Liệt kê tên cùng phiên bản của 6 gói đầu tiên
Như vậy hiện có 9334 gói mà chúng ta có thể cài đặt Tất nhiên KHÔNG MỘT AI thành thạo và cần
phải sử dụng đến 9334 gói này Lưu ý rằng con số này chưa dừng lại và sẽ tăng hàng ngày chứ
không phải hàng tuần Nên lúc bạn thực hiện các lệnh trên, con số thu được sẽ khác
1.5 Các quy ước khi sử R cho phân tích
Để thuận lợi trong việc sử dụng tài liệu này chúng ta có một vài quy ước với nhau như sau:
1 Để tất các file dữ liệu vào thư mục KTLR (xem kĩ mục 2.3 của chương 2 về cách tạo thư mục
này)
2 Luôn gõ lệnh setwd("D:/KTLR") sau khi khởi động R để chỉ thị cho R làm việc với thư mục
KTLR
3 Giải thích cho ý nghĩa dòng lệnh (nếu có) được đặt sau dấu # Dòng giải thích có thể được
đặt trước hoặc sau một dòng lệnh cụ thể Dưới đây là một ví dụ về dòng giải thích đặt sau
dòng lệnh:
Ở đây head(dung) là lệnh của R còn giải thích cho dòng lệnh này đặt sau dấu # và là “Xem 6
quan sát đầu tiên”
4 Các bạn có bản mềm của tài liệu này trong tay và điều này có nghĩa là về cơ bản, các bạn có
thể copy lệnh từ tài liệu rồi paste vào R Trong hầu hết các tình huống R sẽ cho ra kết quả
như mong muốn Tuy nhiên tôi khuyến cáo không làm thế vì ít nhất hai lí do: (1) một số tình
huống, thao tác copy – paste này không có tác dụng vì phạm một lỗi gọi là typos, và (2) các
bạn chẳng học sử dụng R một cách hiệu quả bằng cách copy – paste như vậy
Trang 305 Các câu lệnh (hay hàm), tên các gói nếu xuất hiện lần đầu sẽ được in đậm Ví dụ: lệnh
library(), gói ggplot2 Các cụm từ, khái niệm quan trọng, tên các nghiên cứu được in đậm
và nghiêng
1.6 Tổng kết chương mở đầu
Với những người chưa sử dụng R bao giờ thì chương mở đầu này vừa gây cho bạn tò mò, cảm giác bị
thử thách Đây là chương quan trọng vì nó tạo những cơ sở đầu tiên để bạn học cách sử dụng R một
cách chuyên nghiệp Chung quy lại, chương này có hai nội dung quan trọng
Thứ nhất là cài đặt R/Rstudio và các hỗ trợ cần thiết, đặc biệt là cài đặt các gói (packages) cũng
như chỉ thị cho R gọi một gói cụ thể nào đó để sử dụng bằng lệnh library()
Thứ hai là sử dụng Rpub để trao đổi cũng như công bố các phân tích lên Internet
Cuối cùng, những địa chỉ sau đây được sử dụng để trợ giúp các bạn bằng cách trả lời những thắc
mắc và lỗi (nếu có) của tài liệu:
Trang 31Chương 2: Môi trường làm việc trong R
Đây là chương mở đầu và là chương tạo những nền tảng đầu tiên cơ bản cho bạn sử dụng R một cách
thành thạo không chỉ cho nghiên cứu kinh tế lượng nói riêng mà còn phân tích dữ liệu nói chung
Chương này giới thiệu những kĩ năng cốt lõi nhất của việc đọc dữ liệu từ các định dạng khác nhau
(Eviews, SPSS, Stata, Excel), nhập dữ liệu trực tiếp vào R cũng như các cấu trúc dữ liệu data frame và
data_frame Những kĩ năng biến đổi và quản lí số liệu (gọi chung là Data Manipulation) là trọng tâm
của chương này Là một chuơng khá dài và bạn nên đầu tư một cách thích đáng
2.1 Nhập dữ liệu trực tiếp vào R
Để phân tích dữ liệu thứ đầu tiên bạn cần làm là nhập dữ liệu vào R Bạn có thể nhập dữ liệu trực
tiếp vào R Để mình họa chúng ta xét bảng số liệu sau:
STT (Lương) X2 (TN khác) X3 (Chi tiêu) Y
Ở trên, dấu <- được gọi là dấu gán Trong Rstudio, để có dấu này gõ tổ hợp phím Alt và – (phím có
dấu trừ) Sau khi nhập bộ dữ liệu này các bạn có thể xem lại, chẳng hạn biến có tên luong trong R:
luong
## [1] 20 30 28 24 42 36 32 34 24 22 28 30
Trang 322.2 Hiệu chỉnh dữ liệu
Trong tình huống bạn nhập sai một quan sát nào đó, chẳng hạn với biến luong, quan sát cuối cùng
thực tế là 32 nhưng bạn nhập sai thành 30 Để hiệu chỉnh giá trị này các bạn làm như sau trong R:
luong <- edit(luong)
R sẽ ra cửa sổ sau:
Lúc này bạn có thể di chuyển con trỏ đến vị trí 30 cuối cùng và chỉnh thành 32
Một điểm cần chú ý là các dấu = như các bạn đã sử dụng ở trên có thể thay bằng dấu <- quen thuộc
Ví dụ, thay vì gõ luong = edit(luong) như trên các bạn có thể thay bằng luong <- edit(luong) Tuy
nhiên dùng đấu = có thể gây một số lỗi khi thực hiện một số lệnh và hàm nên dù tiết kiệm thời gian
thì chúng ta cũng không nên sử dụng kí hiệu này Trong tài liệu này các bạn sẽ thấy dấu = xuất hiện
khá nhiều Đây là một thói quen xấu của tôi và do vậy không khuyến khích các bạn học theo
2.3 Đọc dữ liệu từ file sẵn có ở các định dạng khác nhau, từ các nguồn bên ngoài vào R
R cũng cho phép bạn đọc dữ liệu ở một loạt các định dạng khác nhau từ dữ liệu dạng số đến dữ liệu
văn bản (text) hay thậm chí dữ liệu hình ảnh, từ Internet Với phạm vi hẹp là nghiên cứu kinh tế
lượng, chúng ta chỉ xem xét cách thực hành để R đọc dữ liệu từ một file sẵn có ở một số định dạng
phổ biến là Excel, Stata, Eviews, SPSS Mục này cũng trình bày cách thu thập dữ liệu kinh tế vĩ mô
cung cấp bởi World Bank và dữ liệu tài chính trực tiếp trên Internet
Tại mỗi thời điểm R mặc định chỉ làm việc với một thư mục và luôn mặc định là thư mục
Documents Chúng ta có thể kiểm tra lại như sau:
getwd()
## [1] "C:/Users/admin/Documents"
Ở đây lệnh getwd() chỉ ra đường dẫn của thư mục hiện thời (là Documents) mà R đang làm việc
Để thuận lợi trong quản lí và tạo sự thống nhất, chúng ta sẽ chỉ định cho R làm việc với thư mục có
tên là KTLR ở ổ D của máy tính và chúng ta sẽ để toàn bộ các số liệu được sử dụng trong tài liệu này
ở thư mục trên Có hai cách để tạo ra thư mục này Một là vào ổ D, dùng con chuột kích chuột phải
rồi chọn New ↦ Folder rồi đặt tên cho thư mục là KTLR Cách thứ hai (chúng ta sẽ sử dụng cách này
trong tài liệu này) là chúng ta tạo ra thư mục này từ R như sau:
dir.create("D:/KTLR")
Với lệnh này các bạn tạo một folder có tên KTLR ở ổ D Kế tiếp, bạn chỉ thị cho R làm việc chỉ với
foder này bằng lệnh:
Trang 33setwd("D:/KTLR")
Chú ý rằng cách thức thiết lập đường dẫn có thể khác so với những gì được trình bày nếu bạn sử
dụng Mac
2.3.1 Đọc dữ liệu từ file Eviews
Giả sử chúng ta cần đọc dữ liệu có tên ch2vd5.WF1 với tên gọi mới là dung trong R:
setwd("D:/KTLR") # Đặt đường dẫn vì ch2vd5.WF1 ở folder có tên KTLR
library(hexView) # Gọi gói hexView chuyên dụng đọc file Eviews
dung <- readEViews("ch2vd5.WF1", as.data.frame = TRUE) # Đọc dữ liệu
R sẽ thông báo một số cảnh báo (warnings) nhưng chúng ta chưa cần quan tâm và tìm hiểu về các
cảnh báo này Sau khi thực hiện chính xác ba câu lệnh trên, bạn có thể xem qua số liệu này (10 quan
Đối với dữ liệu hàng chục ngàn (thậm chí hàng trăm ngàn) quan sát với hàng chục biến số thì bạn
nên sử dụng một trong bốn câu lệnh sau:
dim(dung) # Xem số lượng quan sát và số lượng biến số
## [1] 33 7
head(dung) # Xem 6 quan sát đầu tiên
## CT HHSIZE INTEREST STOCKDIVIDEND TN TNP TS
Trang 34## CT HHSIZE INTEREST STOCKDIVIDEND TN TNP TS
str(dung) # Mô tả chi tiết kiểu biến số của data frame
## 'data.frame': 33 obs of 7 variables:
Với lệnh đầu tiên bạn thấy có 33 quan sát và 7 biến số trong bộ dữ liệu này Còn lệnh thứ hai liệt kê
chỉ một số quan sát đầu tiên Lệnh thứ ba miêu tả chi tiết hơn các biến số có trong bộ số liệu
Chúng ta cũng có thể xem chi tiết các biến số theo cách thức tương tự như của Excel:
View(dung)
Chú ý rằng câu lệnh đọc file dữ liệu vào R có thể được gõ dài dòng như sau:
dung <- readEViews("D:/KTLR/ch2vd5.WF1", as.data.frame = TRUE)
Tất nhiên cách gõ lệnh dài dòng như vậy là không cần thiết vì chúng ta đã chỉ định cho R làm việc
với thư mục KTLR rồi nên câu lệnh có thể gõ ngắn lại như bạn có thể thấy
Trang 35Chú ý rằng không cần dùng lệnh setwd("D:/KTLR") nữa vì đã làm điều này ở mục 2.3.1 (mà nếu
có dùng lại cũng không sao) Các bạn có thể kiểm tra file dữ liệu này:
aoe[1 6, ] # Xem 6 quan sát đầu tiên
Với gói foreign, R cũng có thể đọc dữ liệu nếu nó lưu ở một website nào đó Chẳng hạn, bộ dữ liệu
có tên crime.dta của trung tâm tính toán thống kê IDRE thuộc UCLA (University of California, Los
Angeles) có thể được đọc vào R ở dạng data.frame với tên gọi greek:
greek <- read.dta("http://www.ats.ucla.edu/stat/data/crime.dta")
Lệnh read.dta() ở trên chỉ đọc được các file của Stata từ phiên bản 12 trở xuống Muốn đọc được
các file Stata phiên bản 13 hoặc 14 (khi tài liệu này được viết thì Stata mới dừng ở phiên bản 14)
cần sử dụng một gói khác là readstata13 (mặc định là bạn đã cài đặt gói này) Dưới đây là R code để
đọc bộ dữ liệu của Stata 13 có tên dung_stata13.dta với lệnh read.stata13():
Điểm khác biệt ở đây chính là tốc độ Gói have có tốc độ đọc dữ liệu nhanh và nó hỗ trợ các tính toán
hiệu tốc độ cao Điều này thực sự ý nghĩa nếu dữ liệu nguyên thủy cần đọc có kích thước lớn
2.3.3 Đọc dữ liệu từ SPSS
Để đọc dữ liệu của SPSS chúng ta có hai cách: (1) sử dụng gói foreign, hoặc (2) haven Ví dụ, cần đọc
một file của SPSS có tên chicken.sav vào R với tên gọi lần lượt là aoe1 và aoe2:
# cách 1 (dùng gói foreign)
aoe1 <- read.spss("chicken.sav", to.data.frame = TRUE)
# Cách 2 (dùng gói haven) Có hai hàm của gói này có thể đọc SPSS
aoe2 <- read_spss("chicken.sav")
aoe2 <- read_sav("chicken.sav")
Điểm khác biệt đáng chú ý ở đây là nếu dùng lệnh read.sps() thì các biến định tính (GROUP) được
giữ nguyên dạng kí tự (thuật ngữ của R gọi là factor):
Trang 36Trong khi đó, nếu dùng gói haven thì biến có bản chất định tính được chuyển thành số Cụ thể 1 ứng
với Manic Psychosis còn 2 ứng với Sussex Lecturers:
Trang 37## 19 2 10 14
## 20 2 10 17
Cần lưu ý sự khác biệt này khi thực hiện phân tích
2.3.4 Đọc dữ liệu từ Matlab và SAS
Cả hai gói foreign và haven có thể đọc dữ liệu của Matlab và SAS Tuy nhiên cách thức đọc các dữ
liệu Matlab và SAS không được trình bày ở đây Nguyên nhân là Matlab, SAS là những phần mềm
hiếm khi được sử dụng ở các trường đại học (ít nhất là ở khối kinh tế)
2.3.5 Đọc dữ liệu từ Excel
File dữ liệu của Excel thường có hai định dạng là xlsx và xls Để đọc các file dữ liệu dạng này vào R
cần cài đặt hai gói có tên xlsx và gdata Một số máy tính khi cài đặt gói xlsx được nhưng khi gọi gói
này để sử dụng bằng lệnh library() thì sẽ nhận được báo lỗi như sau:
Nguyên nhân là bạn chưa cài đặt Java cho máy tính Trong tình huống này cần download và cài đặt
Java ở: https://www.java.com/en/download/manual.jsp
Sau khi hoàn tất việc cài đặt Java cũng như gói xlsx chúng ta có thể sử dụng lệnh read.xlsx() để đọc
dữ liệu Ví dụ, để đọc liệu tên là luong.xlsx:
library(xlsx)
choson <- read.xlsx("luong.xlsx", sheet = 1)
Ở đây cần chú ý số 1 ở câu lệnh read.xlsx() với hàm ý rằng R chỉ đọc sheet thứ nhất của file dữ liệu
gốc (chú ý rằng Excel có thể lưu nhiều bản ghi dữ liệu khác nhau ở cùng một file nhưng ở những
“lớp” – tức những sheet khác nhau)
Để đọc file dữ liệu có định dạng xls có tên Table2_8.xls vào R:
library(gdata)
doc_file_xls <- read.xls("Table2_8.xls")
Nếu các bạn không cài đặt thành công gói xlsx (hoặc Java) thì trong tình huống này có thể sử dụng
một giải pháp thay thế là dùng lệnh read_excel() của gói readxl Gói này có thể đọc cả định dạng
Trang 382.3.6 Đọc dữ liệu định dạng txt
Đọc dữ liệu từ file có đuôi txt vốn là một chức năng ban đầu của R khi nó được xây dựng nên chúng
ta không cần cài đặt gói nào cả Giả sử ta có dữ liệu tên là luong.txt ở màn hình rồi thì chỉ thị cho R
đọc file này và gán nó với cái tên mới persian bằng câu lệnh:
persian <- read.table("luong.txt", header = TRUE, row.names = 1)
2.3.7 Đọc dữ liệu định dạng csv
Với file dữ liệu có đuôi csv có tên scholarly_impact_2012.4.9.csv chúng ta có thể yêu cầu R đọc file
này với tên mới là hello (dữ liệu này sẽ được sử dụng lần nữa ở chương 3):
hello <- read.csv("scholarly_impact_2012.4.9.csv", header = TRUE)
Nếu file đuôi csv có kích thước lớn, sử dụng lệnh read_csv() của gói readr có thể tăng tốc độ đọc dữ
liệu lên chừng 10 lần:
library(readr)
hello <- read_csv("scholarly_impact_2012.4.9.csv")
Chú ý rằng nếu sử dụng lệnh read_csv thì ta không cần sử dụng lựa chọn header=TRUE Với các dữ
liệu có kích thước rất lớn chúng ta nên sử dụng lệnh fread() như được trình bày ở mục 2.3.11
2.3.8 Đọc nhiều file dữ liệu cùng một lúc
Trong nhiều tình huống chúng ta cần đọc nhiều file dữ liệu cùng một lúc, chẳng hạn, chừng 360 file
dữ liệu tài chính của 360 công ti niêm yết trên sàn HOSE Rõ ràng chỉ thị cho R đọc từng file là một
cách làm nhàm chán Với mục đích minh họa, giả sử cần đọc dữ liệu tài chính của hai mã AAA và
AAM vào R (là các file csv), trước hết lấy dữ liệu này tại địa chỉ
http://www.cophieu68.vn/export.php Khi kích vào địa chỉ trên chúng ta có:
Download hai file dữ liệu về AAA và AAM và để chúng vào một folder có tên cophieu chứa trong
folder KTLR mà chúng ta đã biết Dưới đây là R code để đọc hai file dữ liệu tài chính về AAA và AAM
đồng thời:
path <- dir("D:/KTLR/cophieu", full.names = TRUE) # Đặt đường dẫn
path # Xem chi tiết đường dẫn
## [1] "D:/KTLR/cophieu/excel_aaa.csv" "D:/KTLR/cophieu/excel_aam.csv"
Trang 39data <- lapply(path, read.csv) # Đọc tất cả dữ liệu cùng lúc
str(data) # Xem dữ liệu được đọc thuộc loại gì
## List of 2
## $ :'data.frame': 1569 obs of 14 variables:
## $ X.Ticker : Factor w/ 1 level "AAA": 1 1 1 1 1 1 1 1 1 1
Ở đây có một điểm cần chú ý là lúc này data không phải data frame quen thuộc mà nó là một list
(thể hiện bằng dòng chữ List of 2 ) chứa cả hai data frame Data frame thứ nhất ứng với AAA còn
data frame thứ hai ứng với AAM Nếu cần phân tích riêng cho từng mã cổ phiếu có thể tách các data
frame này ra như sau:
aaa <- data[[1]] # Data frame này ứng với mã AAA
aam <- data[[2]] # Data frame này ứng với mã AAB
Đương nhiên hai data frame này có biến số trùng nhau (hiển thị một phần):
Nếu muốn hợp nhất hai data frame ứng với hai cổ phiếu ở trên thành một data frame duy nhất với
tên là love3 nhưng đồng thời chỉ chọn ra các biến là mã cổ phiếu, giá mở cửa và giá cao nhất:
love <- lapply(data, function(df) df[,c "X.Ticker.", "X.Open.", "X.High.")])
love3 <- do.call("rbind", love)
dim(love3)
## [1] 3265 3
Có 3265 quan sát ở love3 và chúng chính là tổng của 1569 và 1696 – số lượng các quan sát ứng với
mã AAA và AAM tính đến thời điểm tài liệu này được viết:
table(love3$X.Ticker.)
##
## AAA AAM
## 1569 1696
Tên biến nên được đổi lại cho dễ hiểu với người đọc phổ thông như sau:
names(love3) <- ("Ma_CK", "Gia_mocua", "Gia_caonhat")
head(love3)
Trang 40## Ma_CK Gia_mocua Gia_caonhat
## 1 AAA 29.6 29.8
## 2 AAA 29.7 30.0
## 3 AAA 29.3 29.7
Có thể áp dụng cách thức tương tự cho việc đọc nhiều file dữ liệu cùng một lúc thuộc các đinh dạng
khác Ví dụ, nếu chúng ta có 1000 file Stata 13 và tất cả có đuôi là dta thì trước hết chúng ta cần gọi
gói readsata13 bằng lệnh library(readstata13) đồng thời thay read.csv bằng read.dta13 ở câu lệnh
data <- lapply(path, read.csv)
Trong trường hợp chúng ta muốn lấy tất cả các cột biến thì làm như sau:
love4 <- do.call("rbind", data)
dim(love4)
## [1] 3265 3
Có thể thực hiện việc đổi tên cho cột biến tương tự như trên cho data frame có tên love4 hoặc theo
một số cách khác được trình bày ở mục 2.4 hoặc 2.4
2.3.9 Đọc dữ liệu được cung cấp bởi World Bank với gói WDI
R có một lợi thế nữa là nó có thể trực tiếp thu thập dữ liệu được cung cấp bởi nhiều tổ chức, các cơ
quan thống kê hay các tổ chức chuyên cung cấp số liệu từ Internet Mục này chỉ giới thiệu một trong
số các khả năng đó của R là thu thập dữ liệu kinh tế - xã hội từ ngân hàng thế giới WB (World Bank)
2.3.9.1 Giới thiệu về các số liệu được cung cấp bởi WB
Trong nhiều nghiên cứu , nhất là các nghiên cứu Vĩ Mô thì việc lấy được các dữ liệu vĩ mô về nền
kinh tế là rất quan trọng Một trong các nguồn tin cậy mà chúng ta có thể khai thác là bộ gồm 7145
chuỗi số liệu theo thời gian – thường được gọi là bộ Chỉ Số Phát Triển Thế Giới WDI (viết tắt của
cụm từ World Development Indicator) - được Ngân Hàng Thế Giới (WB) cung cấp cho 200 quốc gia
và vùng lãnh thổ Các chuỗi dữ liệu này được phân thành 20 nhóm (gọi là Topics) như sau:
(Nguồn: http://datacatalog.worldbank.org )
Sở dĩ có 20 nhóm dữ liệu này nhưng lại có tới 16000 chuỗi dữ liệu khác nhau là bởi vì mỗi một
nhóm này lại được phân thành các nhóm nhỏ hơn (gọi là SubTopic) Ví dụ, chúng ta xét 7 chuỗi dầu
tiên: