Cách tạo biến giả trong rstudio

Thế giới của kinh tế, kinh doanh và quản trị là một nơi hỗn loạn và phức tạp, với nhiều ý tưởng xuất sắc và nhiều vấn đề cần được trả lời như:

  • Liệu có hiệu quả không khi phạc những tay tài xế say rượu bằng tiền phạt cao hay thông qua việc tăng thuế lên các sản phẩm chứa cồn?
  • Liệu ta có thể kiếm được tiền trên thị trường chứng khoán bằng cách mua vào khi giá đang thấp tương đối so với lợi nhuận hay chỉ nên ngồi một chỗ, như lý thuyết bước đi ngẫu nhiên của giá chứng khoán?
  • Liệu ta có thể cải thiện giáo dục tiểu học bằng cách giảm quy mô lớp học hay đơn giản là để cho bọn trẻ nghe nhạc Mozart 10 phút một ngày?

Kinh tế lượng sẽ giúp ta giải quyết những câu hỏi như vậy với những câu trả lời định lượng đầy sức thuyết phục. Nó mở ra một cánh cửa mới cho thế giới vốn dĩ đã phức tạp của chúng ta, cho chúng ta một góc nhìn về những mối quan hệ mà con người, doanh nghiệp, chính phủ dựa vào đó mà ra quyết định.

Kinh tế lượng cơ bản được thiết kế như một khoá học đầu tiên và cơ bản nhất về chủ đề phân tích định lượng trong kinh tế. Mặc dù nói là kinh tế lượng, nhưng người đọc có thể hiểu các vấn đề kinh tế lượng không chỉ xoay quanh về kinh tế mà còn có thể áp dụng cho mọi ngành nghề khác như y học, dược học, kỹ thuật, xây dựng, Khoá học giới thiệu nhiều ứng dụng thực tiễn thú vị và sẽ là động lực để học sinh, sinh viên khám phá thế giới mà chúng ta đang sống, đồng thời cũng nhận ra những lý thuyết mà mọi người chê là khô khan, thiếu tính ứng dụng lại sinh ra từ chính những câu hỏi hằng ngày đơn giản như vậy. Lý thuyết và thực tiễn có mối quan hệ tương hổ lẫn nhau. Lý thuyết sinh ra từ thực tiễn và thực tiễn không những là nơi kiểm định lý thuyết mà còn là nơi để con người, doanh nghiệp, chính phủ dựa vào lý thuyết mà cải thiện cuộc sống của chính chúng ta. Các mô hình kinh tế lượng là một phiên bản đơn giản hoá của thực tiễn mà chúng ta đang sống.

Khoá học này bao phủ toàn bộ kiến thức cơ bản cho các loại dữ liệu thông dụng trong thực tế: từ dữ liệu rời rạc hướng đối tượng cho đến chuỗi thời gian và dữ liệu bảng. Các dữ liệu được sử dụng trong khoá học toàn bộ đều là dữ liệu thực tế, và do đó người học có thể tiếp cận được kiến thức một cách gần gũi nhất.

Người học còn được tiếp cận một phương pháp học tương tác khiến cho kiến thức được tích luỹ một cách nhanh nhất và lâu nhất. Ngoài hệ thống hoá kiến thức từ cơ bản đến nâng cao, cộng với sự hỗ trợ từ chính Datacamp, người học có thể làm theo các ví dụ trong khoá học bằng chính phần mềm R mà không cần cài đặt phần mềm về máy, từ đó không làm ngắt quãng dòng suy nghĩ cũng như giúp học viên tập trung đưa ra nhận định về vấn đề cụ thể. Suy cho cùng R hay Eviews cũng chỉ là các công cụ. Khoá học dùng R để làm tăng learning rate của người học, điều quan trọng nhất (và tác giả khoá học cũng khuyến khích người học nên nằm lòng điều này) vẫn là ta xử lý vấn đề gì và xử lý nó như thế nào? Do đó, ngoài bài tập cuối mỗi chương, khoá học còn cung cấp các bài toán thực tiễn nhằm vận dụng ở mức cơ bản những kiến thức đã được học.

