Ngôn ngữ lập trình R là một công cụ mạnh cho tính toán thống kê, trực quan hóa dữ liệu và học máy. R được sử dụng để khai thác và phân tích dữ liệu trong nhiều ngành, lĩnh vực khác nhau, như bảo hiểm, tài chính, ngân hàng, y tế, sinh tin học, môi trường, thương mại điện tử, ….
Do là phần mềm mã nguồn mở (open source) và độc lập nền tảng (platform - independent), nên việc sử dụng R là miễn phí, trên bất kỳ hệ điều hành nào. Ngoài ra, có thể thêm tính năng và sửa lỗi trên R. R có thể tích hợp được với các ngôn ngữ khác như C, C++, Fortran. Nó cũng cho phép tương tác với nhiều nguồn dữ liệu và các gói thống kê (SAS, SPSS). Hiện tại, R có hơn 21.000 gói (package) dùng để tải dữ liệu, thao tác trực quan hóa dữ liệu, mô hình hóa dữ liệu, báo cáo kết quả, đọc và viết dữ liệu không gian, dữ liệu chuỗi thời gian và dữ liệu tài chính, viết mã hiệu năng cao, tương tác với web, viết mã cá nhân.
Chức năng | Các gói liên quan phổ biến |
Tải dữ liệu | DBI, odbc, RMySQL, RPostgresSQL, RSQLite, XLConnect, xlsx, foreign, haven |
Thao tác dữ liệu | tidyverse, dplyr, tidyr, stringr, lubridate |
Trực quan hóa dữ liệu | ggplot2, ggvis, rgl, htmlwidgets, googleVis |
Mô hình hóa dữ liệu | tidymodels, rsample, parsnip, recipes, broom, car, mgcv, lme4, nlme, randomForest, multcomp, vcd, glmnet, survival, caret |
Báo cáo kết quả | Shiny, R Markdown, xtable |
Đọc và viết dữ liệu không gian | shapefile, maps, ggmap |
Đọc và viết dữ liệu chuỗi thời gian và dữ liệu tài chính | zoo, xts, quantmod |
Viết mã hiệu năng cao | Rcpp, data.table, parallel |
Tương tác với web | XML, jsonlite, httr |
Viết mã cá nhân | devtools, testthat, roxygen2 |
Tính năng cơ bản của R
Xử lý dữ liệu (Data handling): Điểm mạnh của R nằm ở khả năng xử lý dữ liệu hiệu quả. Nó cung cấp nhiều cấu trúc dữ liệu đa dạng, chẳng hạn như vectơ, ma trận, khung dữ liệu và danh sách, cho phép người dùng lưu trữ, thao tác và phân tích dữ liệu hiệu quả.
Trực quan hóa dữ liệu (Data visualisation): Trực quan hóa dữ liệu là một khía cạnh quan trọng của phân tích dữ liệu và ngôn ngữ lập trình này, qua việc cung cấp nhiều công cụ và thư viện phong phú để tạo ra các biểu đồ và đồ thị trực quan. Trong số đó, ggplot2 nổi bật là một trong những thư viện người dùng tạo ra các hình ảnh trực quan dữ liệu một cách dễ dàng.
Phân tích thống kê (Statistical analysis): Cốt lõi của R nằm ở bộ công cụ thống kê mạnh mẽ. Với nhiều hàm và gói thống kê, R trở thành ngôn ngữ được các nhà nghiên cứu, nhà thống kê và nhà phân tích sử dụng cho các yêu cầu thống kê từ mô tả cơ bản đến phân tích suy luận nâng cao. Ngoài khả năng phân tích được trên bộ dữ liệu lớn thì R có tất cả hàm phân tích thống kê. Trong khi đó, SAS không hỗ trợ phân tích “Naive Bayes, Extreme Value Theory, Variance Stabilization, Diffusions, Markov Chains, Hidden Markov Models”; STATA không hỗ trợ phân tích “Nearest Neighbor, Naive Bayes, Copula Models, Markov Chain Monte Carlo, EM Algorithm, Experimental Design, Extreme Value Theory, Variance Stabilization, Diffusions, Markov Chains, Counting Processes,...”; SPSS không hỗ trợ phân tích “Lasso, Copula Models, Extreme Value Theory, Variance Stabilization, Bayesian Statistics, Markov Chain Monte Carlo, EM Algorithm, Robust Estimation, Cross-Validation,…”.
Làm sạch và tiền xử lý dữ liệu (Data cleaning and preprocessing): Trước khi bắt đầu bất kỳ phân tích nào, yêu cầu cốt lõi là dữ liệu phải sạch và không có lỗi. R cung cấp bộ hàm và gói phong phú, cho phép làm sạch dữ liệu và xử lý trước các tác vụ. Các hàm như na.omit, na.fill và complete.cases cho phép người dùng xử lý các giá trị bị thiếu một cách hiệu quả. Ngoài ra, nó còn cung cấp các hàm chuyển đổi dữ liệu, chẳng hạn như chia tỷ lệ, căn giữa và chuẩn hóa,… rất cần thiết cho các thuật toán học máy.
Tính năng nâng cao của R
Không chỉ dừng lại ở các tính năng cơ bản, R còn cung cấp bộ chức năng nâng cao phong phú, đáp ứng nhu cầu của các nhà khoa học dữ liệu và nhà nghiên cứu.
Các gói và thư viện (Packages and libraries): Một trong những điểm mạnh chính của R là bộ sưu tập các gói và thư viện phong phú do cộng đồng các nhà phát triển tích cực đóng góp. Các gói này mở rộng các chức năng của R, gồm nhiều lĩnh vực: học máy, phân tích chuỗi thời gian, xử lý ngôn ngữ tự nhiên, ....
Lập trình hàm (Functional programming): R hỗ trợ các mô hình lập trình hàm. Đây là một cách tiếp cận nhanh chóng để viết mã. Các hàm bao gồm các đối tượng lớp thứ nhất, cho phép chúng được truyền dưới dạng đối số cho các hàm khác hoặc trả về dưới dạng giá trị, giúp người dùng viết mã dễ dàng và ngắn gọn, giảm sự trùng lặp và cải thiện khả năng đọc mã. Bằng cách tận dụng các kỹ thuật lập trình chức năng, người dùng tạo mã có thể tái sử dụng và mô-đun giúp quản lý các dự án phức tạp một cách dễ dàng hơn.
Học máy (Machine learning): R đã trở nên phổ biến như một ngôn ngữ cho các tác vụ học máy. Nó cung cấp các gói học máy, tạo điều kiện cho việc đào tạo, đánh giá và triển khai mô hình. Đào tạo phân loại và hồi quy (Caret) là một gói nổi bật, cung cấp giao diện thống nhất để đào tạo và đánh giá nhiều thuật toán học máy khác nhau. Nó hợp lý hóa quy trình lựa chọn mô hình và điều chỉnh siêu tham số. Ngoài ra, gói randomForest cung cấp phương pháp học tập tổng hợp hiệu quả cho cả phân loại và hồi quy. RandomForest được biết đến với khả năng xử lý dữ liệu phức tạp và đưa ra các dự đoán chính xác.
Thu thập dữ liệu web (Web scraping): R cũng có thể được sử dụng để thu thập dữ liệu web, một kỹ thuật để trích xuất dữ liệu từ các trang web. Tính năng này cho phép người dùng thu thập thông tin có liên quan từ các nguồn trực tuyến để hỗ trợ việc ra quyết định dựa trên dữ liệu. Gói rvest đơn giản hóa các tác vụ thu thập dữ liệu web, bằng cách cung cấp các chức năng để điều hướng các trang web, trích xuất các thành phần cụ thể và phân tích dữ liệu từ các tài liệu HTML. Khai thác sức mạnh của khả năng thu thập dữ liệu web, các nhà khoa học dữ liệu có thể truy cập vào một lượng lớn dữ liệu từ web và sử dụng chúng cho nhiều phân tích khác nhau
Ứng dụng của R trong một số lĩnh vực
Thống kê sinh học và chăm sóc sức khỏe: R được sử dụng để phân tích dữ liệu thử nghiệm lâm sàng, tiến hành các nghiên cứu dịch tễ học và hỗ trợ các chuyên gia chăm sóc sức khỏe đưa ra quyết định dựa trên dữ liệu.
Xây dựng các mô hình xử lý dữ liệu lớn từ R, chẳng hạn như mô hình quản lý rủi ro, tối ưu hóa danh mục đầu tư, phân tích xu hướng thị trường trong các ngành đầu tư, bảo hiểm, tài chính,...
Khoa học xã hội và nghiên cứu thị trường: R được sử dụng rộng rãi trong khoa học xã hội để phân tích khảo sát, phân tích ý kiến trên phương tiện truyền thông và hiểu được dư luận.
Khoa học môi trường và nghiên cứu khí hậu: R phân tích dữ liệu khí hậu, dự đoán xu hướng môi trường và đánh giá tác động của hoạt động của con người lên hệ sinh thái.
Nhất Luận
----------------------------------------
Tài liệu tham khảo:
[1] Wikipedia, R (programming language). https://en.wikipedia.org/wiki/R_(programming_language).
[2] Wikipedia, Comparison of statistical packages. https://en.wikipedia.org/wiki/Comparison_of_statistical_packages
[3] The Comprehensive R Archive Network. https://cran.r-project.org/
[4] Contributed Packages. https://cran.r-project.org/web/packages/
[5] CRAN Task Views. https://cran.r-project.org/web/views/
[6] Bảng so sánh sức mạnh trong thống kê của các phần mềm: R, MATLAB, SAS, STATA, SPSS. https://tuanvanle.wordpress.com/2014/08/21/bang-so-sanh-kha-nang-trong-thong-ke-cua-cac-phan-mem-r-matlab-sas-stata-spss/
[7] Nguyễn Văn Tuấn, Phân tích số liệu và biểu đồ bằng R. https://cran.r-project.org/doc/contrib/Intro_to_R_Vietnamese.pdf
[8] Garrett Grolemund, Quick list of useful R packages. https://support.posit.co/hc/en-us/articles/201057987-Quick-list-of-useful-R-packages