Hướng dẫn Phân tíchh số liệu và tạo biểu đồ bằng R trên máy tính đơn giản
1 Lời nói đầu
2 Giới thiệu ngôn ngữ R
2.1 R là gì ?
2.2 Tải và cài đặt R vào máy tính
2.3 Package cho các phân tích đặc biệt
2.4 Khởi động và ngưng chạy R
2.5 “Văn phạm” ngôn ngữ R
2.6 Cách đặt tên trong R
2.7 Hỗ trợ trong R
2.8 Môi trường vận hành
3 Nhập dữ liệu
3.1 Nhập số liệu trực tiếp: c()
3.2 Nhập số liệu trực tiếp: edit(data.f
3.3 Nhập số liệu từ một textfile: read.ta
3.4 Nhập số liệu từ Excel: read.csv
3.5 Nhập số liệu từ SPSS: read.spss
3.6 Tìm thông tin cơ bản về dữ liệu
4 Biên tập dữ liệu
4.1 Kiểm tra số liệu trống không: na.omi
4.2 Tách rời dữ liệu: subset
4.3 Chiết số liệu từ một data .frame
4.4 Nhập hai data.frame thành một: merge
4.5 Mã hóa số liệu (data coding)
4.5.1 Mã hoá bằng hàm replace
4.5.2 Đổi một biến liên tục thành biến rời rạc
4.6 Chia một biến liên tục thành nhóm: cu
4.7 Tập hợp số liệu bằng cut2 (Hmisc)
5 Sử R cho các phép tính đơn giản và ma
5.1 Tính toán đơn giản
5.2 Số liệu về ngày tháng
5.3 Tạo dãy số bằng seq, rep và gl
5.4 Sử dụng R cho các phép tính ma trận
5.4.1 Chiết phần tử từ ma trận
5.4.2 Tính toán với ma trận
6 Tính toán xác suất và mô phỏng (simula
6.1 Tính toán đơn giản
6.1.1 Phép hoán vị (permutation)
6.1.2 Tổ hợp (combination)
6.2 Biến số ngẫu nhiên và hàm phân phối
6.3 Các hàm phân phối xác suất (probability distrib
function)
6.3.1 Hàm phân phối nhị phân (Binomial distribution
6.3.2 Hàm phân phối Poisson (Poisson distribution)
6.3.3 Hàm phân phối chuẩn (Normal distribution)
6.3.4 Hàm phân phối chuẩn chuẩn hóa (Standardized
distribution)
6.3.5 Hàm phân phối t, F và χ2
6.4. Mô phỏng (simulation)
6.4.1 Mô phỏng phân phối nhị phân
6.4.2 Mô phỏng phân phối Poisson
6.4.3 Mô phỏng phân phối χ2
, t, F, gamma, beta, We
Cauchy
6.5 Chọn mẫu ngẫu nhiên (random sampling)
7 Kiểm định giả thiết thống kê và ý nghĩa
7.1 Trị số P
7.2 Giả thiết khoa học và phản nghiệm
7.3 Ý nghĩa của trị số P qua mô phỏng
7.4 Vấn đề logic của trị số P
7.5 Vấn để kiểm định nhiều giả thiế
hypothesis)
8 Phân tích số liệu bằng biểu
8.1 Môi trường và thiết kế biểu đồ
8.1.1 Nhiều biểu đồ cho một cửa sổ (
8.1.2 Đặt tên cho trục tung và trục ho
8.1.3 Cho giới hạn của trục tung và tr
8.1.4 Thể loại và đường biểu diễn
8.1.5 Màu sắc, khung, và kí hiệu
8.1.6 Ghi chú (legend)
8.17 Viết chữ trong biểu đồ
8.2 Số liệu cho phân tích biểu
8.3 Biểu đồ cho một biến số r
barplot
8.4. Biểu đồ cho hai biến số rờ
barplot
8.5 Biểu đồ hình tròn
8.6 Biểu đồ cho một biến số li
8.6.1 Stripchart
8.6.2 Histogram
8.6.3 Biểu đồ hộp (boxplot)
8.6.4 Biểu đồ thanh (barchar
8.6.5 Biểu đồ điểm (dotchart
8.7 Phân tích biểu đồ cho hai
8.7.1 Biểu đồ tán xạ (scatter plo
8.8 Phân tích Biểu đồ cho nhi
8.9 Một số biểu đồ “đa năng”
8.9.1 Biểu đồ tán xạ và hình hộp
8.9.2 Biểu đồ tán xạ với kích th
8.9.3 Biểu đồ thanh và xác suất
8.9.4 Biểu đồ hình đồng hồ (clo
8.9.5 Biểu đồ với sai số chuẩn (
8.9.6 Biểu đồ vòng (contour plot)
8.9.10 Biểu đồ với kí hiệu to
9 Phân tích thống kê
9.0 Khái niệm về tổng thể
9.1 Thống kê mô tả: sum
9.2 Kiểm định xem một b
9.3 Thống kê mô tả theo
9.4 Kiểm định t (t.test
9.4.1 Kiểm định t một mẫu
9.4.2 Kiểm định t hai mẫu
9.5 So sánh phương sai (v
9.6 Kiểm định Wilcoxon
9.7 Kiểm định t cho các b
t.test)
9.8 Kiểm định Wilcoxon
(wilcox.test)
9.9 Tần số (frequency)
9.10 Kiểm định tỉ lệ (propo
binom.test)
9.11 So sánh hai tỉ lệ (pro
9.12 So sánh nhiều tỉ lệ (p
9.12.1 Kiểm định Chi bình p
9.12.2 Kiểm định Fisher
10 Phân tích hồi qui tuyến tính (regression analysis)
10.1 Hệ số tương quan
10.1.1 Hệ số tương quan Pearson
10.1.2 Hệ số tương quan Spearman
10.1.3 Hệ số tương quan Kendall
10.2 Mô hình của hồi qui tuyến tính đơn giản
10.2.1 Vài dòng lí thuyết
10.2.2 Phân tích hồi qui tuyến tính đơn giản bằng R
10.2.3 Giả định của phân tích hồi qui tuyến tính
10.2.4 Mô hình tiên đoán
10.3 Mô hình hồi qui tuyến tính đa biến (multiple linear
regression)
10.4 Phân tích hồi qui đa thức (Polynomial regression analysis)
10.5 Xây dựng mô hình tuyến tính từ nhiều biến
10.6 Xây dựng mô hình tuyến tính bằng Bayesian Model
Average (BMA)
11 Phân tích phương sai (analysis of variance)
11.1 Phân tích phương sai đơn giản (one-way analysis of
variance - ANOVA)
11.1.1 Mô hình phân tích phương sai
11.1.2 Phân tích phương sai đơn giản với R
11.2 So sánh nhiều nhóm (multiple comparisons) và điều chỉnh
trị số p
11.2.1 So sánh nhiều nhóm bằng phương pháp Tukey
11.2.2 Phân tích bằng biểu đồ
11.3 Phân tích bằng phương pháp phi tham số
11.4 Phân tích phương sai hai chiều (two-way analysis of
variance - ANOVA)
11.4.1 Phân tích phương sai hai chiều với R
11.5 Phân tích hiệp biến (analysis of covariance - ANCOVA)
11.5.1 Mô hình phân tích hiệp biến
11.5.2 Phân tích bằng R
11.6 Phân tích phương sai cho thí nghiệm giai thừa (factorial
experiment)
11.7 Phân tích phương sai cho thí nghiệm hình vuông Latin
(Latin square experiment)
11.8 Phân tích phương sai cho thí nghiệm giao chéo (cross-over
experiment)
11.9 Phân tích phương sai cho thí nghiệm tái đo lường (repeated
measure experiment)
12 Phân tích hồi qui logistic (logistic regression
analysis)
12.1 Mô hình hồi qui logistic
12.2 Phân tích hồi qui logistic bằng R
12.3 Ước tính xác suất bằng R
12.4 Phân tích hồi qui logistic từ số liệu giản lược bằng R
12.5 Phân tích hồi qui logistic đa biến và chọn mô hình
12.6 Chọn mô hình hồi qui logistic bằng Bayesian Model
Average
12.7 Số liệu dùng cho phân tích
13 Phân tích biến cố (survival analysis)
13.1 Mô hình phân tích số liệu mang tính thời gian
13.2 Ước tính Kaplan-Meier bằng R
13.3 So sánh hai hàm xác suất tích lũy: kiểm định log-rank (log-
rank test)
13.4 Kiểm định log-rank bằng R
13.5 Mô hình Cox (hay Cox’s proportional hazards model)
13.6 Xây dựng mô hình Cox bằng Bayesian Model Average
(BMA)
14 Phân tích tổng hợp (meta-analysis)
14.1 Nhu cầu cho phân tích tổng hợp
14.2 Ảnh hưởng ngẫu nhiên và ảnh hưởng bất biến (Fixed-
effects và Random-effects)
14.3 Qui trình của một phân tích tổng hợp
14.4 Phân tích tổng hợp ảnh hưởng bất biến cho một tiêu chí liên
tục (Fixed-effects meta-analysis for a continuous outcome)
14.4.1 Phân tích tổng hợp bằng tính toán “thủ công”
14.4.2 Phân tích tổng hợp bằng R
14.5 Phân tích tổng hợp ảnh hưởng bất biến cho một tiêu chí nhị
phân (Fixed-effects meta-analysis for a dichotomous
outcome)
14.5.1 Mô hình phân tích
14.5.2 Phân tích bằng R
15 Ước tính cỡ mẫu (estimation of sample size)
15.1 Khái niệm về “power”
15.2 Thử nghiệm giả thiết thống kê và chẩn đoán bệnh
15.3 Số liệu để ước tính cỡ mẫu
15.4 Ước tính cỡ mẫu
15.4.1 Ước tính cỡ mẫu cho một chỉ số trung bình
15.4.2 Ước tính cỡ mẫu cho so sánh hai số trung bình
15.4.3 Ước tính cỡ mẫu cho phân tích phương sai
15.4.4 Ước tính cỡ mẫu cho ước tính một tỉ lệ
15.4.5 Ước tính cỡ mẫu cho so sánh hai tỉ lệ
317 trang |
Chia sẻ: thanhnguyen | Lượt xem: 3935 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Hướng dẫn phân tích số liệu và tạo biểu đồ bằng R trên máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g kê.
Ở đây, trường hợp (a) và (d) không có vấn đề, vì kết quả kiểm định thống kê nhất quán
với thực tế của hiện tượng. Nhưng trong trường hợp (b) và (c), chúng ta phạm sai lầm, vì
kết quả kiểm định thống kê không phù hợp với giả thiết. Trong ngôn ngữ thống kê học,
chúng ta có vài thuật ngữ:
• xác suất của tình huống (b) xảy ra được gọi là sai sót loại II (type II error), và
thường kí hiệu bằng β.
• xác suất của tình huống (a) được gọi là Power. Nói cách khác, power chính là xác
suất mà kết quả kiểm định thống cho ra kết quả p<0.05 với điều kiện giả thiết H là
thật. Nói cách khác: power = 1-β ;
• xác suất của tình huống (c) được gọi là sai sót loại I (type I error, hay significance
level), và thường kí hiệu bằng α. Nói cách khác, α chính là xác suất mà kết quả
kiểm định thống cho ra kết quả p<0.05 với điều kiện giả thiết H sai;
• xác suất tình hống (d) không phải là vấn đề cần quan tâm, nên không có thuật
ngữ, dù có thể gọi đó là kết quả âm tính thật (hay true negative).
Có thể tóm lược 4 tình huống đó trong một Bảng 1 sau đây:
Bảng 1. Các tình huống trong việc thử nghiệm một giả thiết khoa học
Giả thuyết H
Kết quả kiểm định thống
kê
Đúng
(thuốc có hiệu nghiệm)
Sai
(thuốc không có hiệu nghiệm)
Có ý nghĩa thống kê
(p<0,05)
Dương tính thật (power),
1-β= P(s | H+)
Sai sót loại I (type I error)
α = P(s | H-)
Không có ý nghĩa thống kê
(p>0,05)
Sai sót loại II (type II error)
β = P(ns | H+)
Âm tính thật (true negative)
1-α = P(ns | H-)
Chú thích: s trong biểu đồ này có nghĩa là significant; ns non-significant; H+ là giả thuyết đúng;
và H- là giả thuyết sai. Do đó, có thể mô tả 4 tình huống trên bằng ngôn ngữ xác suất có điều
kiện như sau: Power = 1 – β = P(s | H+); β = P(ns | H+); và α = P(s | H-).
15.2 Thử nghiệm giả thiết thống kê và chẩn đoán y khoa
Có lẽ những lí giải trên đây, đối với một số bạn đọc, vẫn còn khá trừu tượng. Một
cách để minh họa các khái niệm power và trị số P là qua chẩn đoán y khoa. Thật vậy, có
thể ví nghiên cứu khoa học và suy luận thống kê như là một qui trình chẩn đoán bệnh.
Trong chẩn đoán, thoạt đầu chúng ta không biết bệnh nhân mắc bệnh hay không, và phải
thu thập thông tin (như tìm hiểu tiền sử bệnh, cách sống, thói quen, v.v…) và làm xét
nghiệm (như quang tuyến X, như siêu âm, phân tích máu, nước tiểu, v.v…) để đi đến kết
luận.
Có hai giả thiết: bệnh nhân không có bệnh (kí hiệu H-) và bệnh nhân mắc bệnh
(H+). Ở mức độ đơn giản nhất, kết quả xét nghiệm có thể là dương tính (+ve) hay âm
tính (-ve). Trong chẩn đoán cũng có 4 tình huống và tôi sẽ bàn trong phần dưới đây,
nhưng để vấn đề rõ ràng hơn, chúng ta hãy xem qua một ví dụ cụ thể như sau:
Trong chẩn đoán ung thư, để biết chắc chắn có ung thư hay không, phương pháp
chuẩn là dùng sinh thiết (tức giải phẫu để xem xét mô dưới ống kính hiển vi để xác định
xem có ung thư hay không có ung thư. Nhưng sinh thiết là một phẫu thuật có tính cách
xâm phạm vào cơ thể bệnh nhân, nên không thể áp dụng phẫu thuật này một cách đại trà
cho mọi người. Thay vào đó, y khoa phát triển những phương pháp xét nghiệm không
mang tính xâm phạm để thử nghiệm ung thư. Các phương pháp này bao gồm quang
tuyến X hay thử máu. Kết quả của một xét nghiệm bằng quang tuyến X hay thử máu có
thể tóm tắt bằng hai giá trị: hoặc là dương tính (+ve), hoặc là âm tính (-ve).
Nhưng không có một phương pháp gián tiếp thử nghiệm nào, dù tinh vi đến đâu
đi nữa, là hoàn hảo và chính xác tuyệt đối. Một số người có kết quả dương tính, nhưng
thực sự không có ung thư. Và một số người có kết quả âm tính, nhưng trong thực tế lại
có ung thư. Đến đây thì chúng ta có bốn khả năng:
• Bệnh nhân có ung thư, và kết quả thử nghiệm là dương tính. Đây là trường hợp
dương tính thật (danh từ chuyên môn là độ nhạy,tiếng Anh gọi là sensitivity);
• bệnh nhân không có ung thư, nhưng kết quả thử nghiệm là dương tính. Đây là
trường hợp dương tính giả (false positive);
• bệnh nhân không có ung thư, nhưng kết quả thử nghiệm là âm tính. Đây là trường
hợp của âm tính thật (specificity); và,
• bệnh nhân có ung thư, và kết quả thử nghiệm là âm tính. Đây là trường hợp âm
tính giả hay độ đặc hiệu (false negative).
Có thể tóm lược 4 tình huống đó trong Bảng 2 sau đây:
Bảng 2. Các tình huống trong việc chẩn đoán y khoa: kết quả xét nghiệm và bệnh
trạng
Bệnh trạng
Kết quả xét nghiệm Có bệnh
Không có bệnh
+ve (dương tính)
Độ nhạy (sensitivity),
Dương tính giả (false positive)
-ve (âm tính)
Âm tính giả (false negative),
Độ đặc hiệu (Specificity),
Đến đây, chúng ta có thể thấy qua mối tương quan song song giữa chẩn đoán y
khoa và thử nghiệm thống kê. Trong chẩn đoán y khoa có chỉ số dương tính thật, tương
đương với khái niệm “power” trong nghiên cứu. Trong chẩn đoán y khoa có xác suất
dương tính giả, và xác suất này chính là trị số p trong suy luận khoa học. Bảng sau đây
sẽ cho thấy mối tương quan đó:
Bảng 3. Tương quan giữa chẩn đoán y khoa và suy luận trong khoa học
Chẩn đoán y khoa Thử nghiệm giả thiết khoa học
Chẩn đoán bệnh Thử nghiệm một giả thiết khoa học
Bệnh trạng (có hay không) Giả thiết khoa học (H+ hay H-)
Phương pháp xét nghiệm Kiểm định thống kê
Kết quả xét nghiệm +ve Trị số p < 0.05 hay “có ý nghĩa thống kê”
Kết quả xét nghiệm -ve Trị số p > 0.05 hay “không có ý nghĩa thống kê”
Dương tính thật (sensitivity) Power; 1-β; P(s | H+)
Dương tính giả (false positive) Sai sót loại I; trị số p; α; P(s | H-)
Âm tính giả (false negative) Sai sót loại II; β; β = P(ns | H+)
Âm tính thật (đặc hiệu, hay specificity) Âm tính thật; 1-α = P(ns | H-)
Cũng như các phương pháp xét nghiệm y khoa không bao giờ hoàn hảo, các
phương pháp kiểm định thống kê cũng có sai sót. Và do đó, kết quả nghiên cứu lúc nào
cũng có độ bất định (như sự bất định trong một chẩn đoán y khoa vậy). Vấn đề là chúng
ta phải thiết kế nghiên cứu sao cho sai sót loại I và II thấp nhất.
15.3 Số liệu để ước tính cỡ mẫu
Như đã đề cập trong phần đầu của chương này, để ước tính số đối tượng cần thiết
cho một công trình nghiên cứu, chúng ta cần phải có 3 số liệu: xác suất sai sót loại I và II,
độ dao động của đo lường, và độ ảnh hưởng.
• Về xác suất sai sót, thông thường một nghiên cứu chấp nhận sai sót loại I khoảng
1% hay 5% (tức α = 0.01 hay 0.05), và xác suất sai sót loại II khoảng β = 0.1 đến
β = 0.2 (tức power phải từ 0.8 đến 0.9).
• Độ dao động chính là độc lệch chuẩn (standard deviation) của đo lường mà công
trình nghiên cứu dựa vào để phân tích. Chẳng hạn như nếu nghiên cứu về cao
huyết áp, thì nhà nghiên cứu cần phải có độ lệch chuẩn của áp suất máu. Chúng
ta tạm gọi độ dao động là σ.
• Độ ảnh hưởng, nếu là công trình nghiên cứu so sánh hai nhóm, là độ khác biệt
trung bình giữa hai nhóm mà nhà nghiên cứu muốn phát hiện. Chẳng hạn như
nhà nghiên cứu có thể giả thiết rằng bệnh nhân được điều trị bằng thuốc A có àp
suất máu giảm 10 mmHg so với nhóm giả được. Ở đây, 10 mmHg được xem là
độ ảnh hưởng. Chúng ta tạm gọi độ ảnh hưởng là ∆.
Một nghiên cứu có thể có một nhóm đối tượng hay hai (và có khi hơn 2) nhóm
đối tượng. Và ước tính cỡ mẫu cũng tùy thuộc vào các trường hợp này.
Trong trường hợp một nhóm đối tượng, số lượng đối tượng (n) cần thiết cho
nghiên cứu có thể tính toán một cách “thủ công” như sau:
( )2/
Cn σ= ∆ [1]
Trong trường hợp có hai nhóm đối tượng, số lượng đối tượng (n) cần thiết cho
nghiên cứu có thể tính toán như sau:
( )22 /
Cn σ= × ∆ [2]
Trong đó, hằng số C được xác định từ xác suất sai sót loại I và II (hay power) như sau:
Bảng 3: Hằng số C liên quan đến sai sót loại I và II
α = β = 0.20
(Power = 0.80)
β = 0.10
(Power = 0.90)
β = 0.05
(Power = 0.95)
0.10 6.15 8.53 10.79
0.05 7.85 10.51 13.00
0.01 13.33 16.74 19.84
15.4 Ước tính cỡ mẫu
15.4.1 Ước tính cỡ mẫu cho một chỉ số trung bình
Ví dụ 1: Chúng ta muốn ước tính chiều cao ở đàn ông người Việt, và chấp nhận
sai số trong vòng 1 cm (d = 1) với khoảng tin cậy 0.95 (tức α=0.05) và power = 0.8 (hay
β = 0.2). Các nghiên cứu trước cho biết độ lệch chuẩn chiều cao ở người Việt khoảng 4.6
cm. Chúng ta có thể áp dụng công thức [1] để ước tính cỡ mẫu cần thiết cho nghiên cứu:
( ) ( )2 2
7.85 166
/ 1/ 4.6
Cn σ= = =∆
Nói cách khác, chúng ta cần phải đo chiều cao ở 166 đối tượng để ước tính chiều cao đàn
ông Việt với sai số trong vòng 1 cm.
Nếu sai số chấp nhận là 0.5 cm (thay vì 1 cm), số lượng đối tượng cần thiết là:
( )2
7.85 664
0.5 / 4.6
n = = . Nếu độ sai số mà chúng ta chấp nhận là 0.1 cm thì số lượng đối
tượng nghiên cứu lên đến 16610 người! Qua các ước tính này, chúng ta dễ dàng thấy cỡ
mẫu tùy thuộc rất lớn vào độ sai số mà chúng ta chấp nhận. Muốn có ước tính càng
chính xác, chúng ta cần càng nhiều đối tượng nghiên cứu.
Trong R có hàm power.t.test có thể áp dụng để ước tính cỡ mẫu cho ví dụ
trên như sau. Chú ý chúng ta cho R biết vấn đề là một nhóm tức
type=”one.sample”:
# sai số 1 cm, độc lệch chuẩn 4.6, a=0.05, power=0.8
> power.t.test(delta=1, sd=4.6, sig.level=.05, power=.80,
type='one.sample')
One-sample t test power calculation
n = 168.0131
delta = 1
sd = 4.6
sig.level = 0.05
power = 0.8
alternative = two.sided
kết quả tính toán từ R là 168, khác với cách tính thủ công 2 đối tượng, vì cố nhiên R sử
dụng nhiều số lẻ hơn và chính xác hơn cách tính thủ công. Với sai số 0.5 cm:
# sai số 0.5 cm, độc lệch chuẩn 4.6, a=0.05, power=0.8
> power.t.test(delta=0.5, sd=4.6, sig.level=.05, power=.80,
type='one.sample')
One-sample t test power calculation
n = 666.2525
delta = 0.5
sd = 4.6
sig.level = 0.05
power = 0.8
alternative = two.sided
Ví dụ 2: Một loại thuốc điều trị có khả năng tăng độ alkaline phosphatase ở bệnh
nhân loãng xương. Độ lệch chuẩn của alkaline phosphatase là 15 U/l. Một nghiên cứu
mới sẽ tiến hành trong một quần thể bệnh nhân ở Việt Nam, và các nhà nghiên cứu muốn
biết bao nhiêu bệnh nhân cần tuyển để chứng minh rằng thuốc có thể alkaline
phosphatase từ 60 đến 65 U/l sau 3 tháng điều trị, với sai số I α = 0.05 và power = 0.8.
Đây là một loại nghiên cứu “trước – sau” (before-after study); có nghĩa là trước
và sau khi điều trị. Ở đây, chúng ta chỉ có một nhóm bệnh nhân, nhưng được đo hai lần
(trước khi dùng thuốc và sau khi dùng thuốc). Chỉ tiêu lâm sàng để đánh giá hiệu nghiệm
của thuốc là độ thay đổi về alkaline phosphatase. Trong trường hợp này, chúng ta có trị
số tăng trung bình là 5 U/l và độ lệch chuẩn là 15 U/l, hay nói theo ngôn ngữ R,
delta=5, sd=15, sig.level=.05, power=.80, và lệnh:
> power.t.test(delta=3, sd=15, sig.level=.05, power=.80,
type='one.sample')
One-sample t test power calculation
n = 198.1513
delta = 3
sd = 15
sig.level = 0.05
power = 0.8
alternative = two.sided
Như vậy, chúng ta cần phải có 198 bệnh nhân để đạt các mục tiêu trên.
15.4.2 Ước tính cỡ mẫu cho so sánh hai số trung bình
Trong thực tế, rất nhiều nghiên cứu nhằm so sánh hai nhóm với nhau. Cách ước
tính cỡ mẫu cho các nghiên cứu này chủ yếu dựa vào công thức [2] như trình bày phần
15.3.1.
Ví dụ 3: Một nghiên cứu được thiết kế để thử nghiệm thuốc alendronate trong việc
điều trị loãng xương ở phụ nữ sau thời kì mãn kinh. Có hai nhóm bệnh nhân được tuyền:
nhóm 1 là nhóm can thiệp (được điều trị bằng alendronate), và nhóm 2 là nhóm đối
chứng (tức không được điều trị). Tiêu chí để đánh giá hiệu quả của thuốc là mật độ
xương (bone mineral density – BMD). Số liệu từ nghiên cứu dịch tễ học cho thấy giá trị
trung bình của BMD trong phụ nữ sau thời kì mãn kinh là 0.80 g/cm2, với độ lệch chuẩn
là 0.12 g/cm2. Vấn đề đặt ra là chúng ta cần phải nghiên cứu ở bao nhiêu đối tượng để
“chứng minh” rằng sau 12 tháng điều trị BMD của nhóm 1 tăng khoảng 5% so với nhóm
2?
Trong ví dụ trên, tạm gọi trị số trung bình của nhóm 2 là µ2 và nhóm 1 là µ1,
chúng ta có: µ1 = 0.8*1.05 = 0.84 g/cm2 (tức tăng 5% so với nhóm 1), và do đó, ∆ = 0.84
– 0.80 = 0.04 g/cm2. Độ lệch chuẩn là σ = 0.12 g/cm2. Với power = 0.90 và α = 0.05, cỡ
mẫu cần thiết là:
( ) ( )2 2
2 2 10.51 189
/ 0.04 / 0.12
Cn σ
×= = =∆
Và lời giải từ R qua hàm power.t.test như sau:
> power.t.test(delta=0.04, sd=0.12, sig.level=0.05, power=0.90,
type="two.sample")
Two-sample t test power calculation
n = 190.0991
delta = 0.04
sd = 0.12
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group
Chú ý trong hàm power.t.test, ngoài các thông số thông thường như delta (độ
ảnh hưởng hay khác biệt theo giả thiết), sd (độ lệch chuẩn), sig.level xác suất sai
sót loại I, và power, chúng ta còn phải cụ thể chỉ ra rằng đây là nghiên cứu gồm có hai
nhóm với thông số type=”two.sample”.
Kết quả trên cho biết chúng ta cần 190 bệnh nhân cho mỗi nhóm (hay 380 bệnh
nhân cho công trình nghiên cứu). Trong trường hợp này, power = 0.90 và α = 0.05 có
nghĩa là gì ? Trả lời: hai thông số đó có nghĩa là nếu chúng ta tiến hành thật nhiều nghiên
cứu (ví dụ 1000) và mỗi nghiên cứu với 380 bệnh nhân, sẽ có 90% (hay 900) nghiên cứu
sẽ cho ra kết quả trên với trị số p < 0.05.
15.4.3 Ước tính cỡ mẫu cho phân tích phương sai
Phương pháp ước tính cỡ mẫu cho so sánh giữa hai nhóm cũng có thể khai triển
thêm để ước tính cỡ mẫu cho trường hợp so sánh hơn hai nhóm. Trong trường hợp có
nhiều nhóm, như đề cập trong Chương 11, phương pháp so sánh là phân tích phương sai.
Theo phương pháp này, số trung bình bình phương phần dư (residual mean square, RMS)
chính là ước tính của độ dao động của đo lường trong mỗi nhóm, và chỉ số này rất quan
trọng trong việc ước tính cỡ mẫu.
Chi tiết về lí thuyết đằng sau cách ước tính cỡ mẫu cho phân tích phương sai khá
phức tạp, và không nằm trong phạm vi của chương này. Nhưng nguyên lí chủ yếu vẫn
không khác so với lí thuyết so sánh giữa hai nhóm. Gọi số trung bình của k nhóm là µ1,
µ2, µ3, . . ., µk, chúng ta có thể tính tổng bình phương giữa các nhóm bằng
SS ( )2
1
k
i
i
SS µ µ
=
= −∑ , trong đó,
1
/
k
i
i
kµ µ
=
=∑ . Cho ( )1SSk RMSλ = − , vấn đề đặt ra là tìm
cố lượng cỡ mẫu n sao cho zβ đáp ứng yêu cầu power = 0.80 hay 0.9, mà
( )( ) ( )( )
1
1 1 1 1 2
z
k n F k n n
β λ λ= ×− + + − +
( ) ( )( ) ( ) ( )( ) ( )( )21 2 1 1 1| 2 1 1 2 1 1k n k n n F k n k nλ λ λ − − + − − − + − −
Trong đó F là kiểm định F. (Xem J. Fleiss, “The Design and Analysis of Clinical
Experiments”, John Wiley & Sons, New York 1986, trang 373).
Ví dụ 4. Để so sánh độ ngọt của một loại nước uống giữa 4 nhóm đối tượng khác
nhau về giới tính và độ tuổi (tạm gọi 4 nhóm là A, B, C và D), các nhà nghiên cứu giả
thiết rằng độ ngọt trong nhóm A, B. C và D lần lược là 4.5, 3.0, 5.6, và 1.3. Qua xem xét
nhiều nghiên cứu trước, các nhà nghiên cứu còn biết rằng RMS về độ ngọt trong mỗi
nhóm là khoảng 8.7. Vấn đề đặt ra là bao nhiêu đối tượng cần nghiên cứu để phát hiện sự
khác biệt có ý nghĩa thống kê ở mức độ α = 0.05 và power = 0.9.
Hàm power.anova.test trong R có thể ứng dụng để giải quyết vấn đề. Chúng ta chỉ
cần đơn giản cung cấp 4 số trung bình theo giả thiết và số RMS như sau:
# trước hết cho 4 số trung bình vào một vector
> groupmeans <- c(4.5, 3.0, 5.6, 1.3)
# sau đó, “gọi” hàm power.anova.test:
> power.anova.test(groups = length(groupmeans),
between.var=var(groupmeans),
within.var=8.7, power=0.90, sig.level=0.05)
Balanced one-way analysis of variance power calculation
groups = 4
n = 12.81152
between.var = 3.486667
within.var = 8.7
sig.level = 0.05
power = 0.9
NOTE: n is number in each group
Kết quả cho thấy các nhà nghiên cứu cần khoảng 13 đối tượng cho mỗi nhóm (tức 52 đối
tượng cho toàn bộ nghiên cứu).
15.4.4 Ước tính cỡ mẫu để ước tính một tỉ lệ
Nhiều nghiên cứu mô tả có mục đích khá đơn giản là ước tính một tỉ lệ. Chẳng
hạn như giới y tế thường hay tìm hiểu tỉ lệ một bệnh trong cộng đồng, hay giới thăm dò ý
kiến và thị trường thường tìm hiểu tỉ lệ dân số ưa thích một sản phẩm. Trong các trường
hợp này, chúng ta không có những đo lường mang tính liên tục, nhưng kết quả chỉ là
những giá trị nhị như có / không, thích / không tích, v.v… Và cách ước tính cỡ mẫu cũng
khác với ba ví dụ trên đây.
Năm 1991, một cuộc thăm dò ý kiến ở Mĩ cho thấy 45% người được hỏi sẵn sàng
khuyến khích con họ nên hiến một quả thận cho những bệnh nhân cần thiết. Khoảng tin
cậy 95% của tỉ lệ này là 42% đến 48%, tức một khoảng cách đến 6%! Kết quả này
[tương đối] thiếu chính xác, dù số lượng đối tượng tham gia lên đến 1000 người. Tại
sao? Để trả lời câu hỏi này, chúng ta thử xem qua một vài lí thuyết về ước tính cỡ mẫu
cho một tỉ lệ.
Chúng ta biết qua Chương 6 và 9 rằng nếu pˆ được ước tính từ n đối tượng, thì
khoảng tin cậy 95% của một tỉ lệ p [trong dân số] là: ( )ˆ ˆ1.96p SE p± × , trong đó
( ) ( )ˆ ˆ ˆ1 /SE p p p n= − .
Bây giờ thử lật ngược vấn đề: chúng ta muốn ước tính p sao khoảng rộng
( )ˆ2 1.96 SE p× × không quá một hằng số m. Nói cách khác, chúng ta muốn:
( )ˆ ˆ1.96 1 /p p n m× − ≤
Chúng ta muốn tìm số lượng đối tượng n để đạt yêu câu trên. Qua cách diễn đạt trên, dễ
dàng thấy rằng:
( )21.96 ˆ ˆ1n p p
m
≥ −
Do đó, số lượng cỡ mẫu tùy thuộc vào độ sai số m và tỉ lệ p mà chúng ta muốn ước tính.
Độ sai số càng thấp, số lượng cở mẫu càng cao.
Ví dụ 5: Chúng ta muốn ước tính tỉ lệ đàn ông hút thuốc ở Việt Nam, sao cho
ước số không cao hơn hay thấp hơn 2% so với tỉ lệ thật trong toàn dân số. Một nghiên
cứu trước cho thấy tỉ lệ hút thuốc trong đàn ông người Việt có thể lên đến 70%. Câu hỏi
đặt ra là chúng ta cần nghiên cứu trên bao nhiêu đàn ông để đạt yêu cầu trên.
Trong ví dụ này, chúng ta có sai số m = 0.02, pˆ = 0.70, và số lượng cỡ mẫu cần
thiết cho nghiên cứu là:
21.96 0.7 0.3
0.02
n ≥ ×
Nói cách khác, chúng ta cần nghiên cứu ít nhất là 2017.
Nếu chúng ta muốn giảm sai số từ 2% xuống 1% (tức m = 0.01) thì số lượng đối tượng sẽ
là 8067! Chỉ cần thêm độ chính xác 1%, số lượng mẫu có thể thêm hơn 6000 người. Do
đó, vấn đề ước tính cỡ mẫu phải rất thận trọng, xem xét cân bằng giữa độ chính xác thông
tin cần thu thập và chi phí.
R không có hàm cho ước tính cỡ mẫu cho một tỉ lệ, nhưng với công thức trên, bạn đọc có
thể viết một hàm để tính rất dễ dàng.
15.4.5 Ước tính cỡ mẫu cho so sánh hai tỉ lệ
Nhiều nghiên cứu mang tính suy luận thường có hai [hay nhiều hơn hai] nhóm để
so sánh. Trong phần 15.4.2 chúng ta đã làm quen với phương pháp ước tính cỡ mẫu để
so sánh hai số trung bình bằng kiểm định t. Đó là những người cứu mà tiêu chí là những
biến số liên tục. Nhưng có nghiên cứu biến số không liên tục mà mang tính nhị phân như
tôi vừa bàn trong phần 15.4.3. Để so sánh hai tỉ lệ, phương pháp kiểm định thông dụng
nhất là kiểm định nhị phân (binomial test) hay Chi bình phương (χ2 test). Trong phần
này, tôi sẽ bàn qua cách tính cỡ mẫu cho hai loại kiểm định thống kê này.
Gọi hai tỉ lệ [mà chúng ta không biết nhưng muốn tìm hiểu] là 1p và 2p , và gọi
∆ = 1p – 2p . Giả thiết mà chúng ta muốn kiểm định là ∆ = 0. Lí thuyết đằng sau để ước
tính cỡ mẫu cho kiểm định giả thiết này khá rườm rà, nhưng có thể tóm gọn bằng công
thức sau đây:
( ) ( ) ( )( )2/ 2 1 1 2 2
2
2 1 1 1z p p z p p p p
n
α β− + − + −= ∆
Trong đó, p = ( 1p + 2p )/2, / 2zα là trị số z của phân phối chuẩn cho xác suất α/2 (chẳng
hạn như khi α = 0.05, thì / 2zα = 1.96; khi α = 0.01, thì / 2zα = 2.57), và zβ là trị số z của
phân phối chuẩn cho xác suất β (chẳng hạn như khi β = 0.10, thì zβ = 1.28; khi β = 0.20,
thì zβ = 0.84).
Ví dụ 6: Một thử nghiệm lâm sàng đối chứng ngẫu nhiên được thiết kế để đánh
giá hiệu quả của một loại thuốc chống gãy xương sống. Hai nhóm bệnh nhân sẽ được
tuyển. Nhóm 1 được điều trị bằng thuốc, và nhóm 2 là nhóm đối chứng (không được
điều trị). Các nhà nghiên cứu giả thiết rằng tỉ lệ gãy xương trong nhóm 2 là khoảng 10%,
và thuốc có thể làm giảm tỉ lệ này xuống khoảng 6%. Nếu các nhà nghiên cứu muốn thử
nghiệm giả thiết này với sai sót I là α = 0.01 và power = 0.90, bao nhiêu bệnh nhân cần
phải được tuyển mộ cho nghiên cứu?
Ở đây, chúng ta có ∆ = 0.10 – 0.06 = 0.04, và p = (0.10 + 0.06)/2 = 0.08. Với α
= 0.01, / 2zα = 2.57 và với power = 0.90, zβ = 1.28. Do đó, số lượng bệnh nhân cần thiết
cho mỗi nhóm là:
( )
( )
2
2
2.57 2 0.08 0.92 1.28 0.1 0.90 0.06 0.94
1361
0.04
n
× × + × + ×= =
Như vậy, công trình nghiên cứu này cần phải tuyển ít nhất là 2722 bệnh nhân để kiểm
định giả thiết trên.
Hàm power.prop.test R có thể ứng dụng để tính cỡ mẫu cho trường hợp trên. Hàm
power.prop.test cần những thông tin như power, sig.level, p1, và p2.
Trong ví dụ trên, chúng ta có thể viết:
> power.prop.test(p1=0.10, p2=0.06, power=0.90, sig.level=0.01)
Two-sample comparison of proportions power calculation
n = 1366.430
p1 = 0.1
p2 = 0.06
sig.level = 0.01
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group
Chú ý kết quả từ R có phần chính xác hơn (1366 đối tượng cho mỗi nhóm) vì R dùng
nhiều số lẽ cho tính toán hơn là tính “thủ công”.
Trước khi rời chương này, tôi muốn nhân cơ hội này để nhấn mạnh một lần nữa,
ước tính cỡ mẫu cho nghiên cứu là một bước cực kì quan trọng trong việc thiết kế một
nghiên cứu cho có ý nghĩa khoa học, vì nó có thể quyết định thành bại của nghiên cứu.
Trước khi ước tính cỡ mẫu nhà nghiên cứu cần phải biết trước (hay ít ra là có vài giả thiết
cụ thể) về vấn đề mình quan tâm. Ước tính cỡ mẫu cần một số thông số như đề cập đến
trong phần đầu của chương, và nếu các thông số này không có thì không thể ước tính
được. Trong trường hợp một nghiên cứu hoàn toàn mới, tức chưa ai từng làm trước đó,
có thể các thông số về độ ảnh hưởng và độ dao động đo lường sẽ không có, và nhà nghiên
cứu cần phải tiến hành một số mô phỏng (simulation) hay một nghiên cứu sơ khởi để có
những thông số cần thiết. Cách ước tính cỡ mẫu bằng mô phỏng là một lĩnh vực nghiên
cứu khá chuyên sâu, không nằm trong đề tài của sách này, nhưng bạn đọc có thể tìm hiểu
thêm phương pháp này trong các sách giáo khoa về thống kê học cấp cao hơn.
CHƯƠNG XVI
LẬP TRÌNH VÀ HÀM
16
Phụ lục 1: Lập trình và hàm với R
R được phát triển sao cho người sử dụng có thể phát triển những hàm thích hợp
cho mục đích phân tích và tính toán của mình. Thật vậy, như đã đề cập trong phần đầu
của sách, có thể xem R là một ngôn ngữ thống kê, và chúng ta có thể sử dụng ngôn ngữ
để giải quyết các vấn đề không thường thấy trong sách giáo khoa. Trong phần này, tôi
chỉ trình bày một vài hàm đơn giản để bạn đọc có thể hiểu cách vận hành của R và hi
vọng giúp bạn đọc tự phát triển các hàm sau đó.
Hàm (hay có khi còn gọi là “macro” trong các phần mềm khác) thực chất là tập
hợp một số lệnh được lưu trữ dưới một cái tên. Ở mức độ đơn giản nhất, hàm là “tốc kí”
cho một nhóm lệnh.
Ví dụ 1. Trong các lệnh sau đây, chúng ta tạo hai dữ liệu (data1 và data2).
Mỗi dữ liệu có hai cột số liệu được tạo ra bằng mô phỏng từ phân phối chuẩn. Sau đó, vẽ
biểu đồ cho hai dữ liệu với ghi chú.
data1 <- cbind(rnorm(100,1), rnorm(100,0))
data2 <- cbind(rnorm(100,-1), rnorm(100,0))
xr <- range(rbind(data1,data2)[,1])
yr <- range(rbind(data1,data2)[,2])
plot(data1, xlim=xr, ylim=yr, col=1, xlab="", ylab="")
par(new=T)
plot(data2, xlim=xr, ylim=yr, col=2, xlab="", ylab="")
title(main="My simulated data", xlab="Weight", ylab="Yield")
legend(-3.0, -1.5, c("Big", "Small"), col=1:2, pch=1)
Một cách để nhớ tất cả các lệnh này là lưu trữ chúng trong một text file chẳng
hạn. Mỗi lần muốn sử dụng, chúng ta chỉ đơn giản cắt và dán các lệnh này vào R. Một
cách khác tốt hơn là tạo ra một hàm gồm các lệnh trên để có thể sử dụng nhiều lần.
Mỗi hàm R phải có tên. Tất cả các lệnh được chứa trong khu vực được giới hạn
bằng hai kí hiệu { và }. Kí hiệu { cho biết tất cả các lệnh sau đó là nằm trong hàm; và kí
hiệu } cho biết chấm dứt hàm. Trong ví dụ trên, chúng ta gọi hàm là plotfigure:
plotfigure <- function()
{
data1 <- cbind(rnorm(100,1), rnorm(100,0))
data2 <- cbind(rnorm(100,-1), rnorm(100,0))
xr <- range(rbind(data1,data2)[,1])
yr <- range(rbind(data1,data2)[,2])
plot(data1, xlim=xr, ylim=yr, col=1, xlab="", ylab="")
par(new=T)
plot(data2, xlim=xr, ylim=yr, col=2, xlab="", ylab="")
title(main="My simulated data", xlab="Weight", ylab="Yield")
legend(-3.0, -1.5, c("Big", "Small"), col=1:2, pch=1)
}
Sau khi đã cho vào R, chúng ta chỉ đơn giản gọi hàm nhiều lần như sau:
> plotfigure()
> plotfigure()
và kết quả sẽ như sau:
-4 -2 0 2
-2
-1
0
1
2
-2
-1
0
1
2
My simulated data
Weight
Y
ie
ld
Big
Small
-2 0 2 4
-2
-1
0
1
2
-2
-1
0
1
2
My simulated data
Weight
Y
ie
ld
Big
Small
Trong hàm plotfigure trên, chúng ta mô phỏng 100 số liệu từ phân phối
chuẩn. Và cứ mỗi lần ứng dụng, hàm chỉ tạo ra 100 số liệu, chứ chúng ta không thay đổi
được (ngoại trừ phài thay đổi từ lúc biên tập, hay lập hàm). Nói cách khác, hàm trên
không có thông số.
Khía cạnh tiện lợi của hàm là chúng ta có thể làm cho thông số thay đổi theo ý
muốn của người sử dụng. Chẳng hạn như chúng ta muốn thay đổi số số liệu mô phỏng và
trung bình từ luật phân phối chuẩn, chúng ta chỉ cần cho hai con số này là hai thông số
(parameters) để người sử dụng có thể thay đổi. Tạm gọi đó là thông số n, mean1, và
mean2, thì hàm sẽ như sau:
plotfigure <- function(n, mean1, mean2)
{
data1 <- cbind(rnorm(n,mean1), rnorm(n,0))
data2 <- cbind(rnorm(n,mean2), rnorm(n,0))
xr <- range(rbind(data1,data2)[,1])
yr <- range(rbind(data1,data2)[,2])
plot(data1, xlim=xr, ylim=yr, col=1, xlab="", ylab="")
par(new=T)
plot(data2, xlim=xr, ylim=yr, col=2, xlab="", ylab="")
title(main="My simulated data", xlab="Weight", ylab="Yield")
legend(-3.0, -1.5, c("Big", "Small"), col=1:2, pch=1)
}
Khi ứng dụng hàm, chúng ta chỉ đơn giản thay đổi n và mean. Trong hai lệnh sau đây,
chúng ta đầu tiên vẽ một biểu đồ tán xạ với 200 số liệu, và số trung bình -2 và 2. Trong
lệnh hai, chúng ta nâng số liệu lên 200, nhưng trung bình vẫn như lần mô phỏng trước:
> plotfigure(200, 2, -2)
> plotfigure(500, 2, -2)
Và kết quả sẽ khác trên:
-4 -2 0 2 4
-3
-2
-1
0
1
2
-3
-2
-1
0
1
2
My simulated data
Weight
Y
ie
ld
Big
Small
-4 -2 0 2 4
-3
-2
-1
0
1
2
3
-3
-2
-1
0
1
2
3
My simulated data
Weight
Y
ie
ld
Big
Small
Ví dụ 2. Chúng ta muốn viết một hàm để cộng hai số. (Tất nhiên R có khả năng
làm “việc” này, nhưng vì lí do minh họa, tôi sẽ giả thiết đơn giản như thế). Gọi hàm đó
là add. Hai thông số a và b là “arguments. Cách viết như sau:
add <- function(a, b)
{
sum = a+b
ans <- "Answer = "
cat(ans, sum, “\n”)
}
Thế là xong! Như thấy, bước đầu tiên, chúng ta cho tên hàm là add và định
nghĩa thông số a và b. Một hàm phải được mở đầu bằng kí hiệu { và chấm dứt bằng }.
sum là một biến số cộng a và b. ans <- "Answer = " định nghĩa trả lời (có thể
không cần). cat(ans, sum, “\n”) có chức năng thu thập số liệu và trình bày kết quả
cho người dử dụng hàm, trong đó “\” có nghĩa là sau khi trình bày, cho người sử dụng
một prompt khác. Bạn đọc có thể dán các lệnh trên vào R và thử cho lệnh:
> add(3, 9)
Answer = 12
> add(sqrt(5), exp(10))
Answer = 22028.7
Ví dụ 3. Hàm sau đây tiến hành nhiều tính toán hơn hàm trong ví dụ 1. Nếu
chúng ta có một biến số gồm n phần tử 1 2 3, , ,..., nx x x x tuân theo luật phân phối chuẩn
với trung bình µ và phương sai 2σ . Viết theo kí hiệu toán:
( )2~ ,ix N µ σ
Nếu chúng ta có thông tin trước cho biết µ có luật phân phối chuẩn với trung bình θ và
phương sai τ2, hay: ( )2~ ,Nµ θ τ
Qua định lí Bayes, chúng ta có thể ước tính trung bình
2 2
2 2
1p
nx
n
θ
τ σµ
τ σ
+
=
+
và phương sai
1
2
2 2
1
p
nσ τ σ
− = + . Trong đó, x là số trung bình của mẫu n. pµ và
2
pσ được gọi là
“posterior”. Chúng ta có thể viết một hàm bằng R để tính hai số này như sau. Gọi tên
hàm là bayes.
bayes <- function(x, prior.mean, prior.var)
{
n <- length(x)
sample.mean <- mean(x)
sample.var <- var(x)
numerator <- (prior.mean/prior.var) + (n*sample.mean/sample.var)
denominator <- 1/prior.var + n/sample.var
posterior.mean = numerator/denominator
posterior.var = 1/denominator
a <- "Posterior mean = "
b <- "Posterior variance = "
cat(“Sample size = ”, n, “\n”)
cat(“Sample mean = ”, sample.mean, “\n”)
cat(“Sample var = ”, sample.var, “\n”)
cat(“Prior mean = ”, prior.mean, “\n”)
cat(“Prior var = ”, prior.var, “\n”)
cat(a, posterior.mean, “\n”)
cat(b, posterior.var, “\n”)
}
Ví dụ 4. Mật độ chất khoáng trong xương (bone mineral density - bmd) trong
một quần thể thường phân phối theo luật phân phối chuẩn, với giá trị trung bình khoảng
1.0 g/cm2 và phương sai 0.0144 g/cm4. Giả dụ chúng ta đo mật độ xương của một nhóm
bệnh nhân như sau: 1.0, 1.5, 2.1, 1.7, 1.8, 0.9, 0.7. Chúng ta muốn biết giá
trị trung bình và phương sai của mẫu này sau khi “điều chỉnh” cho trung bình và phương
sai đã biết trước. Trước hết, chúng ta gọi nhóm số liệu này là bmd:
> bmd <- c(1.0, 1.5, 2.1, 1.7, 1.8, 0.9, 0.7)
và sau đó “gọi” hàm bayes như sau:
> bayes(bmd, 1.0, 0.0144)
Sample size = 7
Sample mean = 1.385714
Sample var = 0.2747619
Prior mean = 1
Prior var = 0.0144
Posterior mean = 1.103525
Posterior variance = 0.01053507
Trên đây chỉ là một vài hàng giới thiệu cách lập trình và viết hàm bằng ngôn ngữ
R. Trong thực tế, tất cả các hàm như survival, BMA, meta, Hmisc, v.v… đều được
phát triển bằng ngôn ngữ R. Bạn đọc có thể tham khảo tài liệu “Introduction to R” của
W. Venables và B. Ripley (phần cuối của sách) để biết thêm chi tiết kĩ thuật.
CHƯƠNG XVII
MỘT SỐ
LỆNH R THÔNG DỤNG
17
Phục lục 2
Một số lệnh thông dụng trong R
Lệnh về môi trường vận hành của R
getwd() Cho biết directory hiện hành là gì
setwd(c:/works) Chuyển directory vận hành về c:\works (chú ý R dùng “/”)
options(prompt=”R>”) Đổi prompt thành R>
options(width=100) Đổi chiều rộng cửa số R thành 100 characters
options(scipen=3) Đổi số thành 3 số thập phân (thay vì kiểu 1.2E-04)
options() Cho biết các thông số về môi trường hiện nay của R
Lệnh cơ bản
ls() Liệt kê các đối tượng (objects) trong bộ nhớ
rm(object) Xóa bỏ đối tượng
seach() Tìm hướng
Kí hiệu tính toán
+ Cộng
- Trừ
* Nhân
/ Chia
^ Lũy thừa
%/% Chia số nguyên
%% Số dư từ chia hai số nguyên
Kí hiệu logic
== Bằng
!= Không bằng
< Nhỏ hơn
> Lớn hơn
<= Nhỏ hơn hoặc bằng
>= Lớn hơn hoặc bằng
is.na(x) Có phải x là biến số missing
& Và (AND)
| Hoặc (OR)
! Không là (NOT)
Phát số
numeric(n) Cho ra n số 0
character(n) Cho ra n kí tự “”
logical(n) Cho ra n FALSE
seq(-4,3,0.5) Dãy số -4.0, -3.5, -3.0, …, 3.0
1:10 Giống như lệnh seq(1, 10, 1)
c(5,7,9,1) Nhập số 5, 7, 8 và 1
rep(1, 5) Cho ra 5 sô 1: 1, 1, 1, 1, 1.
Gl(3,2,12) Yếu tố 3 bậc, lặp lại 2 lần, tổng cộng 12 số:
1 1 2 2 3 3 1 1 2 2 3 3
Tạo nên số ngẫu nhiên bằng mô phỏng theo các luật phân phối
(simulation)
rnorm(n, mean=0, sd=1) Phân phối chuẩn (normal distribution) với trung
bình = 0 và độ lệch chuẩn = 1.
rexp(n, rate=1) Phân phối mũ (exponential distribution)
rgamma(n,shape,scale=1) Phân phối gamma
rpois(n, lambda) Phân phối Poisson
rweibull(n,shape,scale=1) Phân phối Weibull
rcauchy(n,location=0,scale=1) Phân phối Cauchy
rbeta(n, shape1, shape2) Phân phối beta
rt(n, df) Phân phối t
rchisq(n, df) Phân phối Chi bình phương
rbinom(n, size, prob) Phân phối nhị phân (binomial)
rgeom(n, prob) Phân phối geometric
rhyper(nn, m, n, k) hypergeometric
rlnorm(n,meanlog=0,sdlog=1) Phân phối log normal
rlogis(n,location=0,scale=1) Phân phối logistic
rnbinom(n,size,prob) Phân phối negative Binomial
runif(n,min=0,max=1) Phân phối uniform
Biến đổi số thành kí tự và ngược lại
as.numeric(x) Biến đổi x thành biến số số học để có thể tính toán
as.character(x) Biến đổi x thành biến số chữ (character) để phân loại
as.logical(x) Biến đổi x thành biến số logic
factor(x) Biến đổi x thành biến số yếu tố
Data frames
data.frame(x,y) Nhập x và y thành một data frame
tuan$age Chọn biến số age từ dataframe tuan.
attach(tuan) Đưa dataframe tuan vào hệ thống R
detach(tuan) Xóa bỏ dataframe tuan khỏi hệ thống R
Hàm số toán
log(x) Logarít bậc e
log10(x) Logarít bậc 10
exp(x) Số mũ
sin(x) Sin
cos(x) Cosin
tan(x) Tangent
asin(x) Arcsin (hàm sin đảo)
acos(x) Arccosin (hàm cosin đảo)
atan(x) Arctang(hàm tan đảo)
Hàm số thống kê
min(x) Số nhỏ nhất của biến số x
max(x) Số lớn nhất của biến số x
which.max(x) Tìm dòng nào có giá trị lớn nhất của biến số x
which.min(x) Tìm dòng nào có giá trị nhỏ nhất của biến số x
length(x) Tổng số yếu tố (elements) trong một biến số (hay số mẫu)
sum(x) Số tổng của biến số x
range(x) Khác biệt giữa max(x) và min(x)
mean(x) Số trung bình của biến số x
median(x) Số trung vị (median) của biến số x
sd(x) Độ lệch chuẩn (standard deviation) của biến số x
var(x) Phương sai (variance) của biến số x
cov(x,y) Hiệp biến (covariance) giữa hai biến số x và y
cor(x,y) Hệ số tương quan (coefficient of correlation) giữa biến số x và y.
quantile(x) Chỉ số của biến số x
cor(x,y) Hệ số tương quan (correlation coefficient) giữa biến số x và y
is.na(x) Kiểm tra xem x có phải là số trống không (missing value)
complete.cases(x1,x2,...)
Kiểm tra nếu tất cả x1, x2, … đều không có số trống.
Chỉ số ma trận
x[1] Số đầu tiên của biến số x
x[1:5] Năm số đầu tiên của biến số x
x[y<=30] Chọn x sao cho y nhỏ hơn hoặc bằng 30
x[sex==”male”] Chọn x sao cho sex bằng male
Nhập dữ liệu
data(name) Xây dựng một kho dữ liệu
read.table(“name”) Đọc / nhập số liệu từ file name
read.csv(“name”) Đọc / nhập số liệu dạng excel (cách nhau bằng “,”)
từ file name
read.delim(“name”) Đọc / nhập số liệu dạng tab delimited
read.delim2(“name”) Đọc / nhập số liệu dạng tab delimited, cách nhau bằng “;”
và số thập phân là “,”
read.csv2(“name”) Đọc / nhập số liệu dạng csv, cách nhau bằng “;”
và số thập phân là “,”
Phần phụ trong read.table
header=TRUE Hàng đầu tiên của dữ liệu là tên của biến số
sep=”,” Số liệu ngăn cách bằng dấu hiệu “,”
dec=”,” Số thập phân là “,” (để phân biệt với “.”)
na.strings=”.” Số liệu trống (missing value) là “.”
Phân phối thống kê
pnorm(x,mean,sd) Phân phối chuẩn
plnorm(x,mean,sd) Phân phối chuẩn logarit
pt(x,df) Phân phối t
pf(x,n1,n2) Phân phối F
pchisq(x,df) Phân phối Chi bình phương
ppois(x,lambda) Phân phối Poisson
punif(x,min,max) Phân phối uniform (đồng dạng)
pexp(x,rate) Phân phối hàm mũ
pgamma(x,shape,scale) Phân phối gamma
pbeta(x,a,b) Phân phối beta
Phân tích thống kê
t.test Kiểm định t
pairwise.t.test Kiểm định t cho paired design
cor.test Kiểm định hệ số tương quan
method = “kendall”
method = “spearman”
var.test Kiểm định phương sai
bartlett.test Kiểm định nhiều phương sai
wilcoxon.test Kiểm định Wilcoxon
kruskal.test Kiểm định Kruskal
friedman.test Kiểm định Friedman
lm(y ~ x) Phân tích hồi qui tuyến tính (linear regression)
lm(y ~ factor) Phân tích phương sai 1 chiều (1-way analysis of variance)
lm(y ~ factor+x) Phân tích hiệp biến (analysis of covariance)
lm(y ~ x1+x2+x3) Phân tích hồi qui tuyến tính đa biến số
(multiple linear regression)
binom.test Kiểm định nhị phân (Binomial test)
prop.test Kiểm định so sánh nhiều tỉ số
prop.trend.test Kiểm định so sánh nhiều tỉ số theo xu hướng
fisher.test Kiểm định Fisher
chisq.test Kiểm định Chi bình phương
glm(y~x1+x2+x+x3) Phân tích hồi qui logistic
s<-Surv(time,event) Phân tích survival
survfit(s) Biểu đồ Kaplan-Meier
survdiff(s~g) Kiểm định Log-rank giữa hai nhóm g
coxph(s ~ x`+x2) Phân tích hồi qui Cox
Đồ thị
plot(y~x) Vẽ đồ thị y và x (scatter plot)
hist(x) Vẽ đồ thị y và x (scatter plot)
plot(y ~ x | z) Vẽ hai biểu đồ x và y theo từng nhóm của z
pie(x) Vẽ đồ thị tròn
boxplot(x) Vẽ đồ thị theo dạng hình hộp
qqnorm(x) Vẽ phân phối quantile của biến số x
qqplot(x, y) Vẽ phân phối quantile của biến số y theo x
barplot(x) Vẽ biểu đồ hình khối cho biến số x
hist(x) Vẽ histogram cho biến số x
stars(x) Vẽ biểu đồ sao cho biến số x
abline(a, b) Vẽ đường thẳng với intercept=a và slope=b
abline(h=y) Vẽ đường thẳng ngang
abline(v=x) Vẽ đường thẳng đứng
abline(lm.object) Vẽ đồ thị theo mô hình tuyến tính
Một số thông số cho đồ thị
pch Kí hiệu để vẽ đồ thị (pch = plotting characters)
mfrow, mfcol Tạo ra nhiều cửa sổ để vẽ nhiều đồ thị cùng một lúc (multiframe)
xlim, ylim Cho giới hạn của trục hoành và trục tung
xlab, ylab Viết tên trục hoành và trục tung
lty, lwd Dạng và kích thước của đường biểu diễn
cex, mex Kích thước và khoảng cách giữa các kí tự.
col Màu sắc
CHƯƠNG XVIII
THUẬT NGỮ
18
Phục lục 3
Thuật ngữ dùng trong sách
Tiếng Anh Tiếng Việt
95% confidence interval Khoảng tin cậy 95%
Akaike Information criterion (AIC) Tiêu chuẩn thông tin Akaike
Analysis of covariance Phân tích hiệp biến
Analysis of variance (ANOVA) Phân tích phương sai
Bar chart Biểu đồ thanh
Binomial distribution Phân phối nhị phân
Box plot Biểu đồ hình hộp
Categorical variable Biến thứ bậc
Clock chart Biểu đồ đồng hồ
Coefficient of correlation Hệ số tương quan
Coefficient of determination Hệ số xác định bội
Coefficient of heterogeneity Hệ số bất đồng nhất
Combination Tổ hợp
Continuous variable Biến liên tục
Correlation Tương quan
Covariance Hợp biến
Cross-over experiment Thí nghiệm giao chéo
Cumulative probability distribution Hàm phân phối tích lũy
Degree of freedom Bậc tự do
Determinant Định thức
Discrete variable Biến rời rạc
Dot chart Biểu đồ điểm
Estimate Ước số
Estimator Hàm ước lượng thống kê
Factorial analysis of variance Phân tích phương sai cho thí nghiệm giai thừa
Fixed effects Ảnh hưởng bất biến
Frequency Tần số
Function Hàm
Heterogeneity Bất đồng nhất
Histogram Biểu đồ tần số
Homogeneity Đồng nhất
Hypothesis test Kiểm định giả thiết
Inverse matrix Ma trận nghịch đảo
Latin square experiment Thí nghiệm hình vuông Latin
Least squares method Phương pháp bình phương nhỏ nhất
Linear Logistic regression analysis Phân tích hồi qui tuyến tính logistic
Linear regression analysis Phân tích hồi qui tuyến tính
Matrix Ma trận
Maximum likelihood method Phương pháp hợp lí cực đại
Mean Số trung bình
Median Số trung vị
Meta-analysis Phân tích tổng hợp
Missing value Giá trị không
Model Mô hình
Multiple linear regression analysis Phân tích hồi qui tuyến tính đa biến
Normal distribution Phân phối chuẩn
Object Đối tượng
Parameter Thông số
Permutation Hoán vị
Pie chart Biểu đồ hình tròn
Poisson distribution Phân phối Poisson
Polynomial regression Hồi qui đa thức
Probability Xác suất
Probability density distribution Hàm mật độ xác suất
P-value Trị số P
Quantile Hàm định bậc
Random effects Ảnh hưởng ngẫu nhiên
Random variable Biến ngẫu nhiên
Relative risk Tỉ số nguy cơ tương đối
Repeated measure experiment Thí nghiệm tái đo lường
Residual Phần dư
Residual mean square Trung bình bình phương phần dư
Residual sum of squares Tổng bình phương phần dư
Scalar matrix Ma trận vô hướng
Scatter plot Biểu đồ tán xạ
Significance Có ý nghĩa thống kê
Simulation Mô phỏng
Standard deviation Độ lệch chuẩn
Standard error Sai số chuẩn
Standardized normal distribution Phân phối chuẩn chuẩn hóa
Survival analysis Phân tích biến cố
Traposed matrix Ma trận chuyển vị
Variable Biến (biến số)
Variance Phương sai
Weight Trọng số
Weighted mean Trung bình trọng số
CHƯƠNG XIX
TÀI LIỆU THAM KHẢO
VÀ
SÁCH ĐỌC THÊM
19
Lời bạt
(tài liệu tham khảo và đọc thêm)
Qua 15 chương sách và 3 phụ lục bạn đọc đã cùng tôi đi một hành trình khá dài
trong phân tích thống kê và biểu đồ. Thiết tưởng trước khi “chia tay” bạn đọc, tôi cũng
nên có đôi lời tạm biệt.
Kinh nghiệm giảng dạy và nghiên cứu cá nhân cho thấy phần lớn sinh viên khi
tiếp cận với khoa học thống kê lần đầu là một kinh nghiệm chẳng mấy gì hào hứng, nếu
không muốn nói là khó khăn, chỉ vì sách giáo khoa soạn cho môn học này rất xa rời thực
tế, hay có khi dính dáng đến thực tế nhưng với những ví dụ vô bổ, nhạt nhẽo. Những
khái niệm trừu tượng, những công thức rắc rối, những phép tính phức tạp và rườm rà làm
cho người học cảm thấy chao đảo và từ đó cảm thấy thiếu hứng thú theo đuổi môn học.
Thật vậy, có khi đọc sách giáo khoa, đọc các bài báo nghiên cứu khoa học, chúng ta bắt
gặp những phương pháp hay và những mô hình thích hợp cho nghiên cứu của chính
mình, nhưng không biết làm sao tính toán các mô hình đó. Trong cuốn sách này, tôi
muốn cung cấp cho bạn đọc một phương tiện phân tích thực tế để lấp vào cái khoảng
trống phương pháp đó.
Học phải đi đôi với hành. Cách học về phương pháp hay nhất, theo tôi, là [nói
một cách nôm na] … bắt chước. R cung cấp cho bạn đọc cách học mô phỏng đó rất ư là
tiện lợi. Trong khi đọc những chương sách này cùng với những ví dụ, bạn đọc có thể gõ
những lệnh vào máy tính và xem kết quả có nhất quán với những gì mình đọc hay không.
Sau khi đã biết được cách sử dụng một hàm hay một lệnh nào đó, bạn đọc có thể thêm
vào (hay bớt ra) những thông số của hàm để xem kết quả ra sao. Chỉ có học như thế thì
bạn đọc mới nắm vững được các khái niệm và cách sử dụng R.
Chúng ta học từ sai sót. Trong sách này, tôi muốn bạn đọc đi một quãng đường
khá … gập ghềnh, tức là bạn đọc phải tương tác với máy tính bằng những lệnh của R.
Trong quá trình tương tác đó, có thể một số lệnh sẽ không chạy, vì gõ sai tên biến số hay
sai chính tả, vì không để ý đến kí tự viết hoa và viết thường, vì số liệu không đầy đủ hay
sai sót, v.v… Tất cả những lần sai sót đó sẽ làm cho bạn đọc rút ra kinh nghiệm và trở
nên thuần thạo hơn. Đó là cách học mà người Anh hay gọi là “trial and error”, học từ sai
lầm và thử nghiệm.
Một công trình phân tích số liệu cần nhiều lệnh và hàm R. Tuy nhiên, vì tính
tương tác mà bạn đọc theo dõi, các lệnh này sẽ biến mất khi ngưng R. Vấn đề đặt ra là
có cách nào lưu trữ các lệnh này trong một hồ sơ để sau này sử dụng lại. Phần mềm cực
kì có ích cho mục đích này là Tinn-R (cũng có thể tải xuống và cài đặt vào máy hoàn
toàn miễn phí). Website để tải Tinn-R và tài liệu sử dụng là:
Tinn-R thực chất là một editor cho R (và nhiều phần mềm khác). Tinn-R cho
phép chúng ta lưu trữ tất cả các lệnh cho một công trình phân tích trong một hồ sơ. Với
Tinn-R, chúng ta có sẵn một chỉ dẫn trực tuyến về cách sử dụng các lệnh hay hàm trong
R. Trong khi lệnh gõ sai “văn phạm” R, Tinn-R sẽ báo ngay và đề nghị cách sửa! Giao
diện Tinn-R có thể giống như sau:
Chẳng hạn như trong giao diện trên, khi chúng ta gõ read.table( thì một chỉ
dẫn ngay phía dưới hiện ra, với tất cả thông số của hàm read.table. Với Tinn-R
chúng ta ít khi phạm phải những sai sót nhỏ trong khi chạy R. Sau khi đã xong một số
lệnh, chúng ta có thể dùng chuột để tô đậm (highlight) những lệnh cần chạy và gửi sang
R. Chú ý chúng ta không cần phải rời Tinn-R trong khi R chạy.
Đến đây, có lẽ bạn đọc sẽ hỏi: có cách nào sử dụng R dễ dàng hơn mà không cần
phải gõ các lệnh? Câu trả lời là … có. Tại sao tôi không giới thiệu trước, ngay từ
chương đầu? Tại vì tôi muốn bạn đọc đi con đường khó trước khi đi con đường dễ, nên
đến bây giờ mới nói đến một phần mềm phụ khác có khả năng giúp cho bạn đọc sử dụng
R một cách nhanh chóng hơn, dễ dàng hơn, và tiện lợi hơn bằng chuột thay vì bằng bàn
phím.
Phần mềm để “tự động hóa” R có tên là Rcmdr (viết tắt từ R commander).
Trong thực tế, Rcmdr là một package, mà bạn đọc có thể tải từ website chính thức của R
( hay website của tác giả
của Rcmdr sau đây: Chú ý, khi
Rcmdr vận hành tốt khi có những package sau đây trong máy: relimp, multcomp,
lmtest, effects, car, và abind. Nếu chưa có những package này, bạn đọc
nên tải chúng về máy. Tài liệu chỉ dẫn Rmdr cũng có thể tải từ website
project.org/doc/packages/Rcmdr.pdf.
Khi đã tải Rcmdr xuống và cài đặt vào máy tính, bạn đọc chỉ đơn giản lệnh:
library(Rcmdr), và một giao diện như sau sẽ xuất hiện. Với phần “menu” (như
File, Edit, Data, Statistics, Graphs, Models, Distribution,
Tool, Help) bạn đọc có thể tự mình khám phá cách vận hành của Rcmdr bằng chuột.
Về nội dung lần in thứ nhất này, tôi không có ý định bàn về những mô hình phân
tích đa biến (multivariate analysis model) như phân tích yếu tố (factor analysis), phân
tích tập hợp (cluster analysis), phân tích tương quan đa biến (correspondence analysis),
phân tích phương sai đa biến (multivariate analysis of variance), v.v… vì đây là những
phương pháp tương đối cao cấp, đòi hỏi người sử dụng phải thông thạo chẳng những về lí
thuyết thống kê, mà còn phải hiểu rất rõ những phương pháp phân tích căn bản như trình
bày trong sách này. Tuy nhiên, bạn đọc có nhu cầu cho các phương pháp phân tích này
cũng có thể tìm hiểu trong trang web của R để biết thêm các package chuyên dụng cho
phân tích đa biến.
Tài liệu tham khảo
Hiện nay, thư viện sách về R còn tương đối khiêm tốn so với thư viện cho các
phần mềm thương mại như SAS và SPSS. Tuy nhiên, trong thời đại tiến bộ phi thường
về thông tin internet và toàn cầu hóa như hiện nay, sách in và sách xuất bản trên website
không còn là những khác nhau bao xa. Phần lớn chỉ dẫn về cách sử dụng R có thể tìm
thấy rải rác đây đó trên các website từ các trường đại học và website cá nhân trên khắp
thế giới. Trong phần này tôi chỉ liệt kê một số sách mà bạn đọc, nếu cần tham khảo
thêm, nên tìm đọc. Trong quá trình viết cuốn sách mà bạn đọc đang cầm trên tay, tôi
cũng tham khảo một số sách và trang web mà tôi sẽ liệt kê sau đây với vài lời nhận xét cá
nhân.
Tài liệu tham khảo chính về R là bài báo của hai người sáng tạo ra R: Ihaka R,
Gentleman R. R: A language for data analysis and graphics. Journal of Computational
and Graphical Statistics 1996; 5:299-314.
18.1 Sách tham khảo về R
• “Data Analysis and Graphics Using R – An Example Approach” (Nhà xuất bản
Cambridge University Press, 2003) của John Maindonald nay đã xuất in lại lần thứ
2 với thêm một tác giả mới John Braun. Đây là cuốn sách rất có ích cho những ai
muốn tìm hiểu và học về R. Năm chương đầu của sách viết cho bạn đọc chưa từng
biết về R, còn các chương sau thì viết cho các bạn đọc đã biết cách sử dụng R thành
thạo.
• “Introductory Statistics With R” (Nhà xuất bản Springer, 2004) của Peter
Dalgaard là một cuốn sách loại căn bản cho R nhắm vào bạn đọc chưa biết gì về R.
Sách tương đối ngắn (chỉ khoảng 200 trang) nhưng khá đắt giá!
• “Linear Models with R” (Nhà xuất bản Chapman & Hall/CRC, 2004) của Julian
Faraway. Sách hiện có thể tải từ internet xuống miễn phí tại website sau đây:
hay
project.org/doc/contrib/Faraway-PRA.pdf. Tài liệu dài 213 trang.
• “R Graphics (Computer Science and Data Analysis)” (Nhà xuất bản Chapman &
Hall/CRC, 2005) của Paul Murrell. Đây là cuốn sách chuyên về phân tích biểu đồ
bằng R. Sách có rất nhiều mã để bạn đọc có thể tự mình thiết kế các biểu đồ phức
tạp và … màu mè.
• “Modern Applied Statistics with S-Plus” (Nhà xuất bản Springer, 4th Edition,
2003) của W. N. Venables và B. D. Ripley được viết cho ngôn ngữ S-Plus nhưng
tất cả các lệnh và mã trong sách này đều có thể áp dụng cho R mà không cần thay
đổi. (S-Plus là tiền thân của R, nhưng S-Plus là một phần mềm thương mại, còn R
thì hoàn toàn miễn phí!) Đây là cuốn sách có thể nói là cuốn sách tham khảo cho
tất cả ai muốn phát triển thêm về R. Hai tác giả cũng là những chuyên gia có thẩm
quyền về ngôn ngữ R. Sách dành cho bạn đọc với trình độ cao về máy tính và
thống kê học.
18.2 Các website quan trọng hay có ích về R
• Rất nhiều tài liệu tham khảo có thể tải từ website chính thức của R sau đây:
Trong đó có một số tài liệu quan trọng như “An Introduction to R” của W. N.
Venables và B. D. Ripley.
Địa chỉ internet:
• Vài tài liệu hướng dẫn cách sử dụng R có thể tải (miễn phí) và tham khảo như sau:
“R for Beginners” (57 trang) của Emmanuel Paradis. Tài liệu được soạn cho bạn
đọc mới làm quen với R.
Địa chỉ internet:
“Using R for Data Analysis and Graphics: Introduction, Code and Commentary”
(35 trang) của John Maindonald là một tóm lược các lệnh và hàm căn bản của R
cho phân tích số liệu và biểu đồ. Chủ đề của tài liệu này rất gần với cuốn sách mà
bạn đang đọc.
Địa chỉ internet:
“Statistical Analysis with R – a quick start” (46 trang) của Oleg Nenadic và
Walter Zucchini. Web. Tài liệu hướng dẫn cách ứng dụng R cho phân tích thống
kê và biểu đồ.
Địa chỉ internet:
“A Brief Guide to R for Beginners in Econometrics” (31 trang) của M. Arai. Tài
liệu chủ yếu soạn cho giới phân tích thống kê kinh tế.
Địa chỉ internet:
“Notes on the use of R for psychology experiments and questionnaires” (39
trag) của Jonathan Baron và Yuelin Li. Web. Tài liệu được soạn cho giới nghiên
cứu tâm lí học và xã hội học. Có ví dụ về log-linear model và một số mô hình phân
tích phương sai trong tâm lí học.
Địa chỉ internet:
• StatsRus gồm một sưu tập về các mẹo để sử dụng R hữu hiệu hơn (dài khoảng 80
trang). Địa chỉ internet:
• Và sau cùng là một tải liệu “Hướng dẫn sử dụng R cho phân tích số liệu và biểu
đồ” (khoảng 50 trang – thường xuyên cập nhật hóa) do chính tôi viết bằng tiếng
Việt. Website: www.R.ykhoa.net thực chất là tóm lược một số chương chính của
cuốn sách này. Trang web này còn có tất cả các dữ liệu (datasets) và các mã sử
trong trong sách để bạn đọc có thể tải xuống máy tính cá nhân để sử dụng.
Các file đính kèm theo tài liệu này:
- R_NVTuan.pdf