Khoá học này không phải là một khoá kinh tế lượng thuần tuý, hay giới thiệu về phần mềm R, mà ở đâu đó giữa hai thái cực này. Nhằm cung cấp học viên một công cụ e-learning mạnh mẽ, khoá học đan xen kiến thức cốt lõi lý thuyết và kỹ năng thực nghiệm trong kinh tế lượng bậc Cử nhân. Tôi không tập trung chứng minh hay dẫn dắt vì sao lại có định lý, định đề, công thức Toán học. Mà mục tiêu của tôi là cho phép sinh viên không chỉ học cách làm lại kết quả nghiên cứu với R (tôi gọi đây là một cách học reproducible studying) mà còn tăng cường khả năng sử dụng các kỹ năng mới có được trong các ứng dụng thực nghiệm khác.

Để làm được như vậy, mỗi chương chứa các bài tập lập trình R tương tác. Các bài tập này được sử dụng như phần bổ sung cho các đoạn mã hiển thị cách các kỹ thuật có thể thực hiện trong R. Các bạn có thể tập làm quen với một bài tập nhỏ dưới đây.

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIGNyZWF0ZSBhIHZhcmlhYmxlIGEsIGVxdWFsIHRvIDVcblxuIyBwcmludCBvdXQgYVxuXG4jIGNoZWNrIHRoZSBudW1iZXIgb2YgUiBwYWNrYWdlcyBhdmFpbGFibGUgb24gQ1JBTiJ9

Và dưới đây là đáp án.

# create a variable `a`, equal to 5 a <- 5 # print out `a` print(a)
## [1] 5
# check the number of R packages available on CRAN nrow(available.packages(repos = "http://cran.us.r-project.org"))
## [1] 14265

Cá nhân tôi trải nghiệm quãng đường sinh viên của mình, bộ môn Kinh tế lượng thật khó nuốt bởi vì những công thức mông lung và không rõ tại sao lại có được công thức này, thực hiện bài toán kinh tế lượng bằng Eviews như một công cụ tính toán nhanh. Môn học đã biến tôi thành một con robot bởi lẽ toàn bộ kiến thức cũng như kỹ năng Kinh tế lượng như một làn gió bất tận và tôi buộc phải chấp nhận nó như một sự thật hiển nhiên như thể Mặt trời luôn mọc ở hướng Đông lặn ở hướng Tây theo quan niệm cha ông. Theo tôi đó không phải là học. Tôi tin rằng, học tập là một quá trình tìm tòi sáng tạo, liên tục trả lời các câu hỏi tại sao, áp dụng thế nào trong thực tiễn. Và tôi càng tin chắc rằng đại bộ phận sinh viên Việt Nam cũng đã và đang trải qua cảm giác giống như tôi: luôn đau đáu trong lòng một câu hỏi: tại sao mình phải học môn này?

Sau khi học xong bộ môn này trên trường, tôi quyết định xem thế giới bên ngoài học Kinh tế lượng như thế nào. Tôi đã phát hiện một điều, họ học rất bài bản. Bài bản từ hệ thống kiến thức, đi từng bước từng bước nhỏ nhất để đến khi học Kinh tế lượng, họ không vấp nhiều khó khăn để hiểu các công thức toán học. Mấu chốt ở chỗ, họ được đào tạo (hoặc tự mình đào tạo) một kỹ năng rất quan trọng mà sinh viên Việt Nam không có: xâu chuỗi các môn học thành một hệ thống chứ không để các môn học đi qua biến thành những kỷ niệm rời rạc của tuổi đời sinh viên. Lâu dần họ hình thành một tư duy suy nghĩ thực thụ, và điều này ảnh hưởng đến tác phong làm việc của họ. Sinh viên nước ngoài đủ công cụ và kiến thức tích luỹ để học tiếp Kinh tế lượng. Tôi cũng vậy, nhưng khi giải quyết bài toán Kinh tế lượng, tôi thường làm y đúc những gì được dạy trong sách, hay trên trường, và nó đã bào mòn tư duy của tôi. Và tôi quyết định học với họ, thay vì học với thói quen của chính mình.

