Chương 3. NGÔN NGỮ R VÀ ỨNG DỤNG
3.2. Ứng dụng ngôn ngữ R
R có được các ưu điểm lớn của hệ thống phát triển trên nền tảng mã nguồn mở với nhiều gói thư viện có sẵn cung cấp nhiều hàm xử lý hữu ích cho các mục đích khai thác khác nhau. Người dùng có thể kế thừa từ các thư viện này để phát triển các hàm chức năng đáp ứng yêu cầu của bài toán cụ thể cần giải quyết. Để sử dụng thư viện đã cài đặt, người dùng chỉ cần dùng lệnh library với tham số là tên thư viện cần dùng. Ví dụ để sử dụng thư viện foreign, lệnh yêu cầu là:
> library(foreign)
Bảng 3.1 dưới đây là danh sách một số thư viện cơ bản và ứng dụng của chúng trong R:
Bảng 3.1: Một số thư viện và ứng dụng của chúng trong R
Thư viện Chức năng
Trellis Dùng để vẽ đồ thị
Hmisc Một số phương pháp mô hình dữ liệu của F.Harrell Design Một số mô hình thiết kế nghiên cứu của F.Harrell Epi Dùng cho các phân tích dịch tễ học
Foreign Dùng để nhập dữ liệu từ các phần mềm khác như SPSS, Stata, SAS, …
Rmeta Dùng cho phân tích tổng hợp (meta-analysis)
Zelig Package dùng cho các phân tích thống kê trong lĩnh vực xã hội học
Genetics Package dùng cho phân tích số liệu di truyền học
Với các tính toán phức tạp như nhân ma trận có thể thực hiện chỉ bằng một lệnh. Đoạn chương trình sau minh họa cho việc khởi tạo dữ liệu và thực hiện nhân ma trận:
> y <- c(1,2,3,4,5,6,7,8,9) #Tạo biến y có 9 giá trị
> A <- matrix(y, nrow=3) #Tạo ma trận A có 3 hàng với dữ liệu
# lấy từ y
> B <- t(A) # Tạo ma trận B là chuyển vị của ma trận A
# (hàm t(A) lấy chuyển vị của A)
> AB <- A%*%B #Thực hiện nhân ma trận A với ma trận B dùng toán
# tử (%*%) kết quả chứa trong ma trận AB
> AB #Hiển thị nội dung ma trận AB [,1] [,2] [,3]
[1,] 66 78 90 [2,] 78 93 108 [3,] 90 108 126
Để tìm nghịch đảo ma trận, người dùng có thể sử dụng hàm solve().
> X <- solve(A) #Tính chuyển vị của ma trận A, kết quả lưu vào X
R cũng cấp nhiều hàm đã được thiết kế sẵn ứng dụng tính toán xác suất. Ví dụ, để tính phân phối nhị phân (Binomial distribution), hàm dbinom() cho phép thực hiện một cách nhanh chóng với cú pháp sử dụng đơn giản. Đoạn chương trình sau minh họa việc sử dụng hàm dbinom():
> dbinom(2, 3, 0.60) [1] 0.432
Lời gọi hàm trên thực hiện tính toán theo công thức:
( | , ) = (1− ) trong đó k=0,1,2,..,n (3.1) Trong trường hợp cụ thể này k=2, n=3, p=0.60. Kết quả trả về là 0.432.
Ngoài ra có thể kể đến các hàm tiêu biểu khác như:
Hàm dpois(k,λ) tính mật độ Poisson theo công thức:
( = | ) = ! (3.2)
Hàm dnorm(x, mean, sd) tính mật độ phân phối chuẩn (Normal Density Probability Function) theo công thức:
( = | , ) = ( ) = √ −( ) (3.3)
Vớ dụ, với x=160, à=156, σ2=4.6, hàm được gọi tương ứng là dnorm(160, 156, 4.6), kết quả trả về là 0.05942343.
Vẽ biểu đồ cũng là một trong các điểm mạnh của R. Có nhiều cách để thực hiện vẽ biểu đồ trong R. Phần lớn các hàm vẽ biểu đồ đã có sẵn trong R. Một số biểu đồ phức tạp có thể được thực hiện bằng các hàm cung cấp thông qua các thư viện như lattice hay trellis.
Ví dụ, để vẽ biểu đồ xác suất phân phối mật độ cho biến age (độ tuổi) ta có thể sử dụng hàm plot(density) như đoạn chương trình minh họa dưới đây:
> #Nhập dữ liệu độ tuổi vào biến age
> age <- c(57, 64, 60, 65, 47, 65, 76, 61, 59, 57, 63, 51, 60, 42, 64, 49, 44, 45, 80, 48,
61, 45, 70, 51, 63, 54, 57, 70, 47, 60, 60, 50, 60, 55, 74, 48, 46, 49, 69, 72, 51, 58, 60, 45, 63, 52, 64, 45, 64, 62)
> plot(density(age),add=TRUE) #Thực hiện vẽ biểu đồ
Kết quả thực hiện các lệnh trên được thể hiện như tại Hình 3-2:
Hình 3-2: Xác xuất phân phối mật độ theo độ tuổi bằng hàm plot
Ngoài ra, hàm pie() cho phép vẽ biểu đồ hình tròn, hàm barplot() vẽ biểu đồ cột, hàm stripchart() vẽ biểu đồ strip, hàm boxplot() vẽ biểu đồ hộp,... Hình 3-3, Hình 3-4, Hình 3-5 dưới đây minh họa một số loại biểu đồ được vẽ bởi các hàm trong R.
Hình 3-4: Biểu đồ hộp
Hình 3-5: Biểu đồ cột
Với những ưu điểm và sự phù hợp của ngôn ngữ R cho bài toán khai phá dữ liệu, dự đoán chứng khoán, chúng tôi sử dụng ngôn ngữ R để cài đặt, thử nghiệm cho kết quả của nghiên cứu này.