Việc tạo file dữ liệu được thực hiện trên Excel. Trong khuôn khổ bài này thì t viết dựa trên thí nghiệm khối hoàn toàn ngẫu nhiên một yếu tố.
Figure 1
Nhìn Figure 1 thì m thấy là, cột đầu tiên là block đại diện cho lần lặp lại, cột thứ hai là mainplot đại diện cho nghiệm thức của m. Trong trường hợp thực hiện những thí nghiệm 2 yếu tố thì sẽ có thêm cột subplot để đại diện cho yếu tố thứ 2. M có thể đặt tên khác cho hai cột này, tuy nhiên, đồng nghĩa là m cũng phải thay đổi tên trong code chạy dữ liệu. Cho nên t k khuyến khích thay tên 2 cột này.
Từ cột tứ 3 trở đi là tên của các chỉ tiêu. Tất cả các chỉ tiêu của tất cả các ngày, từ khi bắt đầu đến khi kết thúc thí nghiệm đều được ghi chung một file, không phải tách riêng ra. Quy tắc đặt tên cho các chỉ tiêu đó: không có dấu, không có khoảng trắng, không bắt đầu bằng số, phân biệt chữ hoa và chữ thường.
Thông thường, khi đo chỉ tiêu, m sẽ đo 5 cây cho một nghiệm thức. Tuy nhiên, như m nhìn thấy trong Figure 1, dữ liệu không được ghi theo cây mà ghi theo nghiệm thức. Số liệu ở đây thực chất chính là trung bình 5 cây chỉ tiêu của m. Khi độ số liệu, m độ thẳng số trung bình luôn chứ không độ từng cây.
Figure 2
Việc độ số liệu sẽ dựa trên số liệu thực tế mà m thu thập được. Các bước sẽ được tiến hành như sau:
Hình 4 là một ví dụ thực tế việc độ số liệu cho một chỉ tiêu. Ở đây, giả sử t độ chỉ tiêu cho chiều cao cây 10 NST (tên biến t đặt là ccc10):
Từ số liệu thực tế, t tính được ra trung bình chiều cao cây 10 NST của tất cả các cây và nghiệm thức là 8 cm, t hoàn thành bước 1.
Sang bước 2, t xác định chiều biến thiên của các ô thí nghiệm (cũng tức là lần lặp lại). Ở bước 2 m có thể hiểu như sau: giả sử m làm thí nghiệm trong nhà màng. Điều kiện đặc thù của nhà màng sẽ không đồng đều khiến cho sẽ có những chỗ có nhiều ánh sáng, nhiều nước hơn, khiến cho cây phát triển tốt hơn những chỗ khác (khác biệt này không phải tạo nên từ nghiệm thức đang thí nghiệm). Ví dụ, block 1 có trung bình chiều cao cây thấp nhất, block 2 cao hơn block 1 và block 3 cao hơn block 2. Chiều biến thiên này sẽ thống nhất xuyên suốt trong toàn bộ quá trình làm thí nghiệm. Giả sử m nghĩ rằng nhà màng của m đồng đều về mặt môi trường bên ngoài, m có thể không cần làm thêm bước 2 này mà chuyển thẳng sang bước 3. Hoặc cũng có thể m k cần làm theo biến thiên đều như vậy mà m cho block 2 lớn nhất, rồi đến block 1 và block 3 là nhỏ nhất. Nói chung là tùy. Điều duy nhất m cần đảm bảo cho t đó là, khi ở bước 2 thì tất cả các nghiệm thức trong cùng một lần lặp lại phải giống nhau, sang bước 3 thì mới độ tiếp.
Ở bước 3, t sẽ độ từng nghiệm thức cho từng lần lặp lại. Trước tiên, t phải xác định được, khác biệt có ý nghĩa hay không. Nếu khác biệt có ý nghĩa thì nghiệm thức nào cao nhất, khác biệt có ý nghĩa so với nghiệm thức nào. Trong ví dụ ở Figure 2, t xác định chiều cao cây giữa các nghiệm thức sẽ khác biệt có ý nghĩa, và nghiệm thức 4 là nghiệm thức có giá trị cao nhất. Nghiệm thức 1 và 2 sẽ luôn khác biệt so với nghiệm thức 4, tuy nhiên nghiệm thức 1 và 2 sẽ không nhất thiết phải khác biệt với nhau. Hay nói cách khác, NT1 và NT2 sẽ độ số sao cho xêm xêm nhau hoặc có thể là cách biệt nhau tùy ý m. NT5 và NT6 sẽ nhỏ hơn hoặc không khác biệt so với NT4, tùy ý. Điểm cần chú ý là m đừng độ số một cách quá thống nhất giữa các thời điểm đo chỉ tiêu. Như vậy thì thầy cô chú ý, bảo m độ số. Sau khi độ xong cho LLL1 thì m tiếp tục độ cho LLL2 và LLL3.
Cuối cùng là đưa dữ liệu vào R để chạy thử xem kết quả có được như m mong muốn hay không.
Từ bước này trở đi t sẽ sử dụng RStudio để chạy code. R Project là một tính năng không nhất thiết phải sử dụng nếu muốn xử lí dữ liệu. Tuy nhiên, như t vẫn nói, t thích đi máy bay chứ t không thích đi bộ.
Xem cách tạo một R Project tại đây
Thông thường, m có thể đặt project ở bất kì vị trí nào trong máy tính. Tuy nhiên, t vẫn khuyên m nên tạo một folder đặt tên là R Project rồi để tất cả các project liên quan đến R mà m thực hiện vào folder này.
Chú ý: không được đặt các file liên quan đến R vào Dropbox hay Onedrive. Sau khi đã hoàn thành việc chạy dữ liệu, m có thể lưu trữ những file code R vào Dropbox hay Onedrive nhưng khi còn đang trong quá trình chạy dữ liệu thì tuyệt đối né hai thằng kể trên ra.
Ưu điểm lớn nhất khi sử dụng Project đó là việc tất cả những file dữ liệu, code và kết quả xuất ra đều nằm trong một địa chỉ. Sau khi tạo được một R Project, việc tiếp theo cần làm đó là tổ chức một project sao cho dễ dàng cho việc theo dõi các file dữ liệu, code và kết quả. M có thể xem cách tổ chức một project tại đây.
Mỗi loại thí nghiệm sẽ sử dụng code khác nhau. M có thể download code về máy tính tại đây.
RCD1, RCD2: thí nghiệm hoàn toàn ngẫu nhiên 1 & 2 yếu tố
RCBD1, RCBD2: thí nghiệm khối hoàn toàn ngẫu nhiên 1 & 2 yếu tố
SplitPlot: thí nghiệm lô chính lô phụ
Bên dưới đây là code sử dụng cho thí nghiệm RCBD1
## install required packages
#packages <- c("agricolae", "dplyr", "readxl")
#install.packages(setdiff(packages, rownames(installed.packages())))
## load required packages
library(agricolae)
library(dplyr)
library(readxl)
## data import
finish.dt <- read_xlsx("data/data.xlsx", sheet = 1)
## result export
RCBD1 <- function(response, output) {
aov <- with(finish.dt,aov(response ~ LLL + mainplot))
## run LSD test
lsd <- LSD.test(aov, c("mainplot"), p.adj = "bonferroni")
## anova output export
cat(paste(output,"ANOVA",sep = " "), file = paste0('output/cv/', output ,'anova.txt'))
capture.output(print(summary(aov)), file = paste0('output/cv/', output ,'anova.txt'), append = TRUE)
capture.output(print(lsd), file = paste0('output/cv/', output ,'anova.txt'), append = TRUE)
summary(aov)
print(lsd)
}
## Use "names" function to get the column names
out1 <- names(finish.dt[,6]) ## TH1: dùng khi độ số liệu và muốn chạy dữ liệu cho một chỉ tiêu
out2 <- names(finish.dt[,-(1:2)]) ## TH2: chạy toàn bộ các chỉ tiêu
mapply(RCBD1, finish.dt[,6], out1) ## Nếu là TH1 thì chạy dòng này
mapply(RCBD1, finish.dt[,-(1:2)], out2) ## Nếu là TH2 thì chạy dòng này
Dòng thứ 2 và 3 là code được sử dụng để cài package. Nếu m chưa có các package cần có thì xóa dấu # ở đầu dòng đi và chạy code. Package chỉ cần cài một lần là xài được cho nên sau khi xài xong thì hoặc là thêm dấu # vào, hoặc là xóa luôn 2 dòng ấy đi.
Những chỗ có màu đỏ nhạt và màu xanh dương là những chỗ m sẽ thay đổi cho phù hợp với tên file dữ liệu (dòng 12), vị trí cột của chỉ tiêu đang thực hiện (dòng 38 và 45).
Sử dụng file dữ liệu vừa được độ trong ví dụ ở Figure 2 (cột ccc10 ở vị trí cột thứ 6), ta sẽ có kết quả như sau:
Figure 3
Kết quả này sẽ được xuất ra màn hình console (ô chữ nhật ở góc trái bên dưới) và đồng thời được xuất ra bên ngoài trong folder CV của folder output. Do đó, trước tiên m phải tạo một folder tên là CV (CV viết in hoa) bên trong folder output. Nếu không thực hiện thao tác này thì dữ liệu sẽ không được xuất ra bên ngoài.
Lưu ý: Mỗi lần m chạy dữ liệu, R sẽ ghi đè kết quả mới lên kết quả cũ. Do đó, nếu m độ được một bộ số thấy ổn rồi thì đem cái file kết quả ra một chỗ khác để. Sau đó mới được độ số liệu mới rồi chạy kết quả khác, nếu không là nó ghi đè kết quả cũ là mất luôn.
Các tiêu chí để đánh giá kết quả có thành công hay không:
Khác biệt có ý nghĩa (hoặc không có ý nghĩa) tùy mục đích
Trắc nghiệm phân hạng ra kết quả đúng mục đích
Không cần quan tâm đến có bao nhiêu sao hay CV lớn hay nhỏ. Mấy cái đó mình tự sửa bằng tay cho nhanh.
Phụ lục thống kê được làm khi m đã độ xong hết số liệu cho các chỉ tiêu.
Download code để tạo phụ lục thống kê tại đây
*: 0.05 > Pr > 0.01
**: 0.01 > Pr > 0.001
***: Pr < 0.001
Nên tạo một file excel khác, độ được chỉ tiêu nào là paste qua đó liền. Để lỡ có chỉnh lung tung mất số độ lại là ẻ luôn.
Khi nhập số trong file excel, cần chú ý loại dữ liệu phải là number. Đã có trường hợp dữ liệu nó ở dạng custom thế là chạy hoài không ra.
Trước khi bắt đầu chạy dữ liệu thì nhớ phải xóa các object cũ đi (Figure 4), bằng cách nhấn vào biểu tượng cái chổi ở trong khung Environment.
Figure 4
Đừng ra Thanh Trúc photo tài liệu :))))
Ra tiệm Hoa Hồng trên đường Tám Gian để in khóa luận nộp