Trong nhiều năm, ngôn ngữ lập trình thống kê R đã trở thành một phần không thể thiếu đối với chương trình đào tạo các lớp Kinh tế lượng tại nhiều trường đại học nổi tiếng trên thế giới, có thể kể đến các đại học top đầu thế giới như Đại học Michigan, Đại học Harvard, Đại học Stanford, Đại học Johns Hopkins, Tại sao họ không dại Eviews, mà dạy R? Lại còn ngôn ngữ lập trình, phải học lập trình thật ư? Chuyên ngành của mình là Tài chính cơ mà? Càng tìm hiểu để trả lời những câu hỏi ban đầu này của mình, tôi càng nhận ra bản thân nhỏ bé đến nhường nào khi đứng trước một người bạn trạc tuổi mình cùng chuyên ngành nhưng lại xuất sắc cho tôi nhiều câu trả lời chân thành.

Người ta sử dụng R vì ít nhất bốn lý do sau:

  1. Là một công cụ nghiên cứu thống kê, phân tích dữ liệu, đặc biệt là lĩnh vực 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 nào hiện có như Eviews. Điều này cho thấy ta có thể dùng R thay cho Eviews được. Đây là lối tư duy thứ nhất của người phương Tây. Họ không loại trừ những sản phẩm thay thế được, và do đó tầm nhìn của họ cũng không hạn hẹp.
  2. Trong một số tình huống, R còn có khả năng làm tốt hơn những gì mà những phần mềm khác không làm được như Eviews. Nguyên nhân là vì ngoài là một môi trường thống kê, R còn là một loại ngôn ngữ. Chẳng hạn với Eviews, người dùng phải sử dụng đúng thứ tự công cụ mà nhà sản xuất đã dựng sẵn, trong khi đó, R cung cấp sự linh hoạt tuyệt vời cho người sử dụng trong việc nhập lệnh; người dùng tự do chỉnh sửa câu lệnh theo đúng ý đồ bản thân, do đó làm tăng tính linh hoạt trong việc sử dụng, giúp năng suất làm việc nâng cao hơn rất nhiều. Hơn nữa, R linh hoạt trong việc sử dụng nhiều hệ điều hành khác nhau ngoài Windows của Microsoft®. Chẳng hạn với hệ điều hành MacOX của Apple®, phần mềm Eviews cho đến năm 2016 cũng mới chỉ cung cấp phiên bản cho học sinh, trong khi R ngoài Windows và MacOX, còn cung cấp cho cả môi trường Linux. Thế nhưng sử dụng R lại rất khó, đòi hỏi người dùng cần có kiến thức cơ bản về lập trình hướng đối tượng. Đây quả là một bước ngoặc kinh khủng cho một sinh viên Kinh tế chỉ sử dụng máy tính để làm tác vụ văn phòng thay vì hai chữ Lập trình khá là cao siêu. Nhưng ở khía cạnh khác, bạn sẽ đạt được rất nhiều thứ mà người phương Tây gọi là learning rate. Nói nôm na, quá trình mà bạn tự mình biến những công thức vô nghĩa trên trang sách thành một ứng dụng mang tính thực tiễn cao sẽ giúp cho bạn đạt được nhiều kiến thức hơn rất nhiều so với việc chỉ đọc sách và tưởng tượng. Và tôi tin chắc rằng, đây là mục tiêu tối cao của việc đào tạo chứ không phải là những con điểm số. Đào tạo tốt phải thoả mãn hai điều kiện: một là kiến thức và kỹ năng sinh viên đạt được, hai là khả năng ứng dụng của sinh viên. 3.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ê, nó cho phép các nhà nghiên cứu tự xây dựng những hàm toán, những câu lệnh chỉ sử dụng trong một số trường hợp nhất định. Thông thường nhu cầu sử dụng trong những trường hợp như vậy rất hiếm, do vậy, các phần mềm chuyên dụng như Eviews thường bỏ qua hoặc không chú ý đến những khu vực như vậy. Tuy nhiên R bằng sự linh hoạt của mình, có thể giúp người dùng giải quyết khó khăn kể trên. Mặt khác, nếu có một kiểm định mới về phương diện lý thuyết được đăng trên tạp chí chuyên ngành nào đó, người dùng hoàn toàn có thể tự do viết một chương trình nhằm biến kiểm định mới kia chỉ ở dạng lý thuyết thành một công cụ ứng dụng rộng rãi, và do vậy, khả năng cập nhật của R so với các phần mềm khác hoàn toàn vượt trội. Việc tìm tòi, sáng tạo sẽ không còn bị giới hạn bởi một vài hạn chế của thực tế.
  3. Phần mềm R hoàn toàn miễn phí. So với những công cụ thống kê thương mại khác như Eviews, R giúp các nhà nghiên cứu cũng như phân tích thống kê tiết kiệm một khoản chi phí đáng kể, tăng hiệu quả hoạt động và chất lượng nghiên cứu.

