Kinh tế lượng ứng dụng với R (version of 01 11 2017)
Trang 1Kinh Tế Lượng Ứng Dụng Với
(Phiên bản ngày 10/10/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
Trang 4dữ 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?
Câu trả lời rất dứt khoát: 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 này
Trang 6cá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 30
2.1 Nhập dữ liệu trực tiếp vào R 31
2.2 Hiệu chỉnh dữ liệu 31
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 của phần mềm SAS 37
2.3.5 Đọc dữ liệu từ Excel 37
2.3.6 Đọc dữ liệu định dạng txt 37
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
Trang 102.4.1 Tạo một data frame 54
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 56
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ố 58
2.4.4 Ghép dữ liệu vào một data frame sẵn có 58
2.4.5 Trích dữ liệu từ một data frame có sẵn với dấu [] 60
2.4.5.1 Trích xuất dữ liệu theo cột 60
2.4.5.2 Trích xuất dữ liệu theo hàng 60
2.4.5.3 Trích xuất dữ liệu đồng thời theo hàng và cột 61
2.4.6 Trích dữ liệu từ một data frame có sẵn bằng lệnh subset() 61
2.4.7 Lấy mẫu ngẫu nhiên 61
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 62
2.5.1 Tổ chức dữ liệu ở dạng tibble 63
2.5.2 Lọc dữ liệu với lệnh filter 66
2.5.3 Chọn cột biến với lệnh select 66
2.5.4 Đổi tên biến với lệnh rename 67
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 67
2.5.6 Tạo biến mới với lệnh mutate và transmute 67
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 67
2.5.8 Lấy ra không ngẫu nhiên một số quan sát với lệnh slice 68
2.5.9 Loại các dòng trùng nhau bằng lệnh distinct 68
2.5.10 Hợp nhất dữ liệu bằng lệnh bind_rows và bind_cols 69
2.5.11 Dán lại nhãn cho các quan sát với hàm recode() hoặc recode_factor() 70
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 72
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 73 2.5.14 Hợp nhất có điều kiện theo cột cho các bộ dữ liệu 75
2.6 Toán tử tẩu thuốc pipe (%>%) 78
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 80
2.8 Lưu các dữ liệu đã có trong R thành file Excel, Stata 83
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 84
2.10 Thực hiện các tính toán thông thường, đại số tuyến tính 85
2.11 Mô phỏng dữ liệu 90
2.12 Viết và trình bày R code đúng cách 93
2.13 Lưu ý về sử dụng dấu = thay cho <- và lệnh attach 95
Trang 112.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 96
Chương 3: Các thống kê mô tả và hình hóa dữ liệu với R 97
3.1 Thực hiện các thống kê mô tả trong R 97
3.1.1 Thống kê mô tả với các hàm sẵn có trong R 97
3.1.2 Thống kê mô tả chi tiết với gói pastecs 99
3.1.3 Thống kê mô tả chi tiết với gói stargazer 100
3.1.4 Thống kê mô tả chi tiết với gói fBasics 101
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 102
3.2.1 Phân phối chuẩn N 102
3.2.2 Phân phối Student t 104
3.2.3 Phân phối F 106
3.2.4 Phân phối χ2 107
3.3 Vẽ các Graph và đồ thị trong R 108
3.3.1 Các Graphs với gói mặc định graphics của R 108
3.3.1.1 Vẽ Scatter Plot 108
3.3.1.2 Histogram 110
3.3.1.3 Hàm mật độ xác suất Density 112
3.3.1.4 Boxplots 113
3.3.1.5 Biểu đồ cột 118
3.3.1.6 Pie Chart 120
3.3.1.7 Biểu đồ đường 122
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 123
3.3.2 Các Graphs với gói ggplot2 123
3.3.2.1 Vẽ Scatter Plot 124
3.3.2.2 Vẽ đường hồi quy 125
3.3.2.3 Vẽ Histogram 127
3.3.3.4 Boxplots 128
3.3.2.5 Biểu đồ cột 130
3.3.2.6 Vẽ các đường cong hồi quy bặc hai 130
3.3.2.7 Hàm mật độ xác suất Density 138
3.3.2.8 Biểu đồ đường 140
3.3.2.9 Pie Chart 142
Trang 123.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 143
3.3.3.2 Vẽ thêm Histogram cho đường hồi quy với gói ggExtra 144
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 145
3.3.3.4 Vẽ thêm Boxplot cho đường hồi quy với gói gridExtra 146
3.3.3.5 Vẽ đồ thị thị phần của R giai đoạn 1995 - 2011 147
3.3.3.6 Sử dụng gói plotly tạo ra các hình ảnh tương tác 148
3.3.3.7 Sử dụng gói googleVis tạo ra các hình ảnh tương tác 152
3.4 Môt số nguyên tắc của hình ảnh hóa dữ liệu của Edward Tufte 157
3.5 Lưu các Graphs 159
3.6 Mini Projects: Hình ảnh hóa dữ liệu trong thực tế 160
Chương 4: Mô hình hồi quy tuyến tính hai biến số 169
4.1 Một số thống kê cơ bản về bộ dữ liệu 169
4.2 Thực hiện hồi quy và một số kiểm định thường gặp 171
4.2.1 Hồi quy đơn, khoảng tin cậy cho các hệ số và bảng ANOVA 171
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 175
4.2.3 Thực hiện một số kiểm định thường gặp cho mô hình hồi quy 176
4.2.3.1 Kiểm định tính phân phối chuẩn của phần dư 176
4.2.3.2 Kiểm định Durbin - Watson 179
4.2.3.3 Kiểm định Wald về một giá trị cụ thể của một hệ số hồi quy 179
4.2.3.4 Kiểm định Wald đồng thời cho nhiều hệ số hồi quy 180
4.3 Mô phỏng Monte Carlo kiểm tra các giả thuyết CLMR 180
4.4 Sử dụng kết quả hồi quy cho ước lượng 183
4.5 Một số tiêu chí thường sử dụng để đánh giá chất lượng mô hình 186
4.5.1 Tiêu chí R 2 và tương quan giữa Y và Ŷ 187
4.5.2 Các tiêu chí đánh giá theo phần dư 187
4.5.3 Các tiêu chuẩn thông tin AIC, SIC, và Cp của Mallow 187
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 188
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 193
4.6.1 Phương pháp Bootstrap 194
4.6.2 Phương pháp kiểm tra chéo 200
4.6.2.1 Kiểm tra chéo LOOCV 200
4.6.2.2 Kiểm tra chéo k lớp 202
4.6.2.3 Sự đánh đổi Bias – Variance 203
Trang 134.6.3 Giới thiệu về các phương pháp tái chọn mẫu bằng gói caret 204
4.7 Dữ liệu thiếu và xử lý dữ liệu thiếu trong phân tích kinh tế lượng 210
Chương 5: Mở rộng mô hình hồi quy hai biến số 217
5.1 Hồi quy qua gốc tọa độ - mô hình CAPM 217
5.2 Vấn đề thay đổi đơn vị của biến 220
5.3 Hồi quy chuẩn hóa 222
5.4 Dạng hàm của mô hình hồi quy 223
5.4.1 Mô hình logarit tuyến tính 223
5.4.2 Mô hình bán logarit 226
5.4.3 Mô hình xu hướng tuyến tính 229
5.4.4 Mô hình tuyến tính – logarit 230
5.4.5 Mô hình nghịch đảo 232
5.4.6 Mô hình đa thức 233
Chương 6: Mô hình hồi quy bội 235
6.1 Thực hiện hồi quy bội trong R và khoảng tin cậy cho các hệ số 235
6.2 Khoảng tin cậy cho một biểu thức của hệ số hồi quy 236
6.3 Kiểm định Wald về sự ràng buộc của các hệ số hồi quy 237
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 238
6.5 Mối liên hệ hình chữ U ngược giữa giáo dục và mức lương 240
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 241
6.7 Kiểm định LM, LR trong trường hợp kích cỡ mẫu là lớn 242
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 245
Chương 7: Các mô hình hồi quy biến giả 253
7.1 Bản chất của biến giả và các mô hình hồi quy ANOVA 253
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 253
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ả 257
7.2 Mô hình có chứa cả biến giả lẫn biến định lượng – mô hình ANCOVA 258
7.2.1 Mô hình ANCOVA không có sự tương tác giữa các biến 258
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 259
7.2.4 Sử dụng biến định tính thay thế cho kiểm định Chow 260
7.3 Biến định tính có nhiều phạm trù 263
Trang 147.5 Vấn đề gán giá trị cho biến giả 268
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ụ 270
7.2.1 Hồi quy từng khúc 270
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 272
Chương 8: Hiện tượng đa cộng tuyến và cách xử lý đa cộng tuyến 275
8.1 Hiện tượng đa cộng tuyến 275
8.2 Một ví dụ minh họa hiện tượng đa cộng tuyến 277
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 282
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 289
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 292
Chương 9: Phương sai sai số thay đổi trong mô hình hồi quy 296
9.1 Phương sai sai số thay đổi và hậu quả 296
9.2 Chẩn đoán phương sai sai số thay đổi 297
9.2.1 Các phương pháp không chính thức 297
9.2.1.1 Căn cứ vào bản chất của các biến số kinh tế 297
9.2.1.2 Căn cứ vào đồ thị phần dư 297
9.2.2 Căn cứ vào các bằng chứng thống kê chính thức 298
9.2.2.1 Kiểm định Park 298
9.2.2.2 Kiểm định Glejser 301
9.2.2.3 Kiểm định Goldfeld - Quandt 302
9.2.2.4 Kiểm định do Breusch – Pagan đề xuất dựa trên kiểm định F 303
9.2.2.5 Kiểm định White 306
9.2.2.6 Kiểm định Koenker - Basett 307
9.3 Một số cách khác phục phương sai sai số thay đổi 308
9.3.1 Phương pháp bình phương nhỏ nhất có trọng số và đổi biến số 308
9.3.2 Sử dụng biến đổi Box – Cox và Yeo-Johnson 311
Chương 10: Lỗi định dạng và lựa chọn mô hình 315
10.1 Các tiêu chuẩn lựa chọn mô hình 315
10.2 Các loại lỗi mô hình 315
10.3 Bỏ sót biến quan trọng 316
10.3.1 Các hậu quả của việc bỏ sót biến quan trọng 316
10.3.2 Kiểm định Wald 316
10.3.3 Kiểm định F 319
10.3.4 Kiểm định Ramsey RESET 319
Trang 1510.3.5 Kiểm định Lagrange Multiplier 321
10.4 Thêm biến không cần thiết 323
10.4.1 Các hậu quả của thêm biến không cần thiết 323
10.4.2 Các kiểm định 323
10.5 Dạng hàm sai 323
10.5.1 Kiểm định Koop 323
10.5.2 Ramsey Test 325
10.5.3 Davidson – MacKinnon Test 327
10.6 Lỗi đo lường 329
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 329
Chương 11: Hồi quy với biến công cụ và hồi quy hai giai đoạn 2SLS 335
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 335
11.2 Sử dụng đồng thời nhiều biến công cụ cho một biến số 338
11.3 Kiểm định biến công cụ yếu, kiểm định Wu-Hausman và Sargan 339
11.4 Hậu quả của việc sử dụng biến công cụ yếu 340
11.5 Ước lượng bình phương nhỏ nhất hai giai đoạn 2SLS 342
Chương 12: Phân tích dữ liệu bảng (Panel Data) 345
12.1 Giới thiệu về dữ liệu bảng 345
12.2 Giới thiệu bộ số liệu sử dụng và package cần thiết cho phân tích 346
12.3 Phân tích dữ liệu mảng cho mô hình nghiên cứu 348
12.3.1 Hồi quy gộp (Pooled OLS) 348
12.3.2 Mô hình tác động cố định biến giả SLDV và kiểm định gộp 350
12.3.3 Mô hình tác động cố định không có biến giả 354
12.3.4 Mô hình tác động ngẫu nhiên một chiều 356
10.3.5 Mô hình tác động ngẫu nhiên hai chiều 360
12.4 Một số kiểm định lựa chọn và chẩn đoán lỗi của mô hình 361
12.4.1 Kiểm định lựa chọn giữa FEM , Pooled OLS và REM 361
12.4.2 Kiểm định Breusch-Pagan cho lựa chọn giữa REM và Pooled OLS 363
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 364
12.4.3.1 Kiểm định tương quan phần dư giữa các cá thể 364
12.4.3.2 Kiểm định tương quan chuỗi cho FEM, REM 364
12.4.3.3 Kiểm định phương sai sai số thay đổi cho FEM 365
Trang 1612.7 Một số mô hình nâng cao cho phân tích dữ liệu mảng 370
12.7.1 Sử dụng biến công cụ 370
12.7.2 Ước lượng Hausman – Taylor 375
12.7.3 Phương pháp moment tổng quát GMM 377
12.7.4 Ước lượng FGLS 378
12.8 Vài kết luận cuối cùng về phân tích dữ liệu mảng 379
Chương 13: Các mô hình với biến phụ thuộc là rời rạc 380
13.1 Mô hình xác suất tuyến tính LPM 380
13.2 Mô hình Logistic và một số tiêu chí đánh giá 381
13.2.1 Mô hình Logistic 381
13.2.2 Một số tiêu chí đánh giá chất lượng của mô hình Logistic 393
13.2.2.1 Kiểm định Hosmer-Lemeshow 393
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 394
13.3 Mô hình Logistic đa cấp độ 398
13.4 Mô hình Probit 402
13.5 So sánh Probit và Logistic theo tiêu chí AUC 405
13.6 Một vài nhận xét về chương 10 sách giáo trình 407
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 409
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 417
13.9 Mô hình cây phân loại và so sánh với mô hình Logistic 419
13.9.1 Giới thiệu về mô hình cây phân loại 419
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 422
Chương 14: Mô hình có biến bị kiểm duyệt: Tobit và hồi quy Poisson 431
14.1 Mô hình Tobit 431
14.2 Hồi quy Poisson 433
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ố thống kê khác về các câu hỏi 438
15.3 Kiểm định KMO và Bartlett 439
15.3.1 Kiểm định KMO 439
Trang 1715.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 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
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ó 93
34 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
5 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(),
Trang 301.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:
Chươ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
Trang 31(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
2.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:
Trang 32luong <- 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:
setwd("D:/KTLR")
Trang 33Chú ý 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 của phần mềm SAS
Với file dữ liệu của phần mềm SAS chúng ta sử dụng, ví dụ, hàm read_sas() của gói này để đọc dữ
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
chúng ta có thể sử dụng các hàm của một trong hai gói là readxl hoặc gdata Một số ví dụ:
library(gdata)
doc_file_xls <- read.xls("Table2_8.xls") # Đọc dữ liệu có tên Table2_8.xls
Riêng gói readxl có thể đọc cả định dạng xlsx lẫn xls:
library(readxl)
# Đọc xls
doc_xls <- read_excel("Table2_8.xls")
# Đọc xlsx
doc_xlsx <- read_excel("luong.xlsx", sheet = 1)
Lợi thế của sử dụng gói readxl là tốc độ đọc dữ liệu nhanh gấp 10 lần Các file xlsx có thể có nhiều
bảng (sheet) và do đó muốn chỉ thị R đọc chính xác sheet nào thì cần chỉ thị rõ Trong trường hợp
trên, sheet = 1 có nghĩa là sheet 1 thuộc file có tên luong.xlsx
2.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:
Trang 382.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"
data <- 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
Trang 39Ở đâ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")
Trang 40Có 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:
(Nguồn: http://data.worldbank.org/sites/default/files/WDI_April2013_CETS.xls )