Như đã đề cập trước đây, cuốn sách này không nhằm mục đích giới thiệu về R mà là một hướng dẫn về cách sử dụng các chức năng của nó cho các ứng dụng thường gặp trong kinh tế lượng đại học. Tuy nhiên, những người có kiến thức cơ bản về lập trình R sẽ cảm thấy thoải mái hơn khi bắt đầu liền với Chương tiếp theo. Tuy nhiên, phần này dành cho những người chưa từng làm việc với R hoặc RStudio trước đây. Nếu bạn ít nhất biết cách tạo đối tượng và gọi hàm, bạn có thể bỏ qua phần này. Nếu bạn muốn làm mới các kỹ năng của mình hoặc cảm nhận về cách làm việc với RStudio, hãy đọc tiếp.

Trước hết hãy khởi động RStudio và mở tập lệnh R mới bằng cách chọn File, New File, R Script. Trong khung soạn thảo, gõ

## [1] 2

và nhấp vào nút có nhãn Run ở góc trên cùng bên phải của trình chỉnh sửa. Bằng cách đó, dòng mã của bạn được gửi đến bàn điều khiển và kết quả của thao tác này sẽ được hiển thị ngay bên dưới nó. Như bạn có thể thấy, R hoạt động giống như một máy tính. Bạn có thể thực hiện tất cả các phép tính số học bằng cách sử dụng toán tử tương ứng (+, -, *, / hoặc ^). Nếu bạn không chắc chắn toán tử cuối cùng làm gì, hãy thử và kiểm tra kết quả.

R tất nhiên là làm được nhiều hơn thế. Chúng ta có thể làm việc với các biến hoặc, nói chung hơn, các đối tượng. Các đối tượng được xác định bằng cách sử dụng toán tử gán <-. Để tạo một biến có tên x chứa giá trị 10 gõ x <- 10 và nhấp vào nút Run. Biến mới sẽ xuất hiện trong khung môi trường ở trên cùng bên phải. Tuy nhiên, bảng điều khiển không hiển thị bất kỳ kết quả nào, bởi vì dòng mã này không chứa bất kỳ đoạn mã nào tạo ra được kết quả. Khi bạn gõ x trong bàn điều khiển và nhấn Run, bạn yêu cầu R hiển thị cho bạn giá trị của x và giá trị tương ứng sẽ được in trong bàn điều khiển.

x là một số vô hướng, một vectơ có độ dài là \(1\). Bạn có thể dễ dàng tạo ra các vectơ dài hơn bằng cách sử dụng hàm c() (c trong concatenate hoặc combine). Để tạo một vectơ y chứa các số \(1\) đến \(5\) và hiển thị nó, làm như sau.

## [1] 1 2 3 4 5

Ta đã thấy hàm c() có thể được sử dụng để kết hợp các đối tượng. Nói chung, tất cả các lệnh gọi đều trông giống nhau: một tên hàm luôn được theo sau bởi dấu ngoặc tròn. Đôi khi, dấu ngoặc đơn bao gồm các đối số (arguments).

Sau đây là hai ví dụ đơn giản.

# generate the vector `z` z <- seq(from = 1, to = 5, by = 1) # compute the mean of the enries in `z` mean(x = z)
## [1] 3

Trong dòng đầu tiên, tôi sử dụng một hàm gọi là seq() để tạo ra vectơ chính xác giống như ta đã làm trong phần trước, gọi nó là z. Hàm này đảm nhận các đối số from, to và by. Hàm mean() tính giá trị trung bình số học của đối số x. Vì chúng ta truyền vectơ z làm đối số x, kết quả là \(3\)!

Nếu bạn không chắc chắn đối số mà hàm mong đợi, bạn có thể tham khảo tài liệu hướng dẫn. Giả sử tôi không chắc chắn làm thế nào biết được các đối số cần thiết cho seq(). Tôi sau đó gõ ?seq trong giao diện điều khiển. Bằng cách nhấn trả lại trang tài liệu cho chức năng đó bật lên trong khung bên phải phía dưới của RStudio. Trong đó, phần Đối số chứa thông tin chúng tôi tìm kiếm. Ở dưới cùng của hầu hết mọi trang trợ giúp bạn tìm thấy các ví dụ về cách sử dụng các chức năng tương ứng. Điều này rất hữu ích cho người mới bắt đầu và chúng tôi khuyên bạn nên để ý những người đó.

Tất nhiên, tất cả các lệnh được trình bày ở trên cũng hoạt động trong các widget tương tác trong suốt khoá học. Bạn có thể thử chúng dưới đây.

eyJsYW5ndWFnZSI6InIiLCJzYW1wbGUiOiIjIFRoaXMgaXMgYSBjb2RlIHBsYXlncm91bmQuIFlvdSBtYXkgdXNlIGl0IHRvIHBsYXkgYXJvdW5kIHdpdGggdGhlIGV4YW1wbGVzIHByZXNlbnRlZCB0aHJvdWdob3V0IHRoZSBjaGFwdGVyLiJ9

Khoá học bao gồm 3 phần.

Ở phần 1, sinh viên sẽ được ôn tập lại các kiến thức cần thiết trước khi bắt đầu khoá học, bao gồm: lý thuyết xác suất (Chương 2), thống kê cơ bản (Chương 3), toán cao cấp cơ bản liên quan đến giải tích và đại số tuyến tính (Chương 4). Chú ý rằng nội dung phần 1 đóng vai trò là tiên quyết, chứ không bắt buộc trong khoá học này.

Phần 2 bắt đầu giới thiệu sinh viên một thế giới kinh tế lượng cơ bản với hồi quy tuyến tính một biến (Chương 6), hồi quy đa biến (Chương 8), kiểm định và suy luận hồi quy (Chương 7 và 9).

Phần 3 đi sâu hơn một chút về các chủ đề thực tế thường gặp trong Kinh tế lượng, bao gồm hồi quy phi tuyến (Chương 11), hồi quy dữ liệu bảng (Chương 12), hồi quy biến phụ thuộc nhị phân (Chương 13).

Cuối mỗi chương này đều có bài tập vận dụng như một sự ôn tập kiến thức và kỹ năng lập trình. Mỗi bài tập đều có đáp án cụ thể.

Mỗi phần sẽ có một bài kiểm tra tự đánh giá (Chương 5, 10, và 14), học viên có thể tự hoàn thành và xác định được mức độ kiến thức của bản thân. Hệ thống tự đánh giá như sau: trên 8 hạng A+, từ 7 đến 8 hạng A, từ 6 đến 7 hạng B, từ 5 đến 6 hạng C, dưới 5 không đạt (hạng D). Mỗi bài kiểm tra sẽ có hai phần: phần câu hỏi không dùng R và phần câu hỏi dùng R. Riêng phần câu hỏi dùng R tác giả không để sẵn dữ liệu nên câu trả lời sẽ không hiển thị trên khung lập trình của Datacamp, nhằm tập trung đánh giá khả năng lập trình thật sự, tránh học viên kiểm thử kết quả nhiều lần dẫn đến thiên lệch. Hơn nữa, các bài kiểm tra tự đánh giá sẽ không có đáp án nhằm tránh sinh viên các trường đại học tác giả đang dạy có thể gian lận trong bài kiểm tra. Học viên cần đáp án cụ thể, vui lòng liên hệ tác giả bằng cách để lại bình luận phía dưới bài kiểm tra với cú pháp: [Đáp án] Bài X Phần Y Email Z, trong đó X, Y, Z là các nội dung cần điền.

Lời cuối cùng, tôi (tác giả) rất mong sự đóng góp của tất cả mọi người, nhằm hoàn thiện tốt khoá học hơn và sinh viên có thể tiếp cận được kiến thức tốt hơn. Hãy để lại bình luận (hoặc thả trạng thái cảm xúc nếu các bạn muốn) và share cho nhiều người biết đến nhé.

Xin chân thành cảm ơn!